
おはようございます。HLS ストリーミングをテストしており、コマンドを使用して簡単なプレイリストとビデオのセグメントを作成しましたffmpeg -i C:\Users\funny\Desktop\uscita\out.mp4 -vcodec libx264 -g 24 -hls_time 10 -hls_playlist_type vod -vsync 1 index1.m3u8
。
ソース ビデオは問題なく開き、ffmpeg はそれを問題なく index1 (プレイリスト ファイル) にエンコードし、index10、index11、index12 は 3 つの .ts (ビデオの長さは 26 秒のみ) になります。VLC はプレイリスト ファイルを開くので、.m3u8 をテストできるようにインストールしましたが、VLC で開くと、プログラムは実行を開始しますが、何も再生されません。参考までに、これもプレイリストです。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.500000,
index10.ts
#EXTINF:12.000000,
index11.ts
#EXTINF:2.500000,
index12.ts
#EXT-X-ENDLIST
答え1
tl;dr: これは VLC のバグのようです。別のプレーヤーを使用してください。
ffmpeg
質問に示されているように作成されたHLSビデオファイルセットでこの問題を再現できます。これはffmpeg 4.0.2とVLC 3.0.4です。
症状:
VLC でファイルを開くと.m3u8
、次のエラー メッセージが表示されます:
適応型デマルチプレクサ エラー: デマルチプレクサ (nil) の作成に失敗しました TLS
デバッグ ログは、VLC が実際にプレイリストを正常に読み取り、TS ファイルを見つけたが、その後何か問題が発生したことを示しています。
ffplay
しかし、私は両方でファイルを正常に再生することができますMPlayerなので、VLC に問題があるようです。
VLC バグトラッカーには似たようなバグレポートがいくつかありますが、ほとんどはかなり古く、修正されているようです。ファイルの URL を開いて HTTP 経由で HLS ストリームを再生することはできたので.m3u8
、このバグはダウンロードした HLS ストリームにのみ適用されるようです。ローカルにダウンロードしたファイルの再生は VLC にとって優先度が高くないのかもしれませんので.m3u8
、別のプレーヤーを使用してください。
答え2
VLC は、これらの 'EXT-X' ディレクティブを含む m3u8 ファイルを処理できないようです。おそらくこれは、他の場所でも指摘されているように、今日に至るまで解決されていない VLC のバグです。
最適な選択肢は次のとおりです。
- ファイルを編集して
.m3u8
EXT-X行を削除します(ただし、EXTINF行は残してください)。その後、VLCでプレイリストを再生できるようになります。 - 別のアプリケーションを使用して、
.m3u8
ファイルをそのまま再生します。ffplay
たとえば、再生できるアプリケーションを使用します。
答え3
万が一、まだ情報が必要な方がいらっしゃる場合に備えて。
mpegts チャンクの「content-type」ヘッダーを確認してください。「video/mp2t」になっているはずです。