亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解如何使用Python提取視頻文件中的音頻

 更新時間:2025年03月17日 10:53:29   作者:力江  
在多媒體處理中,有時我們需要從視頻文件中提取音頻,本文為大家整理了幾種使用Python編程語言提取視頻文件中的音頻的方法,大家可以根據(jù)需要進(jìn)行選擇

引言

在多媒體處理中,有時我們需要從視頻文件中提取音頻,以便進(jìn)一步處理或分析。本文將介紹如何使用Python編程語言提取視頻文件中的音頻,并提供了一個簡單的GUI界面來方便用戶操作。

1.引言部分:介紹音頻提取的背景和重要性,以及使用Python編程進(jìn)行提取的優(yōu)勢。

2.環(huán)境準(zhǔn)備:提醒讀者在運行代碼之前需要安裝FFmpeg工具,并將其路徑添加到系統(tǒng)環(huán)境變量中。

3.代碼解析:

  • 介紹主要的庫和模塊:Tkinter、messagebox、filedialog、subprocess和os。
  • 解釋代碼的主要功能和邏輯:包括單文件模式和多文件模式,以及每個模式下的具體操作步驟。
  • 對關(guān)鍵代碼進(jìn)行注釋和說明,幫助讀者理解代碼的實現(xiàn)原理。

4.單文件模式詳解:

  • 介紹單文件模式的操作流程和界面布局。
  • 解釋選擇視頻文件和音頻輸出路徑的方式。
  • 說明如何使用FFmpeg命令提取視頻文件中的音頻,并保存到指定路徑。
  • 演示單文件模式的運行效果。

5.多文件模式詳解:

  • 介紹多文件模式的操作流程和界面布局。
  • 解釋選擇視頻文件夾和音頻輸出路徑的方式。
  • 說明如何遍歷文件夾中的視頻文件,并使用FFmpeg命令逐個提取音頻。
  • 演示多文件模式的運行效果

6.總結(jié)和展望:

總結(jié)本文介紹了如何使用Python編程語言提取視頻文件中的音頻。

提醒讀者可以根據(jù)自己的需求對代碼進(jìn)行擴(kuò)展和優(yōu)化,例如添加進(jìn)度條、處理異常情況等。

展望未來可能的改進(jìn)和應(yīng)用領(lǐng)域。

代碼部分

import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
import subprocess
import os


# 單文件
def single_video_mode():
    def choose_single_video():
        video_path = filedialog.askopenfilename()
        video_input.delete(0, tk.END)
        video_input.insert(0, video_path)

    def choose_audio_output():
        audio_output_path = filedialog.asksaveasfilename(defaultextension='.wav')
        audio_output_input.delete(0, tk.END)
        audio_output_input.insert(0, audio_output_path)

    def extract_audio():
        video_path = video_input.get()
        audio_output_path = audio_output_input.get()
        command = ['ffmpeg', '-i', video_path, '-vn', '-acodec', 'pcm_s16le', audio_output_path]
        subprocess.call(command)
        messagebox.showinfo('提取完成', '音頻提取完成!')

    root.withdraw()

    single_video_window = tk.Toplevel()
    single_video_window.title('單視頻')
    single_video_window.geometry('350x200')

    video_label = tk.Label(single_video_window, text='視頻路徑:')
    video_label.place(x=32, y=3.5)

    video_input = tk.Entry(single_video_window)
    video_input.place(x=95, y=3.5)

    video_button = tk.Button(single_video_window, text='選擇視頻', command=choose_single_video, bg="#FFD45E")
    video_button.place(x=248, y=0)

    audio_output_label = tk.Label(single_video_window, text='音頻輸出路徑:')
    audio_output_label.place(x=10, y=53.5)

    audio_output_input = tk.Entry(single_video_window)
    audio_output_input.place(x=95, y=53.5)

    audio_output_button = tk.Button(single_video_window, text='選擇路徑', command=choose_audio_output, bg="#FFCCBE")
    audio_output_button.place(x=248, y=50)

    start_button = tk.Button(single_video_window, text='開始程序', command=extract_audio, bg="#499C54")
    start_button.place(x=70, y=130)

    exit_button = tk.Button(single_video_window, text='退出程序', command=root.quit, bg="#C75450")
    exit_button.place(x=220, y=130)


# 多文件
def multi_video_mode():
    def choose_videos_path():
        videos_path = filedialog.askdirectory()
        videos_path_input.delete(0, tk.END)
        videos_path_input.insert(0, videos_path)

    def choose_audio_output():
        audio_output_path = filedialog.asksaveasfilename()
        audio_output_input.delete(0, tk.END)
        audio_output_input.insert(0, audio_output_path)

    def extract_audio():
        videos_path = videos_path_input.get()
        audio_output_path = audio_output_input.get()
        for file in os.listdir(videos_path):
            if file.endswith('.mp4'):
                video_path = os.path.join(videos_path, file)
                base_name = os.path.splitext(file)[0]
                audio_path = os.path.join(audio_output_path, base_name + '.wav')
                command = ['ffmpeg', '-i', video_path, '-vn', '-acodec', 'pcm_s16le', audio_path]
                subprocess.call(command)

    root.withdraw()

    multi_video_window = tk.Toplevel()
    multi_video_window.title('多視頻')
    multi_video_window.geometry('350x200')

    videos_path_label = tk.Label(multi_video_window, text='視頻文件夾路徑:')
    videos_path_label.place(x=10, y=3.5)

    videos_path_input = tk.Entry(multi_video_window)
    videos_path_input.place(x=105, y=3.5)

    videos_path_button = tk.Button(multi_video_window, text='選擇文件夾', command=choose_videos_path, bg="#FFD45E")
    videos_path_button.place(x=255, y=0)

    audio_output_label = tk.Label(multi_video_window, text='音頻保存路徑:')
    audio_output_label.place(x=20, y=53.5)

    audio_output_input = tk.Entry(multi_video_window)
    audio_output_input.place(x=105, y=53.5)

    audio_output_button = tk.Button(multi_video_window, text='選擇路徑', command=choose_audio_output, bg="#FFCCBE")
    audio_output_button.place(x=255, y=50)

    start_button = tk.Button(multi_video_window, text='開始程序', command=extract_audio, bg="#499C54")
    start_button.place(x=70, y=130)

    exit_button = tk.Button(multi_video_window, text='退出程序', command=root.quit, bg="#C75450")
    exit_button.place(x=220, y=130)


root = tk.Tk()
root.title('歡迎使用力江視頻中提取音頻的工具')
root.geometry('200x100')
label = tk.Label(root, text="歡飲使用力江視頻提取音頻工具", fg="red")
label.place(x=10, y=10)
single_video_button = tk.Button(root, text='單視頻', command=single_video_mode, bg="#857022")
single_video_button.place(x=25, y=50)

multi_video_button = tk.Button(root, text='多視頻', command=multi_video_mode, bg="#D3F899")
multi_video_button.place(x=125, y=50)

root.mainloop()

方法擴(kuò)展

方法一:

安裝第三方庫

首先,通過第三方庫ffmpegMoviePy對視頻文件進(jìn)行操作。

pip install ffmpeg moviepy

具體代碼

import moviepy.editor as mp

def extract_audio(videos_file_path):
    my_clip = mp.VideoFileClip(videos_file_path)
    return my_clip

if __name__ == "__main__":
    file_path = r'./Greatest_art.flv'
    my_clip = extract_audio(file_path)
    my_clip.audio.write_audiofile(f'最偉大的作品.mp3')

通過修改文件路徑file_path,提取視頻文件,這里視頻文件的默認(rèn)路徑為代碼所在目錄,并對所提取到的音頻文件進(jìn)行命名。代碼與數(shù)據(jù)路徑如下:

方法二:

利用python庫moviepy或者ffmpeg處理

# 這是一個示例 Python 腳本。
from moviepy.editor import *
import tkinter as tk
from tkinter import filedialog
 
# 打開視頻地址文件,選擇提取的存儲地址,從視頻中提取音頻
if __name__ == '__main__':
    # 實例化
    root = tk.Tk()
    root.withdraw()
 
    # 獲取文件夾路徑
    f_path = filedialog.askopenfilename()
    print('\n獲取的文件地址:', f_path)
    v_name = f_path.split('/')[-1].split('.')[0]
    print("\n生成的音頻名稱:", v_name)
 
    video = VideoFileClip(f_path)
    audio = video.audio
 
    f_path_save = filedialog.askdirectory()
    print('\n存儲地址:', f_path_save)
 
    audio.write_audiofile(f_path_save+'/'+v_name+'.mp3')

方法三:

使用Python的moviepy庫來提取視頻文件中的音頻

安裝必要的第三方庫:moviepy

安裝方法:

pip install moviepy
#或者用清華的鏡像進(jìn)行安裝(快)
pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple

代碼

import os
import moviepy.editor as mp
 
def extract_audio(videos_file_path,audio_file_path):
    my_clip = mp.VideoFileClip(videos_file_path)
    my_clip.audio.write_audiofile(f'{audio_file_path}.mp3')
 
if __name__ == '__main__':
    # 視頻路徑
    MV_Path = "***"
    # 音頻存儲路徑
    store_path = "***"
    mv_list = os.listdir(MV_Path)
    print(mv_list)
    for name in mv_list:
        para1 = MV_Path+ "\\" + name
        para2 = store_path + "\\" + name[:-4]
        extract_audio(para1,para2)
        print(f"{name}轉(zhuǎn)換完畢!")

以上就是詳解如何使用Python提取視頻文件中的音頻的詳細(xì)內(nèi)容,更多關(guān)于Python提取視頻中的音頻的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例

    Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例

    在Python的科學(xué)計算庫NumPy中,numpy.zeros()是一個非常重要的函數(shù),它用于創(chuàng)建一個指定形狀和數(shù)據(jù)類型的全零數(shù)組,這篇文章主要給大家介紹了關(guān)于Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • Python內(nèi)置庫之webbrowser模塊用法詳解

    Python內(nèi)置庫之webbrowser模塊用法詳解

    webbrowser模塊是Python自帶的標(biāo)準(zhǔn)庫,無需安裝,可以直接在Python中使用該模塊來打開網(wǎng)頁、PDF文件等,本文給大家詳細(xì)介紹了Python webbrowser模塊用法,需要的朋友可以參考下
    2023-08-08
  • Python獲取時光網(wǎng)電影數(shù)據(jù)的實例代碼

    Python獲取時光網(wǎng)電影數(shù)據(jù)的實例代碼

    這篇文章主要介紹了Python獲取時光網(wǎng)電影數(shù)據(jù),基本原理是先通過requests庫,通過時光網(wǎng)自帶的電影數(shù)據(jù)API接口,獲取到指定的電影數(shù)據(jù),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • python列表推導(dǎo)式入門學(xué)習(xí)解析

    python列表推導(dǎo)式入門學(xué)習(xí)解析

    這篇文章主要介紹了python列表推導(dǎo)式入門學(xué)習(xí)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Python3 操作符重載方法示例

    Python3 操作符重載方法示例

    這篇文章主要介紹了Python3 操作符重載方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python切割圖片成九宮格的示例代碼

    Python切割圖片成九宮格的示例代碼

    這篇文章主要介紹了Python切割圖片成九宮格的相關(guān)知識,本文通過截圖實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 一步真實解決AttributeError:‘Upsample‘?object?has?no?attribute‘recompute_scale_factor‘的問題

    一步真實解決AttributeError:‘Upsample‘?object?has?no?attribute‘

    這篇文章主要介紹了解決解決AttributeError:?‘Upsample‘?object?has?no?attribute?‘recompute_scale_factor‘的問題,本文給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • python實現(xiàn)可逆簡單的加密算法

    python實現(xiàn)可逆簡單的加密算法

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)可逆簡單的加密算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python ArgumentParse的subparser用法說明

    Python ArgumentParse的subparser用法說明

    這篇文章主要介紹了Python ArgumentParse的subparser用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python selenium 三種等待方式詳解(必會)

    Python selenium 三種等待方式詳解(必會)

    這篇文章主要介紹了Python selenium 三種等待方式詳解(必會)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09

最新評論