ffmpeg 您所在的位置:网站首页 au波形图 ffmpeg

ffmpeg

2023-11-14 11:28| 来源: 网络整理| 查看: 265

利用ffmpeg获取音频波形图

音频数据通常用波形图像表示。

目录

利用ffmpeg获取音频波形图

波形图像

1.所有通道

2.模拟立体声

3.分离通道

4.变化的范围

5.添加一个背景

6.波形的视频

使用Gnuplot

1.单通道

波形图像

showwavespic是创建波形图像的最简单方法。

 

1.所有通道 ffmpeg -i PRC.mp3 -filter_complex "showwavespic=s=640x120" -frames:v 1 output1.png

 

所有通道将由波形中的各种阴影表示。

 

2.模拟立体声

 

ffmpeg -i PRC.mp3 -filter_complex "aformat=channel_layouts=mono,showwavespic=s=640x120" -frames:v 1 output2.png

如果你想要一个更简单的表现,即所有的通道都是由一个波形表示,你可以先用aformat把你的音频混音成mono:

3.分离通道 ffmpeg -i PRC.mp3  -filter_complex "showwavespic=s=640x240:split_channels=1" -frames:v 1 output3.png

 

4.变化的范围

如果波形看起来有点平,你可以使用compand过滤器来扩展或压缩动态范围:

ffmpeg -i PRC.mp3 -filter_complex "compand,showwavespic=s=640x120" -frames:v 1 output4.png

请注意,这将不像没有compand时那样精确,但对于美学而言,它可能是首选的。

5.添加一个背景

使用覆盖:

ffmpeg -i input -i background.png -filter_complex "[0:a]showwavespic=s=640x240[fg];[1:v][top]overlay=format=auto" -frames:v 1 output5.png

本例假设背景的宽度和高度与波形相同。如果不是,你可以先缩放、裁剪或填充背景。

波形颜色可以通过showwavespic中的颜色选项进行修改。

 

6.波形的视频 ffmpeg -i PRC.mp3 -filter_complex "[0:a]showwaves=s=1280x720:mode=line,format=yuv420p[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy output.mkv

我这里只截取了三张波形图

使用Gnuplot 1.单通道

绘制单个通道波形比较容易,因为数据可以直接传递给Gnuplot。这里的基本思想是为音频数据生成特定的二进制格式,然后可以使用Gnuplot自动读取和解释这些数据。

 

下面的命令将生成一个原始二进制数据流,其中两个字节表示每个示例。只要有音频流,输入格式并不重要。如果是一个多声道的音频流,这些声道将被混合成一个。

ffmpeg -i in.mkv -ac 1 -map 0:a -c:a pcm_s16le -f data -

由于音频通常伴随着每秒大量的采样(例如CD音频每秒44100个采样),因此减少数据量以提高速度和减少内存消耗通常是一个好主意。注意,减少采样太多可能会扭曲生成的波形。一个好的值通常是每秒8000个样本。修改后的命令行如下:

ffmpeg -i "$1" -ac 1 -filter:a aresample=8000 -map 0:a -c:a pcm_s16le -f data -

现在剩下的是让Gnuplot根据这些数据创建波形图像。为此,我们需要一个plot命令来处理FFmpeg的输出。

 plot '


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有