前言:为什么要写这么一篇文章呢?因为我录了一套视频,关于python数据分析可视化的基础入门,然后又买不起录音设备,自己的电脑又老得不行,所以在视频里面伴随着经久不衰的“嗡嗡~”声,然后咱们办呢?就算不是我这么穷的人,我想也遇到过,但是那些处理视频的软件实在是太大,动辄好几百兆。。。。我孱弱的电脑,不想再背负这些了,所以google吧~

 总得来说参考了下面两篇文章,第一篇文章几乎是所有思路,然后第二篇是关于ffpmeg的参数讲解。

 虽然是用脚本,但是搞定得用到一些工具,所以第一步安装

 需要软件:

 git bash    下载地址:https://git-scm.com/download/

 ffmpeg     下载地址:https://ffmpeg.zeranoe.com/builds/

 sox       下载地址:https://sourceforge.net/projects/sox/files/sox/


 第一个自然是windows下面的bash环境了,作为命令行的死忠粉,只能没有命令行。

 第二个比较鼎鼎大名了。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

 第三个用来处理音频。

 

 第一个,第三个基本下载安装就OK了,而第三个只要解压就行。

 最后就ffmpeg,sox的命令加入windows环境变量PATH即可。

  简单来书就是,计算机-->属性-->高级-->系统环境变量-->找到PATH-->然后添加自己相应的安装目录。

 效果如下:

python 去除音频背景声音 python 去噪音_ffmpeg

 关于处理视频噪声,主要四步:

 一 分离视频流跟音频流(就是一个只有画面没有声音,一个没有画面只有声音。)

 二 噪声取样(只要录一段没有不讲话的视频不就OK了么)

 三 将分离出来的音频去噪。

 四 将去噪的音频跟之前分离出来的视频合并起来,就ok了。

 

 怎么批量呢?用shell脚本for一个循环不就OK了么~~~


 其实总得来说,这个脚本不超过十行。

 

 首先进行第一步,视频,音频分离。



1



2



3



4


#-an代表不要音频,可能是audio no的缩写



ffmpeg.exe -i 源视频.mp4 -an 输出视频.mp4



#-vn代表不要视频画面,可能是video no的缩写



ffmpeg.exe -i 源视频.mp4 -vn 输出音频.wav




 然后第二步,噪音取样(其实我们只要取一遍),简单录制一小节大于一秒的视频,只有噪音。



1



2



3



4


#-ss代表起始时间,-t代表时间间隔,我们取一秒,最后的文件名都是输出文件名



ffmpeg -i 噪音视频.mp4 -vn -ss 00:00:00 -t 00:00:01 分离出来的噪音.wav



#通过sox我们将噪音的特征提取出来,然后就需要这个.prof文件



sox 分离出来的噪音.wav -n noiseprof 噪音样本.prof




 第三步,将分离出来的音频去噪



1



2


#注意后面的0.21,根据google到说明,是说值最好在0.2到2.3之间,为什么0.21是因为别人试验后最好的效果,可以自己做相应的调试,取值在0.2到0.3即可



sox 输出音频.wav 去噪的音频.wav noisered 噪音样本.prof 0.21




 最后一步。合并视频跟去噪的音频



1


ffmpeg.exe -i 去噪的音频.wav -i 输出视频.mp4 最终视频文件.mp4




 然后我们写成脚本吧。



1



2



3



4



5



6



7



8



9


set  -x



for  in  ` ls  *mp4`; do



f=$i



filename=${f%.*}



ffmpeg.exe -i $i -an -qscale 0 reduce/$filename.an.mp4;



ffmpeg.exe -i $i -vn reduce/$filename.wav



sox.exe reduce/$filename.wav reduce/$filename.clean.wav noisered samplenoise.prof 0.21



ffmpeg.exe -i reduce/$filename.clean.wav -i reduce/$filename.an.mp4 reduce/$filename.clean.mp4



done




首先将文件名提取出来,然后依次分离,去噪,合并,这里之所以没有重复提取噪音的那一步,因为我们提取一次就行了~~~我们将处理的文件统一放在reduce这个文件夹。

注:加入的

-qscale 0 代表不压缩,即不损害视频质量,传说中的原画,哈哈~



后记:虽然在一定意义上,是基本去除了噪音,但是因为取的很粗糙,所以还是会在视频中人声的部分,人声会伴随一定量的电子杂音,所以完全之策是换个电脑或者买个录音设备,哈哈~~~