【问题标题】:Recording a mp3 stream with FFMPEG and drop-outs使用 FFMPEG 和 drop-out 录制 mp3 流
【发布时间】:2011-09-16 07:53:37
【问题描述】:

我希望有人能给我指点,我有一个 php 脚本,它运行以下命令来录制现场广播 mp3 流以创建长达一小时的 mp3 录音。它非常适合我的目的。唯一的问题是偶尔没有录音。据我所知,因为流已经退出并且 ffmpeg 刚刚中止。

/usr/local/bin/ffmpeg -i http://www.mystream.com:8000/radiostream.mp3 -t 60:00 -acodec copy /var/www/mydomain/audio/".$recorded_audio_title;

所以我的问题是,有没有办法告诉 ffmpeg 连续录制 60:00 分钟以进行录制,即使他们退出了?如果它完成了录音,我会很高兴有一点奇怪的沉默。

我希望这是有道理的,即使是指向 FFMPEG 选项或标志的指针,我也会很感激。使用 Google 搜索后,我还没有看到任何符合要求的内容。

在此先感谢

抢劫

【问题讨论】:

  • 您想通过静音完成丢弃的流以接收正好 60 分钟长的录音吗?
  • 不,理想情况下,当流重新连接时,它能够继续录制流。辍学往往很短。虽然作为开始,如果没有其他替代方案可用,那么全长录音(即使部分/大部分是无声的)总比没有好。
  • @Rob,您应该使用数据包嗅探器验证流是否工作。确保它是连接错误或阻碍你的东西。此外,您可以考虑使用简单的 WGET 实现相同的目标,并在 60 分钟后停止。它不会准确地为您提供 60 分钟,因为服务器最初会推送一个缓冲区(通常为 1MB),因此您可能会得到 60 分钟 + 1MB 左右。另外,最后不要担心 MP3 损坏。我用过这个方法的任何玩家都可以很好地处理它。

标签: ffmpeg mp3 audio-streaming live-streaming


【解决方案1】:

假设您需要通过静默完成丢弃的流式传输来准确记录 60 分钟的文件。

FFMPEG 没有这样的明确选项。但是你可以模拟它。准备 60 分钟的静音 mp3。录制您的直播。录制完成后,检查其持续时间。如果短于 60 分钟 - 使用静音文件加入您的录音,并指定最终持续时间应为 60 分钟。 Joining is described here.

编辑:

要继续录制,您只需检查之前的录制持续时间,如果它太短 - 再次运行相同的 FFMPEG 命令,使用不同的文件名,然后合并两个文件。循环这个直到你收到 60 分钟的文件

【讨论】:

  • 谢谢您的建议。问题是当他们退出时没有创建文件。例如说,在 20 分钟后,流退出,FFMPEG 似乎只是中止而不创建任何文件 - 所以我没有什么可加入的。理想的情况是 FFMPEG 在退出时不会失败并继续录制,直到流恢复(一到几秒钟后)。
  • FFMPEG 无法做到这一点。我可以建议您录制较短的片段,然后加入它们。在这种情况下,你会因为辍学而损失更少
  • 如果您保存为原始音频,那么您可能不会“丢失流”并且不会获得任何数据...
【解决方案2】:

尝试查看 ffmpeg -segment 命令将您的录音分成 60 分钟的块 ffmpeg documentation

【讨论】:

    猜你喜欢
    • 2012-07-30
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2013-01-07
    • 2016-03-15
    • 1970-01-01
    • 2018-02-18
    • 2015-06-22
    相关资源
    最近更新 更多