选择你的管道

选择你的管道

我有这个命令需要作为我的服务器上的后台任务运行:

sox some-audio-file.foo -c 1 -t wav - | wav2png -w -o some-audio-file.png /dev/stdin

但是我已经使用ffmpeg所有正确的编解码器进行了自定义编译(这是一个非常痛苦的过程),我宁愿避免安装sox并再次经历同样的痛苦。

所以我想知道,我可以将音频传输到wav2png管道ffmpeg吗?等效命令是什么ffmpeg?我在 Google 上搜索了一段时间,但尝试过的方法均无效。

答案1

选择你的管道

未经测试的示例:

ffmpeg -i audio.foo -ac 1 -f wav - | wav2png -o audio.png /dev/stdin

或者你可以使用UNIX 管道访问协议

ffmpeg -i audio.foo -ac 1 -f wav pipe: | wav2png -o audio.png /dev/stdin

笔记

  • -ac 1被添加到混音到单声道,因为目前wav2png 使用所有通道的最大值,但这个选项可能是多余的。

  • 您可以使用任何包含音频并ffmpeg可以解码的输入类型。

  • 如果您只想输出特定频道,请使用选项-map_channel例子)。

  • 简单地使用-而不是/dev/stdin可能会有效,但我没有尝试。

音频可视化

如果你想创建波形视频,请使用秀波滤波器

ffmpeg -i audio.foo -filter_complex \
"[0:a]showwaves=mode=line,format=yuv420p[v]" \
-map "[v]" -map 0:a -c:a copy output.mp4

或者使用过滤器组合: 可视化音乐的视频截图

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

如何为 YouTube 和其他视频共享网站编码视频

相关内容