Python從視頻中提取音頻的操作
簡(jiǎn)介
OpenCV中使用VideoCapture類寫的視頻是沒(méi)有音頻的,如果要進(jìn)一步處理音頻則需要用到一個(gè)庫(kù)——MoviePy,這個(gè)庫(kù)是Python視頻編輯庫(kù),可裁剪、拼接、標(biāo)題插入、視頻合成、視頻處理和自定義效果。
安裝
pip install moviepy
代碼
from moviepy.editor import *
video = VideoFileClip('test.mp4')
audio = video.audio
audio.write_audiofile('test.mp3')
不安裝moviepy視頻編輯庫(kù)可以直接使用ffmpeg-python庫(kù),見(jiàn)參考文獻(xiàn)4,代碼稍微復(fù)雜點(diǎn)
音頻格式
extensions_dict = { "mp4": {'type':'video', 'codec':['libx264','libmpeg4', 'aac']},
'ogv': {'type':'video', 'codec':['libtheora']},
'webm': {'type':'video', 'codec':['libvpx']},
'avi': {'type':'video'},
'mov': {'type':'video'},
'ogg': {'type':'audio', 'codec':['libvorbis']},
'mp3': {'type':'audio', 'codec':['libmp3lame']},
'wav': {'type':'audio', 'codec':['pcm_s16le', 'pcm_s24le', 'pcm_s32le']},
'm4a': {'type':'audio', 'codec':['libfdk_aac']}
}
可看到支持ogg、mp3、wav和m4a四種格式,個(gè)人測(cè)試m4a輸出失敗,建議只用mp3和wav
測(cè)試2分鐘的視頻導(dǎo)出mp3為1.83Mb,wav為20.1Mb
mp3是有損格式,wav是無(wú)損格式,按需選擇
備注
要實(shí)現(xiàn)更底層的音視頻處理應(yīng)用ffmpeg
補(bǔ)充:python處理mp4視頻提取音頻轉(zhuǎn)為mp3或者wav,并進(jìn)行截取
mp4視頻文件提取音頻轉(zhuǎn)為mp3或者wav文件
mp3是有損文件,wav是無(wú)損文件,就像我測(cè)試的視頻,mp3導(dǎo)出只有幾十k,wav文件導(dǎo)出有3M多。
from moviepy.editor import *
video = VideoFileClip('aa.mp4')
audio = video.audio
audio.write_audiofile('test.wav')
audio.write_audiofile('test.mp3')
截取map或者wav文件
from scipy.io import wavfile
like = wavfile.read('test.wav')
# print (like)
# 音頻結(jié)果將返回一個(gè)tuple。第一維參數(shù)是采樣頻率,單位為秒;第二維數(shù)據(jù)是一個(gè)ndarray表示歌曲,如果第二維的ndarray只有一個(gè)數(shù)據(jù)表示單聲道,兩個(gè)數(shù)據(jù)表示立體聲。所以,通過(guò)控制第二維數(shù)據(jù)就能對(duì)歌曲進(jìn)行裁剪。
# 對(duì)like這個(gè)元組第二維數(shù)據(jù)進(jìn)行裁剪,所以是like[1];第二維數(shù)據(jù)中是對(duì)音樂(lè)數(shù)據(jù)切分。 start_s表示你想裁剪音頻的起始時(shí)間;同理end_s表示你裁剪音頻的結(jié)束時(shí)間。乘44100 是因?yàn)槊棵胄枰M(jìn)行44100次采樣
# 這里表示對(duì)該音頻的13-48秒進(jìn)行截取
wavfile.write('test2.wav',44100,like[1][13*44100:48*44100])
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題解決方案
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)登錄注冊(cè)常見(jiàn)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
最大K個(gè)數(shù)問(wèn)題的Python版解法總結(jié)
這篇文章主要介紹了最大K個(gè)數(shù)問(wèn)題的Python版解法總結(jié),以最大K個(gè)數(shù)問(wèn)題為基礎(chǔ)的算法題目在面試和各大考試及競(jìng)賽中經(jīng)常出現(xiàn),需要的朋友可以參考下2016-06-06
python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解
今天小編就為大家分享一篇python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python集成開(kāi)發(fā)環(huán)境pycharm配置git的實(shí)現(xiàn)步驟
本文主要介紹了Python集成開(kāi)發(fā)環(huán)境pycharm配置git的實(shí)現(xiàn)步驟,文中通過(guò)圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05

