【发布时间】:2015-04-28 22:46:54
【问题描述】:
背景:
我当前的视频文件放在基于 Linux 的系统中,该系统将内容 (RTP) 流式传输给其他用户。更改后我正在拍摄并将内容发送到服务器并确保编码正确我偶然发现了问题。
我已尝试使用ffmpeg 执行此操作,但是我注入此文件的系统无法识别它并将其流式传输到另一台设备。
我在 Windows 系统上做所有的转码等等
C:\Users\mazdak\Documents\Projects\ffmpeg\bin>ffmpeg -y -i input.mp4 -pix_fmt yuv420p -c:v libx264 -profile:v main -level:v 4.1 -color_range 0 -colorspace bt709 -x264opts colorprim=bt709:transfer=bt709:bframes=1 -an output.mkv
错误: 我得到的是
StreamMedia exception ry: Unexpected NAL unit type: 9
(...)
StreamMedia exception ry: First media frame must be sync point
也许我没有为 RTSP 做准备?是不是这个问题。因为我看到的是能够流式传输的文件是使用 Gstreamer
编码的所以我想..也许ffmpeg 不这样做?好吧,让我们试试gst-launch。
我需要有关如何处理此问题的指示。
我有什么:
- GStreamer 的OSSBuild
ffmpeg utils-
input.mp4- H264 主配置文件 L3.1 - 像素格式 yuvj420p - 容器中的音频
我需要什么(可能):
output.mkv- H264 主要配置文件 L4.1 - 像素格式 yuv420p - 准备好 RTP(rtph264pay 模块)已删除音频
我拍摄的两部电影都有h264_analyze 输出。来自成功流式传输的电影,以及我尝试使用ffmpeg的电影
【问题讨论】:
-
您使用什么系统来传输内容?它在其文档中说明了它可以处理哪些文件格式?
-
@mpr 该系统是在基于 Linux 的操作系统上运行的流媒体服务器。它可以处理的唯一格式是带有 h264 编码内容的 matroska 容器。
-
所以想要的输出是一个 mkv。您的输入是 mp4 还是其他 mkv?我在您的描述和示例代码中看到了相互矛盾的信息。如果您要做的只是将 mp4 转换为 mkv,那是 GStreamer 可以做的事情,但是管道会根据您是否要添加音轨以及可能的其他一些因素而有所不同。您是在 Windows 中还是在 Linux 中进行转换?另外,是什么创建了输入视频?如果 ffmpeg 无法处理它可能是问题所在。请注意,RTP/RTSP 实际上只处理流方面的事情。不影响 mp4/mkv 文件的正确性。
-
@mpr 对不起!我更改名称时不小心更改了格式。对其进行了更改并在问题中添加了更多信息,这些信息应涵盖您在 cmets 中的问题。我正在尝试将格式从 .mp4 更改为 .mkv。使用为 Windows 构建的 ffmpeg 和 gstreamer 运行 Windows 7。数码相机产生带有音频的“input.mp4”。我不想要“output.mkv”中的音频。
标签: ffmpeg gstreamer h.264 rtp mkv