Gstreamer: 将Matroska视频转码为mp4

5
我们正在使用的硬件不支持播放mkv文件,所以我需要将Matroska(mkv)视频文件转码为mp4视频文件。
根据在线转码材料的理解,我需要执行以下操作:
1.使用matroskademux元素将mkv文件的不同流分离出来。 2.使用可用的mkv解码器将音频和视频流解码为原始格式,并将此数据提供给mp4 Muxer元素并重新编码为所需格式。
请问我的做法是否正确?任何关于此的信息或链接都将非常有帮助。
1个回答

5

根据Matroska文件中的内容,您可能根本不需要对其进行解码,只需重新复用即可。

我假设视频是H264,因此只需重新复用即可。 以下是使用gst-launch重新复用带有h264和mp3的文件的示例管道。

gst-launch-0.10 -v filesrc location=$file \
! matroskademux name="demux" demux. ! h264parse ! queue \
! mp4mux name=mux ! filesink location=$file._out.mp4 demux. \
! mp3parse ! queue ! mux.`

你可以查看 Transmageddon转码器(www.linuxrising.org),它应该可以满足你的需求。

谢谢您的回复。 我还有一个问题: 使用您提到的上述命令,我能够将mkv重新混流为mp4,但只适用于音频流为mp3的情况。 如果mkv具有aac音频流,则尝试使用aacparser。不知何故,管道队列无法与aacparse元素链接。 在与aacparse相关的帖子中,提到如果音频流中的“framed”字段设置为true,则“aacparse”元素无法链接到管道队列。 在这种情况下,我需要将音频流解码为原始格式,然后重新编码以匹配mp4mux元素接收器吗? - Vikram Desai
在 GStreamer git 中修复了许多解析器的问题,目标是在几周内发布新版本,并且这些版本应该可以解决您的问题。 - Christian Schaller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接