最近為了學python爬蟲,在論壇里找了不少視頻教程,非常棒。但有時看視頻不方便,就想著能否把視頻批量轉碼成音頻,這樣在乘坐地鐵公交的時候也能學習了。
解決路徑:
有了需求,我首先在論壇里搜了下有沒有這樣的軟件,還真有,我也下了,但體驗并不是特別好。
然后我其實知道QQ影音是帶有轉碼的功能的,功能很強大,但有個缺陷就是每次只能添加一個文件夾下的視頻,并不能直接轉碼父文件夾下包括子文件夾內的文件。
功能介紹:
1、批量將父文件夾下及子文件夾內所有的MP4或者avi格式的文件自動轉碼成MP3音頻格式;
2、自動刪除MP4格式的文件;(加此段代碼的目的是方便直接將轉碼后的文件夾下的音頻文件拷入手機,而不拷視頻文件,如不需要自行刪除。)
代碼關鍵部分說明:
既然現有的工具并不能解決我的需求,那我就準備自己用python實現個,剛好練練手。說干就干。
1、glob模塊 官方文檔
主要功能是匹配所有的符合條件的文件,并將其以list的形式返回。通過pip安裝即可。
2、pydub模塊官方文檔
主要功能是處理音頻文件,依賴于ffmpeg,所以還需要安裝ffmpeg。通過pip安裝即可。
3、ffmpeg官方文檔
視頻轉音頻就是依靠這個。
從上面的網站下載后,將path添加到環境變量中去,具體操作可以參考鏈接
import osimport globfrom pydub import AudioSegment wenjianjia = []path = input('請輸入要轉碼的父文件夾路徑:')for root, dirs, files in os.walk(path): wenjianjia.append(root)wjj = wenjianjia for dir in wjj: video_dir = dir extension_list = ('*.mp4', '*.flv') i=1 os.chdir(video_dir) for extension in extension_list: for video in glob.glob(extension): mp3_filename = os.path.splitext(os.path.basename(video))[0] + '.mp3' AudioSegment.from_file(video).export(mp3_filename, format='mp3') print('已轉碼', str(i) ,'個視頻!') i += 1 for infile in glob.glob(os.path.join(video_dir, '*.mp4')): os.remove(infile)