【问题标题】:using ffmpeg to create a wavefile image from opus使用 ffmpeg 从 opus 创建一个波形文件图像
【发布时间】:2015-12-29 09:03:51
【问题描述】:

我一直在尝试使用 ffmpeg 从 opus 文件创建波形文件图像。到目前为止,我已经找到了三种不同的方法,但似乎无法确定哪一种是最好的。

最终的结果是希望有一个只有大约 1 倍的声波。高度为 55 像素。该图像将成为 CSS 背景图像的一部分。

改编自Generating a waveform using ffmpeg

ffmpeg -i file.opus -filter_complex "showwavespic,colorbalance=bs=0.5:gm=0.3:bh=-0.5,drawbox=x=(iw-w)/2:y=(ih-h)/2:w=iw:h=1:color=黑色@0.5" 文件.png

生成此图像:

接下来,我找到了这个(也是我最喜欢的一个,因为它很简单):

ffmpeg -i test.opus -lavfi showwavespic=split_channels=1:s=1024x800 test.png

这就是它的样子:

最后,这个来自FFmpeg Wiki: Waveform,但使用第二个实用程序 (gnuplot) 而不是 ffmpeg 似乎效率较低:

ffmpeg -i file.opus -ac 1 -filter:a aresample=4000 -map 0:a -c:a pcm_s16le -f 数据- | \ gnuplot -e "设置 终端 png 大小 525,050;设置输出 'file.png';未设置键;未设置抽动;未设置边框;放 lmargin 0;设置 rmargin 0;设置 tmargin 0;设置 bmargin 0;阴谋 '

选项二是我最喜欢的,但我不喜欢波形顶部和底部的边距。

选项三(使用 gnuplot)制作最适合我们需要的“形状”图像,因为当图像大小仅为50 像素高。

任何建议如何最好地解决这个问题?我对我看到的任何选项都知之甚少,当然除了尺寸。还要注意,我有 10 的数千个要处理,所以我自然想在一开始就做出明智的选择。

【问题讨论】:

  • 您链接到的 wiki 中使用的方法没有任何“首选”:它只是过时且比 showwavespic 过滤器更旧。 (奇怪的是,我正在查看那篇文章并考虑在看到您的问题前几分钟对其进行更新)。
  • 谢谢 lordNeckBeard - 我确实注意到我认为首选方法的链接已被禁用!同样,我更喜欢选项二,因为它很简单,但前提是我可以轻松地“平息”一点波浪。这是一个示例作品文件 - comptonpeslonline.com//html5Audio/newWaveSurfer/test.opus
  • 抱歉——当我说“首选”时,因为这是我搜索“ffmpeg 波形文件”时出现的第一页——这就是为什么我错误地认为它是首选方法。
  • 该 wiki 页面最近已重命名:trac.ffmpeg.org/wiki/Waveform

标签: ffmpeg


【解决方案1】:


原始和经过处理的波形。

您可以使用compand 过滤器来调整动态范围。然后使用drawbox 制作水平线。

ffmpeg -i test.opus -filter_complex \
"compand=gain=-6,showwavespic=s=525x50, \
 drawbox=x=(iw-w)/2:y=(ih-h)/2:w=iw:h=1:color=white" \
-vframes 1 output.png

它不会像原始波形那样准确地表示您的音频,但它可能在视觉上有所改进;尤其是在如此广泛的范围内。

另见FFmpeg Wiki: Waveform

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2020-07-09
    • 2018-08-02
    • 2012-08-21
    • 2021-11-19
    • 2018-05-30
    相关资源
    最近更新 更多