2012-04-12 20 views
3

我很困惑,并且有点卡住了这个问题。我在Google上可以找到的仅仅是代码转换软件的基本用法,它与问题无关。给定一个x264流和一个ogg vorbis流,我该如何制作mplayer/VLC可以读取的muxed流?

我在做一个游戏,我想包括本地捕捉能力,以流视频。我非常希望将它传输到标准客户端,如VLC。它需要既能够识别它的格式,又需要被多路复用才能工作。

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

回答

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。

+0

不,确切地说。它返回一个H.264帧(iirc)流。 Ogg/vorbis组件返回一个完整的Ogg流。我如何复合这些? – dascandy 2012-04-14 20:23:47

+1

Mux成什么样的容器? IFAIK Ogg容器不支持H.264。 MP4容器支持Vorbis音频。 ffmpeg/libav应该复用MP4精细。在互联网和Google(webm)上发布版权材料的人更喜欢Matroska容器。我会看看http://www.bunkus.org/videotools/mkvtoolnix/,虽然也许ffmpeg/libav也是这样做的。 – 2012-04-14 20:53:56

+0

那么,ogg不支持H.264。基本上,只要VLC支持它,我并不在乎它是什么容器。任何其他支持它是一个很好的奖金。 AVI是非常古老的,但相当不错,但比MKV更广泛的支持。你列出的那些例子似乎非常有用,但我会研究它。谢谢! – dascandy 2012-04-15 10:05:51

相关问题