私は現在、libogg、libvorbis、および libtheora を使用する単純な Theora ビデオ エンコーダーを作成しています。現在、フレームを Theora エンコーダーに送信し、PCM サンプルを Vorbis エンコーダーに送信し、結果のパケットを Ogg ストリーム (1 つは Theora 用、もう 1 つは Vorbis 用) に渡し、ページを取得できます。
プログラムが開始すると、最初に Theora エンコーダーからヘッダーをフラッシュし、次に Vorbis エンコーダーから出力ファイルにフラッシュします (明らかに、両方のストリームに固有のシリアル番号があります)。次に、インターリーブされたページを両方のストリームからファイルに書き込みます。
ビデオのみ、またはオーディオのみを書き込む場合、出力を mplayer で問題なく再生できますが、両方を書き込もうとすると、次のようになります。
Ogg demuxer エラー: 不明なストリームに遭遇しました
多重化が間違っていると思います。Xiph.org でストリームの多重化に関するドキュメントを読みましたが、どこが違うのかわかりません。これを行うためのサンプルコードを見つけることができないようですが、オープンソースのエンコーダーのソースを調べることはできません (理解に問題があります)。libogg を使用してストリームを正しく多重化する方法を説明できる人はいますか? Ubuntu リポジトリのライブラリを使用して、Ubuntu 10.04 の C でこれを実行しようとしています。
よろしくお願いします!
トム