視頻抽音頻 相關操作(ffmpeg)

視頻中抽音頻

[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

發佈了111 篇原創文章 · 獲贊 44 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章