如何从HTML5网页视频中生成音频波形?

4

假设有一个普通的网页视频,例如:

<video src="my-video.mp4"></video>

如何生成音频波形图?

是否可以在不播放视频的情况下生成波形图?


注:

  • 我对可用的API感兴趣,以实现此目的,而不是“如何将波形渲染到画布”的指南。
  • 请使用纯JavaScript,不要使用库。
2个回答

4

mp4和m4a之间除了扩展名外没有区别 - 扩展名只是使内容更易于辨认(浏览器不能仅依赖扩展名)。 - user1693593
1
无需离线上下文,因为decodeAudioData将处理已解码的样本缓冲区,可用于波形绘制。顺便说一句。 - user1693593
1
而且AudioBuffer只提供原始的PCM数据,对于波形来说足够了,但如果OP需要分析这些数据,则使用OfflineContext是有意义的。 - Kaiido
1
同意,即使只是一次性呈现整个视频波形(类似于Soundcloud),离线环境也会提供适当的工具。+1(我最初认为他想要一个范围可视化器来处理视频文件的音频,但我可能误解了)。 - user1693593
@Kaiido @K3N,你们能否创建一个最小运行示例来演示使用OfflineAudioContext的想法? - Misha Moroshko
显示剩余2条评论

0
如果您使用Web音频API,将在客户端上进行渲染。 由于渲染可能会导致客户端的内存和时间问题,因此您无法控制体验质量。 您可以在后端使用FFmpeg生成波形图像,并将其传递到前端。 这非常简单。

https://trac.ffmpeg.org/wiki/Waveform

示例: ffmpeg -i C:\test.mp3 -filter_complex "showwavespic=s=640x120" -frames:v 1 C:\waveform.png


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接