diff options
Diffstat (limited to 'opt/noNoise-master/noNoise.py')
-rw-r--r-- | opt/noNoise-master/noNoise.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/opt/noNoise-master/noNoise.py b/opt/noNoise-master/noNoise.py new file mode 100644 index 0000000..cfff188 --- /dev/null +++ b/opt/noNoise-master/noNoise.py @@ -0,0 +1,113 @@ +#!/usr/bin/python env + +"""This script can be used to remove audio noise from 'ogv' videos. + + Usage:(for future Srikant & all users) + + 1)Remove noise from a single file: + ---------------------------------- + $ python noNoise.py VideoWithNoise.ogv CleanVideo.ogv + (source file) (destination file) + + (OR) + + $ python noNoise.py VideoWithNoise.ogv CleanVideo.ogv 0.21 + (source file) (destination file) (noise factor) + + The third argument is optional(Noise factor). The scale spans from + 0.0 to 1.0. Zero means no noise supression and 1.0 means full. The full + scale is avoided. Best optimum result is found between 0.2 to 0.3. By default + script will take 0.26. One can experiment with noise factor to get best noise + free video. + NOTE: Careful, destination file will be overwritten if exist in given path. + + + + 2)Remove noise from all files inside a directory: + ------------------------------------------------- + $ python noNoise.py allNoisyFiles allCleanFiles + (source dir) (destination dir) + + (OR) + + $ python noNoise.py allNoisyFiles allCleanFiles 0.21 + (source Dir) (destination dir) (Noise factor) + + + NOTE: Please don't use any '/' after directory name. It will spit error. + The fix is possible, but I don't want to spend time on it. This script is dirty + but useful(atleast for me). When I find time, I will surely modify it. Meanwhile + you all are welcome to add modifications. Please find this copy and future updates + at http://github.com/srikantpatnaik. + Thanks for your time. + + Details of each commands are in README.rst. + +""" + +from os import system, path, listdir, chdir, mkdir +from sys import argv +from time import sleep + +def checkType(): + #Check for type of first argument(file or dir). + if path.isdir(argv[1]): + processDir() + else: + processFile() + return + + +def processDir(): + #make dir to save all new files + mkdir(argv[2]) + #cd to source dir + chdir(argv[1]) + for eachfile in listdir('.'): + execute(setCommands(eachfile)) + return + + +def processFile(): + #Calling setCommands with source file. + #Will return list of commands to be executed + execute(setCommands(argv[1])) + return + + +def execute(cli): + #total 7 commands with some delay for disk + #write and sync + for each in cli: + system(each) + sleep(0.2) + return + + +def setCommands(filename): + #The dirty function. + cli = [None]*7 + cli[0] = 'ffmpeg -i ' + ' ' + filename + ' -sameq -an ' + '.rawVideo.wmv' + cli[1] = 'ffmpeg -i ' + ' ' + filename + ' -sameq ' + '.rawAudio.wav' + cli[2] = 'sox .rawAudio.wav -t null /dev/null trim 0 0.5 noiseprof myprofile' + #Checks for noise factor. + if len(argv)>3: + cli[3] = 'sox .rawAudio.wav .noisefree.wav noisered myprofile ' + argv[3] + else: + #The default value for noise factor is 0.26. Change accordingly. + cli[3] = 'sox .rawAudio.wav .noisefree.wav noisered myprofile 0.26' + #Creating a less compressed file to retain video quality. + cli[4] = 'ffmpeg -i .noisefree.wav -i .rawVideo.wmv -sameq .combined.wmv' + #Checks for file or directory. If dir, the output is saved in different directory. + if not path.isfile(argv[1]): + cli[5] = 'ffmpeg2theora .combined.wmv -o ' + '../' + argv[2] + '/' + filename + else: + #Will create the final ogv video from wmv. + cli[5] = 'ffmpeg2theora .combined.wmv -o ' + argv[2] + cli[6] = 'rm .rawVideo.wmv .rawAudio.wav .noisefree.wav .combined.wmv myprofile' + return cli + + + +if __name__ == '__main__': + checkType() |