予想外に大きな HLS TS ファイル

予想外に大きな HLS TS ファイル

HLS セグメント化が、いくつかのストリームに対して適切に機能しないことがあるようです。TS ファイルはドライブがいっぱいになるまで大きくなりますが、セグメント化は行われません。ほとんどのストリームは、数週間にわたって完璧に実行されています (同じコマンドラインを使用)。

問題のあるソース ストリームの 1 つ (FFPROBE 出力) についてわかっていること: https://justpaste.it/5d0px

私のコマンドラインは次のようになります:

/root/bin/ffmpeg -loglevel 16 -probesize 10M -analyzeduration 10M -i http://host/streams/stream.m3u8 -map 0:1 -map 0:0 -c:a copy -c:v copy -f hls -hls_time 10 -hls_flags delete_segments -hls_base_url http://host/ts/ -hls_segment_filename /var/media/ts/stream_%03d.ts /var/media/playlist/stream.m3u8

私は FFMPEG アクティビティをログ ファイルに記録していますが、ドライブがいっぱいになったときに 1 つのエラーのみが発生しました。

av_interleaved_write_frame(): デバイスに空き容量がありません

/var/media/playlist/stream.m3u8 のトレーラーの書き込みエラー: デバイスに空き容量がありません

私が試したFFMPEGバージョン: N-93765-gfcc01ba、4.1.3

HLS m3u8 ファイルは問題なく、継続時間も問題ありませんが、最後の TS ファイルはドライブがいっぱいになるまで大きくなります。Ramdrive を使用して TS ファイルを保存します。

編集: 更新情報: ログレベル 48 で FFMPEG を 1 日中実行しました。

  • ログ ファイルは 790 MB と非常に大きいため、取得したエラーのみを共有します。もちろん、必要な場合はアップロードします。
  • セグメント化は 9538 番目のセグメント ファイルで停止しました (上記の HLS 設定を参照)。セグメント化が停止したときに、次のエラーのみが表示されます。

出力ストリーム 0:0 に非単調 DTS があります。以前: 8584618042、現在: 307231408。8584618043 に変更されます。これにより、出力ファイルに誤ったタイムスタンプが記録される可能性があります。

ほとんどの mystreams が稼働している本番サーバーで、TS ファイルが 20 MB より大きいかどうかを検出する簡単な Python スクリプトを作成しました (TS ファイルは通常最大 2 MB)

私の結果は次のとおりです:

2019-05-21 08:02:02: /var/media/ts/tlc_9538.ts は 20MB より大きい

2019-05-21 08:02:03: /var/media/ts/eurosport_9538.ts は 20MB より大きい

2019-05-21 08:02:04: /var/media/ts/digi_sport1_9538.ts は 20MB より大きい

2019-05-21 09:27:01: /var/media/ts/travel_9538.ts は 20MB より大きい

2019-05-21 09:48:01: /var/media/ts/digi_sport2_9538.ts は 20MB より大きい

2019-05-21 11:21:01: /var/media/ts/digi_world_9538.ts は 20MB より大きい

2019-05-21 11:22:01: /var/media/ts/history_9538.ts は 20MB より大きい

2019-05-21 12:39:01: /var/media/ts/viasat_history_9538.ts は 20MB より大きい

ご覧のとおり、このイベントは 9538 番目の TS ファイルで発生します。これには何か理由があるのでしょうか?

関連情報