【发布时间】:2013-08-11 21:38:26
【问题描述】:
我正在研究网络丢失对视频传输的影响。为了模拟网络丢失,我使用了一个简单的程序,它从 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
我应该使用哪种格式或复用器?我需要将这些文件转换为任何其他格式吗?
【问题讨论】:
-
如果我没记错的话,您将“多路复用”与“编码”混淆了。如果您的数据是 YUV,那么它是“解码的”或“原始的”。如果要压缩它,则需要“对其进行编码”。如果您想要高质量/低比特率,请选择 h264(-vcodec h264 我相信)编码器。
-
不,我对这些条款并不感到困惑。我已经使用 JM 对我的视频进行了编码,并以 RTP 数据包模式而不是 AnnexB 模式获取输出。在获得“编码”双流后,我需要对它们进行解码以便向受试者展示。但是,我不想解码并获得 GB 的 YUV(原始)视频。相反,我想将这些比特流混合到 AVI(或 MP4,容器无关紧要)中,以便以更小的尺寸存储视频数据。这样视频就可以放在某个服务器中,我可以将“主题”(或观众/选民)引导到该网页。这是最简单的众包方式。所以我需要复用:)
标签: ffmpeg h.264 video-processing rtp video-codecs