2012-04-12 33 views
3

Ich bin verwirrt und ein bisschen fest mit dieser Frage. Alles, was ich bei Google finden kann, ist die grundlegende Verwendung von Transcodierungssoftware, die nicht mit der Frage zusammenhängt.Gibt es einen x264-Stream und einen ogg-vorbis-Stream, wie mache ich einen Muxed-Stream, den mplayer/VLC lesen kann?

Ich mache ein Spiel und ich möchte native Capture-Fähigkeit zum Streamen von Video hinzufügen. Ich würde das gerne an einen Standard-Client wie VLC streamen. Es muss sowohl in einem Format sein, das es erkennt, und es muss multiplexiert werden, damit dies funktioniert.

Meine Frage ist daher, ich weiß, wie man Zeug von rohen Videorahmen zu x264 codiert (siehe auch How does one encode a series of images into H264 using the x264 C API?). Ich kann rohe Audio-Samples in ogg/vorbis kodieren. Nun, wie lege ich eins und eins für VLC zusammen?

Antwort

3

x264 ist kein Stream-Format. Es ist ein Stück Software. Diese Software codiert Video in das H.264-Videoformat. AFAIK, es koppelt Video + Audio nicht in MP4- oder AVI-Container-Dateien. Sehen Sie in ffmpeg/libav nach einer vollständigen Suite. Es gibt andere Programme, um Video- und Audiostreams zu muxen.

Hier ist ein Experiment, das ich durchgeführt:

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 

Sie sollten die programmatisch mit libav tun können.

+0

Nein, genau. Es gibt einen Stream von H.264-Frames (IIRC) zurück. Die Ogg/vorbis-Komponente gibt einen vollständigen Ogg-Stream zurück. Wie mixe ich diese? – dascandy

+1

Mux in welche Art von Container? IFAIK Ogg-Container unterstützt H.264 nicht. MP4-Container unterstützt Vorbis-Audio. ffmpeg/libav sollte mux MP4 gut machen. Die Leute, die urheberrechtlich geschütztes Material im Internet und Google (webm) veröffentlichen, bevorzugen den Matroska-Container. Ich würde dafür http://www.bunkus.org/videotools/mkvtoolnix/ schauen, obwohl vielleicht auch ffmpeg/libav das tut. –

+0

Nun, ogg unterstützt H.264 nicht. Grundsätzlich ist es mir egal, welcher Container es ist, solange VLC es unterstützt. Jede andere Unterstützung ist ein netter Bonus. AVI ist furchtbar alt, wäre aber ganz in Ordnung, wird aber breiter unterstützt als MKV. Diese Beispiele, die Sie aufgelistet haben, scheinen jedoch sehr brauchbar zu sein, ich werde mich darum kümmern. Vielen Dank! – dascandy