0


ffmpeg を使用して、テクニカル ノート TN2224 で推奨されているビットレートに従ってサンプル ビデオをエンコードし、HLS ツールを使用してセグメント化してプレイリストを作成し、最後にバリアント plist ファイル「all.m3u8」を作成します。
検証ツールを使用して HLS コンテンツを検証しました。テキストエディタを使用して「all.m3u8」を開き、他のすべてのビットレートコンテンツが同じ帯域幅を使用していることを確認しました。ffmpeg コマンドのパラメータをどのように変更しても、修正できません。次のコマンドは、コンテンツのエンコードに使用した
ffmpeg -i input.m4v -acodec libfaac -vcodec libx264 -s 480x360 -b 350k -r 29.97 -vpre medium output.mp4

コマンドです。次のコマンドは、セグメントと plist を生成するためのものです
mediafilesegmenter -b http://www.example.com/stream/ -I -f ~/Documents/sample/ output.mp4

。次のコマンドは、all.m3u8 を生成するためのものです。
variantplaylistcreator -o all.m3u8 http://www.example.com/stream/110/prog_index.m3u8 ~/Documents/sample/110/prog_index.m3u8 -iframe-url http://www.freeyourteam.com/stream/110/iframe_index.m3u8 http://www.example.com/stream/200/prog_index.m3u8 ~/Documents/sample/200/prog_index.m3u8 -iframe-url http://www.freeyourteam.com/stream/200/iframe_index.m3u8 http://www.example.com/stream/350/prog_index.m3u8 ~/Documents/sample/350/prog_index.m3u8 -iframe-url http://www.freeyourteam.com/stream/350/iframe_index.m3u8 http://www.example.com/stream/550/prog_index.m3u8 ~/Documents/sample/550/prog_index.m3u8 -iframe-url http://www.freeyourteam.com/stream/550/iframe_index.m3u8 http://www.example.com/stream/64/prog_index.m3u8 ~/Documents/sample/64/prog_index.m3u8

私の「all.m3u8」では、帯域幅はすべて 523894 です。

さらに 2 つの基本的な質問をさせてください。
テクニカル ノートでは、推奨されるビットレートは 64 Kbps、110 Kbps、200 Kbps、350 Kbps、550 Kbps です。この値にオーディオ ビットレートが含まれているのか、オーディオが除外されているのか疑問に思います。どのようにキーフレームをセグメントに挿入しますか? ドキュメントには次のように書かれているためです。どうすればできるのかよくわかりません。
ご協力いただき、誠にありがとうございました。お時間をいただきありがとうございます。

4

3 に答える 3

1

みんなの注目と提案に感謝します。私はついにそれを理解しました。異なるビットレートで帯域幅が同じままであった理由は、私の ffmpeg コマンドがいくつかの設定を見逃したためです。私は次のコマンドを使用する
ffmpeg -i inputVideo.m4v -f mpegts -acodec libfaac -ar 44100 -ab 64k -vcodec libx264 -b 350k -s 480x360 -r 29.97 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 350k -bufsize 350k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 4:3 -g 30 -async 2 output.ts

ことになりました。私と同じ問題を抱えている他の人が参照できるように、ここに置きました。

于 2012-10-06T01:57:23.677 に答える
1

ジェイソン、 all.m3u8 を作成するには、それぞれが異なるビットレートに対応する複数の m3u8 ファイルを与えるべきではありませんか?

ffmpeg を 4 回実行して、4 つのビットレート ファイルを作成していると思います。次に、セグメンターを 4 回実行して、4 セットのセグメントとその個々の m3u8 ファイルを作成します。

最後に、Variantplaylistcreator にビットレートごとのさまざまな m3u8 ファイルの場所を伝えて、単一のマスター m3u8 ファイルを作成する必要があります。例えば。

variantplaylistcreator -o mymedia_all.m3u8 http://mywebserver/mymedia_lo/prog_index.m3u8 mymedia_lo.plist http://mywebserver/mymedia_med/prog_index.m3u8 mymedia_med.plist http://mywebserver/mymedia_hi/prog_index.m3u8 mymedia_hi.plist 

さまざまなファイルを個別に提供しているとは思いません。私はあなたが絵を手に入れることを願っています。

編集: 他の質問に答えるには: ビットレートにはオーディオが含まれます。必要なことは、エンコーディングでキー フレーム間隔が固定されていることを確認することです。これにより、セグメンターは定期的にファイルをセグメント化できます。どこにも何も挿入しません。

好奇心から、ffmpeg を直接使用して出力セグメント化ファイルを取得してみませんか? それをサポートします。

于 2012-10-04T14:53:22.687 に答える
0

variantplaylistcreator のバグを発見したようです。サブストリームが実際に期待するビットレートであることを確認し、実際に間違った値を設定している場合は、Apple に報告することをお勧めします。

複数の -iframe-url を使用することと関係がある可能性があります。なぜ複数回指定する必要があるのか​​ わかりません。サブストリームの I フレーム位置が異なる場合、アダプティブ ストリーミングは機能しません。少なくともすべてのセグメント境界を揃える必要があります。

プレイリストをプログラムで修正する必要がある場合は、ffprobe (ffmpeg スイートから) を使用して各サブストリームのビットレートを抽出し、帯域幅の数値を抽出した値に置き換えることをお勧めします。

于 2012-10-05T07:20:16.943 に答える