FFMPEG 直播录制速度太快
FFMPEG live recording is too fast
我正在尝试录制 55 秒的广播电台。
ffmpeg -t 55 -i http://19233.live.streamtheworld.com/BLZE_1.mp3 toofastrecord.mp3 .
FFMPEG 执行此操作将近 10 秒。现场录音怎么可能用速度 speed=5.67x
而不是 1?
下面是 FFMPEG 输出。
ffmpeg -t 55 -i http://19233.live.streamtheworld.com/BLZE_1.mp3 toofastrecord.mp3
ffmpeg version N-77715-gfc703f5 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 12.100 / 55. 12.100
libavcodec 57. 21.100 / 57. 21.100
libavformat 57. 21.101 / 57. 21.101
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 23.100 / 6. 23.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[mp3 @ 0000017b0ad9aa00] Skipping 0 bytes of junk at 0.
Input #0, mp3, from 'http://19233.live.streamtheworld.com/BLZE_1.mp3':
Metadata:
icy-br : 64
icy-description :
icy-genre : Talk
icy-name :
icy-url :
Duration: N/A, start: 0.000000, bitrate: 64 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s
Output #0, mp3, to 'toofastrecord.mp3':
Metadata:
icy-br : 64
icy-description :
icy-genre : Talk
icy-name :
icy-url :
TSSE : Lavf57.21.101
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, mono, s16p
Metadata:
encoder : Lavc57.21.100 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
size= 430kB time=00:00:55.01 bitrate= 64.1kbits/s speed=5.67x
video:0kB audio:430kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.077898%
您的消息来源肯定是实时的。你可以简单地通过聆听来证明这一点。当你重新加载它时,它是全新的音频。
发生的情况是服务器有一个相对较大的缓冲区,用于缓冲来自源的数据。当新客户端连接时,他们需要几帧音频数据才能开始解码。而且,大多数播放器至少有两秒的播放缓冲区。因此,服务器有这么大的缓冲区,可以在连接时刷新整个内容,这意味着听众不必等待两秒钟来缓冲两秒钟的音频。播放可以立即开始。
对于这个特定的流,它看起来大约是一个 384KB 的缓冲区。此流具有 64kbps 的低比特率。那是每秒 8KB,这意味着初始缓冲区中有整整 48 秒的缓冲音频。
您只录制了 55 秒,因此可以运行 尽可能快地将缓冲区刷新给您。如果您再录制几分钟,您会发现下载前 64 秒后速度会急剧下降。
我正在尝试录制 55 秒的广播电台。
ffmpeg -t 55 -i http://19233.live.streamtheworld.com/BLZE_1.mp3 toofastrecord.mp3 .
FFMPEG 执行此操作将近 10 秒。现场录音怎么可能用速度 speed=5.67x
而不是 1?
下面是 FFMPEG 输出。
ffmpeg -t 55 -i http://19233.live.streamtheworld.com/BLZE_1.mp3 toofastrecord.mp3
ffmpeg version N-77715-gfc703f5 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 12.100 / 55. 12.100
libavcodec 57. 21.100 / 57. 21.100
libavformat 57. 21.101 / 57. 21.101
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 23.100 / 6. 23.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[mp3 @ 0000017b0ad9aa00] Skipping 0 bytes of junk at 0.
Input #0, mp3, from 'http://19233.live.streamtheworld.com/BLZE_1.mp3':
Metadata:
icy-br : 64
icy-description :
icy-genre : Talk
icy-name :
icy-url :
Duration: N/A, start: 0.000000, bitrate: 64 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s
Output #0, mp3, to 'toofastrecord.mp3':
Metadata:
icy-br : 64
icy-description :
icy-genre : Talk
icy-name :
icy-url :
TSSE : Lavf57.21.101
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, mono, s16p
Metadata:
encoder : Lavc57.21.100 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
size= 430kB time=00:00:55.01 bitrate= 64.1kbits/s speed=5.67x
video:0kB audio:430kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.077898%
您的消息来源肯定是实时的。你可以简单地通过聆听来证明这一点。当你重新加载它时,它是全新的音频。
发生的情况是服务器有一个相对较大的缓冲区,用于缓冲来自源的数据。当新客户端连接时,他们需要几帧音频数据才能开始解码。而且,大多数播放器至少有两秒的播放缓冲区。因此,服务器有这么大的缓冲区,可以在连接时刷新整个内容,这意味着听众不必等待两秒钟来缓冲两秒钟的音频。播放可以立即开始。
对于这个特定的流,它看起来大约是一个 384KB 的缓冲区。此流具有 64kbps 的低比特率。那是每秒 8KB,这意味着初始缓冲区中有整整 48 秒的缓冲音频。
您只录制了 55 秒,因此可以运行 尽可能快地将缓冲区刷新给您。如果您再录制几分钟,您会发现下载前 64 秒后速度会急剧下降。