缩略图

基于UDP 与 FFmpeg 的高可靠低延迟视频传输系统研究

作者

尚超

中车株洲电力机车研究所有限公司 湖南省株洲市 412000

引言:在当下的数字时代,视频应用已深入生活和工作的方方面面,像视频开会、线上学习、远程看病、实时查看监控等场景都离不开它;这些场景对视频传输的即时性和稳定性有着极高要求。以往基于 TCP 的视频传输方式,虽然能保证数据完整送达,但因为有数据重传机制,会产生较大延迟,很难满足对即时性要求高的场景。而 UDP(User Datagram Protocol,用户数据报协议)作为无连接的传输协议,具备传输速度快、延迟小的优势,特别适合实时视频传输;FFmpeg 是一套强大的开源音视频处理工具,能完成视频编码、解码、封装、解封装等多种操作。将 UDP 与 FFmpeg 结合起来,搭建高稳定、低延迟的视频传输系统,无论是在研究层面还是实际应用中,都有着重要价值。

一、UDP 协议与 FFmpeg 概述

(一)UDP 协议特点

UDP 是一种简单的面向数据报的传输层协议,和 TCP 相比,它没有建立连接、维护连接状态以及重传机制等复杂操作。在视频传输中,UDP 的主要优势体现在这些方面:首先,无连接的特性让数据能直接发送,减少了连接建立和拆除的时间花费,进而降低了传输延迟;其次,UDP 不会进行数据重传,避免了因为重传而导致的延迟增加,这对实时性要求高的视频流传输特别合适。不过,UDP 的缺点也很突出,因为缺少可靠的传输保障机制,当网络环境不稳定时,容易出现数据包丢失、顺序混乱等问题,进而影响视频播放的质量[1]。

(二)FFmpeg 框架功能

FFmpeg 是一个包含多个库和工具的开源项目,覆盖了音视频处理的各个环节。在视频传输系统中,FFmpeg 主要有以下重要功能:其一,视频编码与解码功能,它支持很多常见的视频编码格式,像 H.264、H.265 等,能够把原始视频数据编码成适合在网络上传输的格式,在接收端再进行解码操作来还原视频;其二,视频的封装与解封装功能,可以将编码后的视频数据和音频数据等按照特定格式进行封装,方便在网络中传输,同时在接收端进行解封装处理;其三,FFmpeg 还提供了丰富的滤镜功能,能够对视频进行多种处理,例如裁剪、缩放、添加字幕等,以此满足不同应用场景的实际需求。

二、基于UDP 与FFmpeg 的视频传输系统设计

(一)系统架构

基于UDP 与FFmpeg 的高可靠低延迟视频传输系统,主要由视频采集端、发送端、网络传输部分、接收端和解码播放端构成。在视频采集端,借助摄像头等设备获取原始视频数据;发送端运用FFmpeg 对采集到的视频数据进行编码和打包处理,再通过 UDP 协议把数据发送到网络里;网络传输部分负责将数据从发送端传送到接收端,这个过程中可能会出现数据包丢失、传输延迟等状况;接收端接收 UDP 数据包后,对数据进行拆包和解码,并开展错误检测等操作;最后,解码播放端利用FFmpeg 对接收的数据进行解码,从而实现视频播放[2]。

(二)关键技术实现

1. 视频编码优化

为了实现低延迟传输,在视频编码阶段,挑选合适的编码参数十分关键。比如,缩短I 帧(关键帧)的间隔,能够减少视频编码的延迟;同时,合理调整编码的码率,在保证视频质量的前提下,尽量降低数据量,以此减轻网络传输的压力。在借助 FFmpeg 进行 H.264 编码时,可以通过设置参数如presetultrafast 来提升编码速度,进而减少延迟。

2.UDP 传输优化

为应对 UDP 传输过程中视频数据包可能丢失的状况,采用前向纠错(FEC,ForwardErrorCorrection)技术。在发送阶段,依据特定算法对原始视频数据包进行处理,生成额外的备用数据包,再将其与原始数据包一同发送出去。到了接收阶段,一旦发现存在数据包缺失,便能借助这些备用数据包来还原丢失的数据,以此增强传输的稳定性。此外,为处理数据包到达顺序错乱的问题,可在每个数据包中添加编号,接收端按照编号对数据包重新整理排序。

3. 缓冲区管理

在发送端和接收端都得设置合适的缓冲区。发送端的缓冲区用来暂时存放编码后的视频数据,等着发送出去。缓冲区大小的设置得合理,要是太大,可能会让传输时的延迟变长;要是太小,又可能导致数据没办法及时发送出去。接收端的缓冲区用于存储接收到的数据包,在对这些数据包进行解封装和解码之前,要先对它们进行缓存和处理。通过灵活调整缓冲区的大小,能够适应网络带宽的变化,进而减少数据丢失的情况以及延迟带来的抖动问题[3]。

三、实验与结果分析

(一)实验环境

在搭建实验环境时,硬件选用两台高性能计算机,一台负责视频发送,另一台负责视频接收。这两台计算机均配备 IntelCorei7 处理器、16GB 内存以及千兆网卡。网络采用局域网连接,带宽可达 1000Mbps。软件方面,采用 FFmpeg4.4 版本处理音视频数据,编程语言选用 C++ ,并通过 socket 编程实现UDP 数据传输。

(二)实验设计

开展不同网络状况下的视频传送实验。首先,在网络信号平稳、流畅的状态下,传送一段清晰度为 1920×1080 、时长 10 分钟的视频,记录下视频传送的等待时间,以及播放时每秒的画面数量、画面清晰程度等情况;接着,人为制造网络堵塞、数据丢失等状况,再次进行视频传送实验,对比不同优化方法下系统的运行效果。

(三)实验结果

在网络状况良好时,运用本文所提的优化办法,视频传输的平均延迟大概是 100 毫秒,视频帧率稳定在每秒 30 帧,视频播放十分顺畅,没有明显的卡顿和丢帧情况。而在模拟网络拥堵、丢包率达到 10% 的状况下,借助前向纠错技术和缓冲区管理优化,视频传输的平均延迟增加到约150 毫秒,视频帧率稍有降低,但依然能维持在每秒25 帧以上,视频画质虽有所下降,不过仍然可以正常观看。实验结果显示,基于 UDP 与 FFmpeg 的视频传输系统,在采用相应的优化策略之后,能够在一定程度上实现高可靠且低延迟的视频传输。

结论:本论文围绕基于UDP 与FFmpeg 的高可靠低延迟视频传输系统展开研究,通过剖析 UDP 协议与 FFmpeg 的特性设计系统架构,并给出一系列关键技术实现方案;实验证实该系统可在一定程度上满足实时视频传输低延迟与高可靠需求,但在复杂网络环境下性能仍有提升空间;未来研究可从进一步优化前向纠错算法以提高数据恢复效率和准确性、探索更有效的网络自适应机制来根据网络状况动态调整视频编码参数和传输策略,以及结合人工智能技术对视频数据进行智能处理和优化等方向入手,实现更高质量的视频传输。

参考文献:

[1] 张跃 , 田磊 , 杨孟 , 等 . 一种车辆远程驾驶视频传输方法及系统 :CN202310505634.1.

[2] 马军 . 全高清视频压缩 , 存储与转发系统设计与实现 [D]. 太原 : 中北大学 ,2021(3):32-33.

[3] 陈天辉 , 佘永涛 , 裘昊 , 等 . 一种跨网络边界的实时流传输方法 :CN202010515864.2.

作者简介:尚超(1996.1—),男,汉族,河北保定人,本科,助理工程师,研究方向:视频编解码、流媒体传输