Mplayer 每 256k 才刷新一次

Mplayer 每 256k 才刷新一次

我正在脚本中录制音频,以便稍后通过时移播放。

该脚本定期检查流是否仍处于活动状态。有时直播广播流会被中断。在这种情况下,我想在新的转储文件中重新开始录制。

实际录制是用mplayer完成的:

/usr/bin/mplayer -novideo -dumpaudio      http://194.232.200.147:8000 -dumpfile orf_salzburg_1566868130-1566868130.mp3

我通过定期检查文件大小来检查流是否仍处于活动状态。当它不再增加时,我重新开始录制。

在旧的 Debian 机器上使用这个 mplayer 版本运行得很好:

MPlayer svn r34540 (Debian), built with gcc-4.7 (C) 2000-2012 MPlayer Team

现在碰巧我正在一台新机器上开发,使用这个版本:

MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team

旧版本会立即写入文件。当我每 100 毫秒查询一次写入的文件时,我发现文件大小每 100 毫秒增加一次。

然而,使用新的 mplayer 版本,该文件以 256kbyte 的块写入。最多可能需要 16 秒才能看到文件大小的增加。

奇怪的是,即使是新的 mplayer 也会在命令行中报告正在写入的连续字节数。但实际上它只是在 op 256k 的块中。

我相信这种行为是由于在 mplayer 中使用 ffmpeg 库造成的。 FFmpeg 每 256kbyte 刷新一次。但 ffmpeg 中有一个选项可以刷新输出。它并不像看起来那样在 mplayer 中。

更改脚本中的周期来检查文件大小的增长很容易。但是,当我将其更改为 20-30 秒时,当流中断时我会丢失大量音频。

关于如何将 mplayer 恢复到原来的行为有什么建议吗?

相关内容