video - 是否可以使用 ffmpeg 垂直旋转 showwaves(或 showfreqs)覆盖?
问题描述
我希望使用 ffmpeg 进行showwaves
(或showfreqs
)叠加并垂直居中,例如
ffmpeg -i input.mp3 -filter_complex "[0:a]showspectrum=color=fiery:saturation=2:slide=scroll:scale=log:win_func=gauss:overlap=1:s=960x1080,pad=1920:1080[vs]; [0:a]showspectrum=color=fiery:saturation=2:slide=rscroll:scale=log:win_func=gauss:overlap=1:s=960x1080[ss]; [0:a]showwaves=s=1920x540:colors=B80000|950000|690000:mode=p2p,inflate[sw]; [vs][ss]overlay=w[out]; [out][sw]overlay=0:(H-h)/2[out]" -map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 -c:a copy output.mkv
如上所示,showwaves
输出水平居中。但是也可以让它垂直居中吗?具体来说,使用单个-filter_complex
命令参数?
我查看了 ffmpeg 手册并在 stackoverflow 中搜索了答案,但无济于事。
解决方案
使用转置过滤器。
ffmpeg -i input.mp3 -filter_complex "[0:a]showspectrum=color=fiery:saturation=2:slide=scroll:scale=log:win_func=gauss:overlap=1:s=960x1080,pad=1920:1080[vs]; [0:a]showspectrum=color=fiery:saturation=2:slide=rscroll:scale=log:win_func=gauss:overlap=1:s=960x1080[ss]; [0:a]showwaves=s=1080x540:colors=B80000|950000|690000:mode=p2p,inflate,transpose=cclock[sw]; [vs][ss]overlay=w[out]; [out][sw]overlay=(W-w)/2:0[out]" -map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 -c:a copy output.mkv
推荐阅读
- vb.net - 将项目从 listbox1 移动到 listbox2 并返回 vbnet winform
- postgresql - 将 Docker Postgres 容器连接到现有的空数据库
- lua - 使用字符在表中查找值?
- python - 尝试将已散列到 AWS S3 存储桶的文件名上传
- corda - Corda 4 - 如何将 CordaX500Name 派对对象转换为字符串
- javascript - 使用 lodash 将数据转换为对象属性而不是集合
- java - AWS SNS 发布短信“à é è ...”不起作用
- vue.js - vue.js,延迟加载路线,块错误
- javascript - Chrome 扩展:从 background.js 调用 contentscript.js 中的函数
- c# - 更新目录中的 XML 文件