我正在研究网络丢失对视频传输的影响。为了模拟网络丢失,我使用了一个简单的程序,它从 H.264 RTP 编码的输出中丢弃随机 RTP 数据包。
我使用联合模型 (JM) 14.2 来编码视频。但是,我没有使用 AnnexB 格式作为输出,而是选择输出为 RTP 数据包。JM 输出生成为 RTP 数据包,其中 RTP 标头和有效负载作为序列。之后,使用一个简单的程序丢弃一些 RTP 数据包。然后,我还可以使用 JM 及其错误隐藏方法来解码输出比特流。
该过程的主要目的是评估网络损失对人类视频质量感知造成的差异。为了测量感知质量,显示的视频必须是解码形式(即全分辨率),或者它可以在接收端解码。如果没有安装 JM 软件,JM 编码器创建的 RTP 数据包将无法解码。但是,使用正确的标头(或容器),大多数视频播放器都能够解码比特流。因此,我在这个问题中的目标是将我的编码RTP 数据包比特流封装在一个通用容器中,例如 AVI 或 MP4,以便我的内容可以在接收器计算机上解码。
RTP分包形式的编码比特流格式如下:
----------------------------------------------------------------------
| RTP Header #1 | RTP Payload #1 | RTP Header #2 | RTP Payload #2 |...
----------------------------------------------------------------------
为了找到视频质量,我想对这些比特流进行主观测试。我可以使用自己解码的全分辨率数据来做这些测试,而用互联网上的 GB 视频数据众包这个主观测试非常不方便。所以,我想通过使用 FFMPEG 将这些比特流混合到一个容器(即 AVI)中。我试图用 FFMPEG 和 FFPLAY 解码这些比特流;但是,他们两个都没有工作。我也尝试了以下命令,它也不起作用。
ffmpeg - f h264 -i <raw_rtpDropped.264> -vcodec copy -r 25 out.avi
我应该使用哪种格式或复用器?我需要将这些文件转换为任何其他格式吗?