给定一个x264流和一个ogg vorbis流,如何制作mplayer / VLC可以读取的多路复用流?

时间:2012-04-12 20:49:33

标签: c++ ogg x264 multiplexing libx264

我很困惑,对这个问题有些困惑。我在Google上找到的只是转码软件的基本用法,与问题无关。

我正在制作游戏,我希望包含原生捕捉功能来播放视频。我非常希望将此流式传输到标准客户端,例如VLC。它必须是它识别的格式,并且需要多路复用才能使其正常工作。

因此,我的问题是,我知道如何将原始视频帧中的内容编码为x264(另请参阅How does one encode a series of images into H264 using the x264 C API?)。我知道如何将原始音频样本编码为ogg / vorbis。现在,我如何将一个和一个放在一起用于VLC?

1 个答案:

答案 0 :(得分:3)

x264不是流格式。这是一个软件。该软件将视频编码为H.264视频格式。 AFAIK,它不会将视频+音频复用到MP4或AVI容器文件中。查看ffmpeg / libav获取完整套件。还有其他程序可以兼作视频和音频流。

这是我进行的一项实验:

youtube-dl "http://www.youtube.com/watch?v=0Bmhjf0rKe8"
avconv -i 0Bmhjf0rKe8.flv -vn -c:a libvorbis -b:a 64k 0Bmhjf0rKe8.ogg
avconv -i 0Bmhjf0rKe8.flv -c:v copy -bsf:v h264_mp4toannexb -an 0Bmhjf0rKe8.h264
avconv -i 0Bmhjf0rKe8.h264 -i 0Bmhjf0rKe8.ogg -c copy 0Bmhjf0rKe8.mkv
mplayer 0Bmhjf0rKe8.mkv
avconv -i 0Bmhjf0rKe8.flv -i 0Bmhjf0rKe8.ogg -c copy -map 0:0 -map 1:0 0Bmhjf0rKe8.mp4
mplayer 0Bmhjf0rKe8.mp4

您应该能够使用libav以编程方式执行此操作。