码迷,mamicode.com
首页 > 其他好文 > 详细

用脚本批量消除视频噪声

时间:2016-04-15 23:10:34      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:脚本   ffmpeg   视频去噪   sox   

  前言:为什么要写这么一篇文章呢?因为我录了一套视频,关于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

用脚本批量消除视频噪声

标签:脚本   ffmpeg   视频去噪   sox   

原文地址:http://youerning.blog.51cto.com/10513771/1764295

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!