gpt4 book ai didi

ffmpeg - 使用 FFMPEG 从音频生成波形视频

转载 作者:行者123 更新时间:2023-12-04 01:45:50 39 4
gpt4 key购买 nike

我正在尝试从音频创建波形视频。我的目标是制作一个看起来像这样的视频
enter image description here
对于我的测试,我有一个 mp3 播放短剪辑的声音。以 120bpm 播放 4 个 1/4 音符的小节和 4 个 1/8 音符的小节。我在想出预处理和过滤的正确组合以产生看起来像图像的视频时遇到了一些麻烦。颜色不必精确,我更关心节拍的形状。我使用 showwaves 和 showspectrum 尝试了几种不同的方法。我无法完全理解为什么在使用 showwaves 时节拍过得如此之快,但是使用 showspectrum 会生成一个视频,我可以在其中看到每个单独的节拍。
ShowWaves

ffmpeg -i beat_test.mp3 -filter_complex "[0:a]showwaves=s=1280x100:mode=cline:rate=25:scale=sqrt,format=yuv420p[v]" -map "[v]" -map 0:a output_wav.mp4
这个 link将下载该命令的输出。
ShowSpectrum
ffmpeg -i beat_test.mp3 -filter_complex "[0:a]showspectrum=s=1280x100:mode=combined:color=intensity:saturation=5:slide=1:scale=cbrt,format=yuv420p[v]" -map "[v]" -an -map 0:a output_spec.mp4
这个 link将下载该命令的输出。
我发布了简单的示例,因为我不想通过添加我尝试过的所有变体来混淆这个问题。
在实践中,我想我可以摆脱 showspectrum 的输出,但我想了解我在哪里/如何错误地思考这个问题。感谢您的任何建议。
这是 link到源音频文件。

最佳答案

什么showwaves确实是实时显示波形,显示窗口为 1/帧率,即如果视频输出为 25 fps,则每帧显示 40 ms 音频的波形。没有“历史”或“内存”,因此您无法(直接)获得滚动输出,就像您的引用视频显示一样。

解决方法是使用 showwavespic过滤器以产生以足够高的水平分辨率显示整个波形的单帧。然后将该图片滚动覆盖在所需的背景上,以使滚动持续时间与音频一样长的速度。

基本命令模板将是:

ffmpeg -loop 1 -i bg.png -loop 1 -i wavespic.png -i audio.mp3
-filter_complex "[0][1]overlay=W-w*t/mp3dur:y=SOMEFIXEDVALUE" -shortest waves.mp4
mp3dur以上应替换为音频文件的持续时间。

关于ffmpeg - 使用 FFMPEG 从音频生成波形视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663718/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com