【问题标题】:How to find X seconds of silence in a mp3 file?如何在 mp3 文件中找到 X 秒的静音?
【发布时间】:2012-06-19 22:12:09
【问题描述】:

我需要在 mp3 文件中找到静音。就这么简单。

例如:

  • 在“file.mp3”中找到大于 X 秒的静音,如果找到 X 秒的静音,则发送错误代码 0,如果未找到静音,则发送错误代码 1。

我可以在 Batch、VBS、Ruby 或 Python 中尝试它(因为我要练习,但我只知道 Batch)。我不知道音乐库和那些东西......

无论我是否需要像 CommandLine APPS 这样的第三方软件来完成这项工作......

注意:静音也可以在 mp3 文件的中间。例如,在名为“隐藏曲目”的文件中,即:1 首歌曲 + 1 分钟的大静音 + 另一首歌曲(全部在 1 个 mp3 文件中)所以我需要一些东西来搜索 X selince 到整个文件中,不仅接近结尾文件...

注意 2:我需要在 Windows 中进行。

有什么想法吗?

【问题讨论】:

  • 将 MP3 音频数据转换为原始 PCM,扫描样本以寻找低于您想要的任何阈值的块。

标签: windows audio mp3 audio-analysis


【解决方案1】:

这样做:

  • 使用一些 mp3 解码库来解码 mp3,你会从中得到 PCM。
  • PCM数据是一个接一个short,表示16位有符号数
  • 您必须找到连续数量的shorts,它们绝对小于某个小值,例如 100(范围为 32767)
  • 短裤数量的长度取决于:您想要的静音持续时间、文件中的通道数、采样频率
  • 如果你有这么多更小的短裤,你就会保持沉默。

请使用 cmets 向您需要更多信息的领域添加问题,或为此添加新问题,因为该任务有很多步骤,我想所有步骤都会使这个问题过于具体。

【讨论】:

    【解决方案2】:

    使用 sox,它是 silence filter

    检查sox $infile -n statsox $infile -n silence 1 0.1 1% -1 0.1 1% stat 的输出并比较原始文件和修剪文件的长度应该可以解决问题

    【讨论】:

    • 谢谢,太好了,我只有一个问题:(我在 Windows 中)当我尝试使用“-n stat”命令时出现此错误:sox FAIL util: Unable to load MAD 解码器库 (libmad)。
    • 是的,谢谢你,我再次下载了用 libmad 和 lame 编译的 sox...我有一个 5 秒静音的文件(我的意思是没有音频峰值),当我尝试第二个命令时,我什么也没得到: “sox test.mp3 -n quiet 1 0.1 1% -1 0.1 1%”我做错了什么?周期是毫秒还是秒?并为我的无知感到抱歉,但确定这只能用来“找到”沉默吗?因为我阅读了文档,只说是写入或删除静音... :-/ ty for all
    • 您在命令末尾忘记了stat。如果是小数,则周期以秒为单位,否则以样本为单位。 -n 标志告诉 sox 丢弃任何处理过的音频。
    猜你喜欢
    • 2016-09-13
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多