視頻中抽音頻
[shell]
ffmpeg -i $ID.mp4 -acodec libmp3lame -ac 1 -ar 16000 $ID.mp3
-i: 表示輸入的音頻或視頻
-ac: channel 設置通道3, 默認爲1
-ar: sample rate 設置音頻採樣率
-acodec: 使用codec編解碼
-ab: bitrate 設置音頻碼率
-vn: 不做視頻記錄
libmp3lame: 使用libmp3lame編碼mp3
[python]
# -*- coding: utf-8 -*-
from moviepy.editor import *
import time
start = time.clock()
def audio_extract(video_path, audio_path):
# 如果有同名的音頻文件,先刪除
if os.path.exists(audio_path) == True:
os.remove(audio_path)
print("舊音頻文件已經刪除")
res = {
"function":"audio_extract",
"status":True
}
start = time.clock()
try:
video = VideoFileClip(video_path)
video_duration = video.duration
audio = video.audio
# 注意ffmpeg是否安裝
# 16k採樣,單聲道(ac=1), 2 for 16位
audio.write_audiofile(audio_path, fps=16000, nbytes=2, ffmpeg_params=['-ac','1'])
audio_duration = audio.duration
if audio_duration != video_duration:
print("音頻抽取只抽取了部分")
res["status"] = False
else:
res["audio_duration"] = audio_duration
except BaseException as e:
print(e)
print("音頻抽取失敗")
res["status"] = False
end = time.clock()
res["extract_duration"] = end - start
print(res)
return res
if __name__ == '__main__':
video_path = "36b985331546f03fb6362e2cf47b2f0e442582.flv.mp4"
# 此處音頻後綴決定抽取出來的音頻是什麼格式
audio_path = "36b985331546f03fb6362e2cf47b2f0e442582.flv.wav"
audio_extract(video_path, audio_path)
參見:
http://zulko.github.io/moviepy/
https://www.cnblogs.com/liuyihua1992/p/9582217.html