HLS ストリーミングを録画して、FLV コンテナーに保存したいと思います。
私のffmpegのcmdは次のとおりです:
/.../recorder/class/ffmpeg-2.6.1-32bit-static/./ffmpeg -i http://server/url/playlist.m3u8 -b:a 128K -acodec libmp3lame -ar 44100 -write_xing 0 -y -b:v 512K -vcodec flv -t 1860 /tmp/test.flv
記録が開始されますが、コンソール出力には次のような内容が多数表示されます。Past duration 0.XXXXXX too large
この警告は何を意味していますか? また、どうすれば修正できますか?
これは入力情報のコンソール出力です:
ffmpeg version 2.6.1- http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --enable-gpl --enable-version3 --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --cc=gcc-4.9
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, hls,applehttp, from 'http://server/url/playlist.m3u8':
Duration: N/A, start: 35483.191100, bitrate: N/A
Program 0
Metadata:
variant_bitrate : 303609
Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 320x180 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 60 tbc
Metadata:
variant_bitrate : 303609
Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 67 kb/s
Metadata:
variant_bitrate : 303609
これを解決するにはどうすればよいですか?
答え1
この郵便受け答えは「2015 年 1 月 15 日以降の FFMpeg バージョンでは、この警告が頻繁に表示されます。これは、レート制御の歪みの可能性について警告するために追加されたもので、それ以外では害はありません。」
これは、「入力ストリームのプレゼンテーション時間 (pts) が出力ストリームのものと 0.6 に設定された固定制限を超えて異なる」場合にトリガーされるようです。
答え2
これは新しい「機能」のようです:ffmpeg が「過去の期間 xy が大きすぎます」というメッセージをスパムする
ffmpeg バージョン 2.6.2 では、フレーム情報 (frame=...) ごとに 1 回書き出されますが、2.6.git では、主に録画の開始時に発生し、その後は不規則な間隔で発生します。