生成表示音频的图像堆栈

audio_displa的Python项目详细描述


fft2png

fft2png 是一个命令行实用程序,用于创建一组表示wav文件音频频谱的图像文件。 它是频谱分析仪输出的脱机版本,与声波蜡烛

生成的文件可以在任何接受一组图像作为输入的视频编辑工具中导入和后处理。 只要确保调用fft2png时使用的帧速率与您使用的帧速率相匹配 您的视频版本软件中的图像。libre软件能够使用这些图像,包括但不是 仅限于,钠离子

您也可以使用ffmpeg来快速预览或满足简单的需求(仅限于固定图像上的频谱 或者是视频。稍后可以找到ffmpeg用法的一些示例。

用法

< Buff行情> < DL>
用法:fft2png[-h][-d][-n][-r目标每秒数][-r{0,1,2,3}[-v]
[-w条形图宽度][-s条形图间距][-c条形图计数][-c颜色] [-b混合][-w fft_窗口][-图像高度图像_高度] [–音频最小频率音频最小频率] [–音频最大频率音频最大频率] [–静音上限静音上限]-i输入文件名]-o 输出文件名掩码

GPL V3+2015奥利维尔•乔利

< DL>
可选参数:
< D> >表> < COL/> < COL/> <正文> -h --帮助 显示此帮助消息并退出 -d --调试 调试操作[默认值:false] -n 不执行操作[默认:false] -r 目标fps --帧速率 目标fps 输出帧速率[默认值:30] <表> < DL>
-r{0,1,2,3},–渲染器{0,1,2,3}
要使用哪个渲染器来显示条形图(0=实心,1=空心,2=对称实心,3=对称空心)
<表> < COL/> < COL/> <正文> -v --版本 显示程序的版本号并退出 -w 条形图宽度 --条形图宽度 条形图宽度 输出图像中的条形宽度 -s 条形间距 --条形间距 条形间距 输出图像中的条间距 -c 条数 --条数 条数 输出图像中的条数 -c 颜色 --颜色 条形图的六色[rrggbb或rrggbbaa,默认值:ffffffff] -b 混合 --混合 混合 将以前的频谱混合到当前频谱(0= 仅显示新数据,1=使用之前的数据 新数据) -w fft窗口 --窗口 fft窗口 fft的窗口大小[默认值:4096] --图像高度 输出图像高度 --音频最小频率 输入音频的最小频率 --音频最大频率 输入音频中的最大频率 --静音天花板 与阈值相反的静默[单位:dB, 默认值:70] -i 输入文件名 以wav格式输入文件 -o输出文件名掩码 输出文件名掩码(应包含{:06}或类似 生成序列) <表>

将音频文件转换为图像堆栈

< DL>
-r
生成图像的帧速率。应该与使用它们的帧速率匹配。 较高的帧速率会产生更平滑的结果。
-r
表示一个频率的功率的条的方面。0使用填充框,1使用空心框, 2个使用垂直居中的填充框,3个使用垂直居中的空心框。
-w
每个条形图的宽度(像素)。
-s
条形图之间的间距(像素)。
-c
每个图像的条数。
-c
六边形条的颜色。可以是rgb或rgba。例如,ff0000将呈现纯不透明的红色条, 00FF0080将呈现50%透明纯绿色条,…
-b
上一帧到当前帧的混合比。当设置为0时,只有新数据将用于 渲染栏。当设置为1时,将根据新帧和前一帧数据的平均值呈现条。 中间值将前一帧数据的一部分注入当前帧数据中进行渲染。 值越低,反应谱越强,而值越高,数据越平滑,反应越慢。
-w
频谱生成窗口是音频文件中用于确定频谱原始数据的数据量。 较低的值将使频谱阻塞,但生成速度稍快。

示例

要在生成频谱时使用默认值,只需调用:

fft2png -i input.wav -o output-{:06}.png

默认fft2png设置的结果

对于稍有不同的结果,可以这样调用:

fft2png -R2 -w4 -s4 -c30 -C FF8080A0 --audio-min-freq 100 -i input.wav -o output-{:06}.png

您将得到30个对称透明的redish实心条,4像素宽,间隔4像素

红色实心对称条ff2png设置的结果


ffmpeg用法

如果您已经有一个视频作为背景,并且希望在添加一些音乐效果的同时在其上添加光谱图中心,则可以 像这样调用ffmpeg:

ffmpeg -i <background_video.mp4> -framerate <generated frames framerate> -i <audio-00%4d.png> -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1" -i <music.wav> -map 2:0 -vframes <number of generated frames> -strict -2 <output.mp4> -y
< DL>
其中:
> UL>
  • <;background_video.mp4>;是背景视频的文件名
  • <;generated frames framerate>;是生成光谱图帧时使用的帧速率
  • <;audio-00%4d.png>;是要覆盖的生成帧的掩码
  • <;music.wav>;是音乐的文件名
  • <;生成的帧数>;是生成的光谱图帧数
  • <;output.mp4>;是生成的混合视频
  • 注意事项:
    > UL>
  • 你可以用SE改变覆盖位置在绝对坐标系中设置位置,或使用一些数学方法计算主视图、主视图、覆盖视图、覆盖视图,如图所示
  • -y 用于覆盖结果文件
  • -strict-2 在我的版本/系统组合中使用aac编码可减少一些错误
  • 背景视频不会循环。目前(ffmpeg 3.0.1),循环不适用于视频。如果你的视频太短,准备一个足够长的连接几次。当输入流(背景视频、谱图图像或音乐)到达终点时,滤波器表达式中的最短值=1将停止。
  • 使用ffmpeg手册,luke
  • 如果要使用静态图像作为背景,则调用会变成如下内容:

    ffmpeg -loop 1 -i <background_image.jpg> -framerate <generated frames framerate> -i <audio-00%4d.png> -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1" -i <music.wav> -map 2:0 -vframes <number of generated frames> -strict -2 <output.mp4> -y
    

    主要的区别是循环1将背景图像循环一遍直到另一个 流结束。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    如何使用泛型在Java中生成通用方法?   java从ISO/IEC 197944图像数据文件创建图像   java实现RSA的代码有什么问题?   javascript如何将JsonArray从解析云检索到安卓?   在vaadin中上传和下载java文件   java ListView自定义适配器OnClick启动URL链接   java在一个hbox中提供两个元素的独立对齐   java用类名创建类   java从unix命令行运行jar文件   java FTP下载在文件#146处停止