我最初的想法是将音频文件连同受音频启发的视频一起上传到 YouTube。特定的可视化可以采用不同的形式,例如频谱、频谱图或随音频变化的其他形式的可视化。我不熟悉 ffmpeg 或 sox 的所有功能,但我想知道我是否可以开箱即用地做这样的事情,或者将其作为一系列脚本与其他命令行实用程序一起使用。
答案1
音频可视化ffmpeg
ffmpeg -i input.mp3 -filter_complex \
"[0:a]avectorscope=s=640x518,pad=1280:720[vs]; \
[0:a]showspectrum=mode=separate:color=intensity:scale=cbrt:s=640x518[ss]; \
[0:a]showwaves=s=1280x202:mode=line[sw]; \
[vs][ss]overlay=w[bg]; \
[bg][sw]overlay=0:H-h,drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf:fontcolor=white:x=10:y=10:text='\"Song Title\" by Artist'[out]" \
-map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 -c:a copy output.mkv
ffmpeg
可以使用多个过滤器来可视化音频:矢量示波器,展示光谱, 和秀浪。然后你可以将它们放置在你想要的位置覆盖,然后使用绘制文本。
在上面的例子中,音频是流已复制(重新混编)而不是重新编码。
答案2
下面是一些获取音频文件、运行它ffmpeg
并基于 ffmpeg 中的某些过滤器创建视频的示例。
例子:
频谱图:
ffmpeg -i song.mp3 -filter_complex showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt -y -acodec copy video.mp4
矢量示波器:
ffmpeg -i song.mp3 -filter_complex avectorscope=s=320x240 -y -acodec copy video.mp4
缩放曼德布洛特:
ffmpeg -i song.mp3 -f lavfi -i mandelbrot=s=320x240 -y -acodec copy video.mp4
(截图缺失)
答案3
我用的是这个:
ffmpeg -y -i audio.mp3 -loop 1 -i image.jpg -filter_complex "[1:v]crop=640:480:0:0,setsar=1[img]; [0:a]showwaves=mode=line:s=hd480:[email protected]|[email protected]:scale=sqrt,format=yuva420p[waves]; [img][waves]overlay=format=auto,drawtext=text='${NAME}':[email protected]:fontsize=30:font=Arvo:x=(w-text_w)/5:y=(h-text_h)/5[out]" -map "[out]" -map 0:a -pix_fmt yuv420p -b:a 360k -r:a 44100 -c:v libx264 -q:v 23 -preset ultrafast -c:a copy -shortest out.mkv
这是图像顶部的“驻波”效果,并带有叠加的文本(例如曲目名称)
所以我从 unsplash 中取出一张 JPG 图像,将其作为“image.jpg”放入文件夹中。然后我取出 audio.mp3 并将其与波形效果组合成 480p 视频。我想你可以将 480p 调整为高清。
[