熱線電話:13121318867

登錄
首頁精彩閱讀幾行代碼迅速提取音頻,YYDS
幾行代碼迅速提取音頻,YYDS
2022-03-11
收藏
幾行代碼迅速提取音頻,YYDS

作者:閑歡

來源:Python 技術

前幾天,有個小妹妹問我:哪里可以找到 BBC 英語的音頻?

她只有視頻文件,但是她想在路上聽音頻學英語。

我當時就去網盤資源里面搜索,廢了好大功夫才找到她要的資源。

今天,突發奇想:為什么不用程序將視頻中的音頻給提取出來呢?

于是,查閱了相關資料,發現其實這事用 Python 實現非常簡單,幾行代碼,眨眼功夫就可以搞定!

FFmpeg 簡介

FFmpeg 是一個自由軟件,可以運行音頻和視頻多種格式的錄影、轉換、流功能,包含了 libavcodec ——這是一個用于多個項目中音頻和視頻的解碼器庫,以及 libavformat ——一個音頻與視頻格式轉換庫。

在 Python 中,有一個庫跟 FFmpeg 對應,叫 ffmpy,利用這個庫,我們就可以很輕松地從視頻中提取音頻了。

安裝這個庫的方式也很簡單:

pip install ffmpy -i https://pypi.douban.com/simple

代碼實現

我們只需要傳入三個參數——視頻地址、音頻結果存放地址和音頻的格式后綴,就可以調用 FFmpeg 提取音頻了。

def run_ffmpeg(video_path: str, audio_path: str, format: str): ff = FFmpeg(inputs={video_path: None},
                outputs={audio_path: '-f {} -vn'.format(format)})
    ff.run() return audio_path

然后,再寫個接收參數的函數:

def extract(video_path: str, tmp_dir: str, ext: str):
    file_name = '.'.join(os.path.basename(video_path).split('.')[0:-1]) return run_ffmpeg(video_path, os.path.join(tmp_dir, '{}.{}'.format(uuid.uuid4(), ext)), ext)

最后,我們來測試一下:

if __name__ == '__main__': print(extract('C:/個人/video/test/bbc.mp4', 'C:/個人/video/test', 'wav'))

運行這個代碼,就會在你的視頻目錄生成一個文件名為 uuid 的 wav 格式音頻文件。

你也可以選擇輸出 mp3 格式的音頻。

其實,這個提取過程就等價于在命令行敲了一行命令:

ffmpeg -i C:/個人/video/test/bbc.mp4 -f wav -vn C:/個人/video/test77350be1-b2ae-4fc8-af80-da4eda463fa9.wav

總結

整個音頻提取過程的核心代碼其實就幾行,最終執行的是一個命令行的命令,可以說是相當簡單了。這段代碼可以作為一個工具類收藏著,需要用的時候可以迅速拿出來使用。今天的技能你學會了嗎?

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢