前言:为什么要写这么一篇文章呢?因为我录了一套视频,关于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-->然后添加自己相应的安装目录。
关于处理视频噪声,主要四步:
一 分离视频流跟音频流(就是一个只有画面没有声音,一个没有画面只有声音。)
二 噪声取样(只要录一段没有不讲话的视频不就OK了么)
三 将分离出来的音频去噪。
四 将去噪的音频跟之前分离出来的视频合并起来,就ok了。
怎么批量呢?用shell脚本for一个循环不就OK了么~~~
其实总得来说,这个脚本不超过十行。
首先进行第一步,视频,音频分离。
#-an代表不要音频,可能是audio no的缩写 ffmpeg.exe -i 源视频.mp4 -an 输出视频.mp4 #-vn代表不要视频画面,可能是video no的缩写 ffmpeg.exe -i 源视频.mp4 -vn 输出音频.wav
然后第二步,噪音取样(其实我们只要取一遍),简单录制一小节大于一秒的视频,只有噪音。
#-ss代表起始时间,-t代表时间间隔,我们取一秒,最后的文件名都是输出文件名 ffmpeg -i 噪音视频.mp4 -vn -ss 00:00:00 -t 00:00:01 分离出来的噪音.wav #通过sox我们将噪音的特征提取出来,然后就需要这个.prof文件 sox 分离出来的噪音.wav -n noiseprof 噪音样本.prof
第三步,将分离出来的音频去噪
#注意后面的0.21,根据google到说明,是说值最好在0.2到2.3之间,为什么0.21是因为别人试验后最好的效果,可以自己做相应的调试,取值在0.2到0.3即可 sox 输出音频.wav 去噪的音频.wav noisered 噪音样本.prof 0.21
最后一步。合并视频跟去噪的音频
ffmpeg.exe -i 去噪的音频.wav -i 输出视频.mp4 最终视频文件.mp4
然后我们写成脚本吧。
set -x for i 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 代表不压缩,即不损害视频质量,传说中的原画,哈哈~
后记:虽然在一定意义上,是基本去除了噪音,但是因为取的很粗糙,所以还是会在视频中人声的部分,人声会伴随一定量的电子杂音,所以完全之策是换个电脑或者买个录音设备,哈哈~~~
本文出自 “又耳笔记” 博客,请务必保留此出处http://youerning.blog.51cto.com/10513771/1764295
原文地址:http://youerning.blog.51cto.com/10513771/1764295