【问题标题】:ffmpeg showwaves - Change color of waveform on top of an imageffmpeg showwaves - 更改图像顶部波形的颜色
【发布时间】:2020-04-08 23:23:40
【问题描述】:

我需要 ffmpeg 方面的帮助。

我写了这段代码:

@echo off  
for %%F in (*.opus *.ogg) do 
(  
  ffmpeg -y -i "%%F" -loop 1 -i "default.jpg" -filter_complex " 
 [0:a]showwaves=s=2560x1440:mode=cline:r=30,colorkey=0x000000:0.01:0.1,format=yuva420p[v];
[1:v][v]overlay[outv]" -map "[outv]" -pix_fmt yuv420p -map 0:a -vcodec libvpx-vp9 -lossless 1 -speed 8 -acodec copy -shortest "%%~nF.webm" 
)

它的作用是,对于每个 .opus 或 .ogg 音频文件,它会输出一个带有 default.jpg 背景图像(全白)和顶部波形的视频,并播放音频。 问题是,我会将波形的颜色更改为黑色,但即使在阅读文档后我也不明白 colorkey 的工作原理......

基本上,我想获得这样的东西(但波形为黑色):https://www.youtube.com/watch?v=k9arneFijG8

提前致谢。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    您可以在showwaves 过滤器中使用colors 选项:

    ffmpeg -i input.opus -loop 1 -framerate 30 -i default.jpg -filter_complex "[0:a]aformat=channel_layouts=mono,showwaves=s=2560x1440:mode=cline:r=30:colors=black[v];[1:v][v]overlay=format=auto:x=(W-w)/2:y=(H-h)/2,format=yuv420p[outv]" -map "[outv]" -map 0:a -c:v libvpx-vp9 -c:a copy -shortest output.webm
    

    或者,既然你说default.jpg 是完全白色的,你可以让ffmpeg 生成白色背景,而不是使用color 源过滤器:

    ffmpeg -y -i input.opus -f lavfi -i color=size=2560x1440:rate=30:color=white -filter_complex "[0:a]aformat=channel_layouts=mono,showwaves=size=2560x1440:mode=cline:rate=30:colors=black[v];[1:v][v]overlay=format=auto:x=(W-w)/2:y=(H-h)/2,format=yuv420p[outv]" -map "[outv]" -map 0:a -c:v libvpx-vp9 -c:a copy -shortest output.webm
    
    • color=size=2560x1440:rate=30:color=white 制作 2560x1440 的白色背景,帧率为 30。

    • aformat=channel_layouts=mono 使用aformat 过滤器制作音频单声道,然后将其提供给 showwaves,这样每个通道就有一个组合波形而不是一个波形。这不会影响将放在输出文件中的音频。

    • [1:v][v]overlay=format=auto:x=(W-w)/2:y=(H-h)/2overlay 过滤器。它将使用-i color ([1:v]) 作为背景,前景是来自名为[v] 的aformat + showwaves filterchain(通过逗号连接的一组线性过滤器的统称)的输出。如果您不喜欢 [v],可以将其命名为任何名称。 format 叠加选项将选择最佳色彩空间,x=(W-w)/2 以 x 轴为中心,y=(H-h)/2 以 y 轴为中心。

    • format=yuv420pformat 过滤器,并使 filtergraph所有过滤器的统称)的输出为 yuv420p 像素格式,以实现播放兼容性原因。虽然它具有相同的名称,但这是一个过滤器,并且不同于覆盖过滤器中的format 选项

    • [outv] 是我给所有过滤器的最终输出的任意名称。

    • -map "[outv]" -map 0:a 告诉 ffmpeg 仅将过滤器输出和来自input.opus 的音频包含到输出文件中。

    【讨论】:

    • 谢谢!它工作得很好:) 你碰巧知道如何让它看起来像视频中的那个吗?我的意思不是颜色,而是可视化本身。
    • @GrantSYNKOP 不。您必须使用其他工具才能获得这种外观。
    • 对,我明白这不是 ffmpeg 的目的。再次感谢你!这很有帮助。
    • 谢谢洛根!你能教我们如何配置 ffmpeg 命令。例如这意味着什么:format=auto:x=(W-w)/2:y=(H-h)/2,format=yuv420p[outv]" -map "[outv]" -map 0:a
    • 哇哇洛根!非常感谢您花时间教我们!
    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2018-10-24
    相关资源
    最近更新 更多