使用python實(shí)現(xiàn)將視頻中的音頻分離出來(lái)
將視頻中的音頻分離出來(lái)
簡(jiǎn)單介紹
使用python將音頻從視頻當(dāng)中分離出來(lái),形成一個(gè)mp3格式的音樂(lè)。
使用環(huán)境和模塊
1.python 3.7
2.moviepy----用于視頻編輯的Python模塊,可用于基本操作(如剪切、連接、標(biāo)題插入以及視頻合成、視頻處理或創(chuàng)建高級(jí)效果。它可以讀寫(xiě)最常見(jiàn)的視頻格式,包括GIF。
可直接使用如下命令進(jìn)行安裝:
pip install moviepy -i https://pypi.douban.com/simple
相關(guān)代碼
‘'' ##從視頻中獲取音頻 from moviepy.editor import VideoFileClip,AudioFileClip,afx video = VideoFileClip(“Why Don't We-What Am I.mp4”) audio = video.audio audio.write_audiofile(‘what am I.mp3') ‘''
運(yùn)行上述代碼后,自動(dòng)生成一個(gè)mp3格式音頻
效果圖如下
批量提取視頻中的音頻
1. python 提取視頻中的音頻
將視頻中的音頻分離出來(lái),另存為MP3
方法1:FFmpeg
方法2:moviepy
2. 批量提取【目錄】
提取單個(gè)文件、提取目錄下所有視頻的音頻
1. python 提取視頻中的音頻
1.1 方法1:
使用 FFmpeg 方法提取音頻
提取代碼如下:
import os from ffmpy import FFmpeg # 獲取文件名稱(chēng) def getName(video_path): return os.path.basename(video_path).split('.')[0] # 提取并另存為 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 # 參數(shù)接受處理 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(getName(video_path), ext)), ext) if __name__ == '__main__': root = "D:\\study\\project\\python\\技巧\\提取視頻音頻\\" print(extract(root + '我是不是該安靜的走開(kāi).mp4', root, 'mp3'))
1.2 方法2:
moviepy
from moviepy.editor import * root = "D:\\study\\project\\python\\技巧\\提取視頻音頻\\" audio = VideoFileClip(root + "我是不是該安靜的走開(kāi).mp4").audio audio.write_audiofile(root + "我是不是該安靜的走開(kāi).mp3")
2. 批量提取【目錄】
提取目錄下所有視頻中的音頻,將所有音頻保存在新的目錄中,文件相對(duì)目錄對(duì)應(yīng)
from moviepy.editor import * import os import filetype import argparse # 修改這里啊 root = "C:\\Users\\26590\\Videos\\智慧城市\(zhòng)\" rootVoice = "C:\\Users\\26590\\Videos\\智慧城市voice\\" voiceType = "mp3" videoType = "video/mp4" # 獲取文件名稱(chēng) def getName(video_name): return os.path.basename(video_name).split('.')[0] # 修改文件后綴例如: C:/dir/a/b.png 需要轉(zhuǎn)為 C:/dir/a/b.jpg 調(diào)用函數(shù):trAffter('C:/dir/a/b.png', 'jpg') def trAffter(path, type): a = path.split('/') b = a[-1].split('.') b[-1] = voiceType a[-1] = '.'.join(b) return '/'.join(a) # 提取音頻 def extractMp3(video_path): print("提取文件:", video_path) audio = VideoFileClip(video_path).audio # 音頻保存的路徑 voice_path = video_path.replace(root, rootVoice) print("\t音頻保存至:", trAffter(voice_path, voiceType)) audio.write_audiofile(trAffter(voice_path, voiceType)) # 遍歷目錄下的所有文件 def getVideoList(path): # 是否為文件 if not os.path.isdir(path): ft = filetype.guess(path) if ft is not None and ft.mime == videoType: extractMp3(path) else: print(f"跳過(guò)文件{path}") return # 遞歸遍歷 for dir in os.listdir(path): # 音頻保存的路徑目錄不存在新建 voice_path = path.replace(root, rootVoice) if not os.path.exists(voice_path): os.makedirs(voice_path) getVideoList(os.path.join(path, dir)) # 開(kāi)始 getVideoList(root)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Centos5.x下升級(jí)python到python2.7版本教程
這篇文章主要介紹了Centos5.x下升級(jí)python到python2.7版本教程,本文使用編譯安裝方式,并配置了一系列需要更改的配置項(xiàng),需要的朋友可以參考下2015-02-02django 自定義過(guò)濾器的實(shí)現(xiàn)
這篇文章主要介紹了django 自定義過(guò)濾器的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02python數(shù)據(jù)操作之lambda表達(dá)式詳情
這篇文章主要介紹了python數(shù)據(jù)操作之lambda表達(dá)式詳情,文章基于python的相關(guān)資料展開(kāi)lambda表達(dá)式具體的內(nèi)容,感興趣的小伙伴可以參考一下2022-05-05安裝python3的時(shí)候就是輸入python3死活沒(méi)有反應(yīng)的解決方法
下面小編就為大家分享一篇安裝python3的時(shí)候就是輸入python3死活沒(méi)有反應(yīng)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Python的條件表達(dá)式和lambda表達(dá)式實(shí)例
今天小編就為大家分享一篇Python的條件表達(dá)式和lambda表達(dá)式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python-xpath獲取html文檔的部分內(nèi)容
這篇文章主要介紹了python-xpath獲取html文檔的部分內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03