欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用pydub模塊轉(zhuǎn)換音頻格式以及對音頻進(jìn)行剪輯

 更新時(shí)間:2021年06月01日 14:20:12   作者:il_持之以恒_li  
這篇文章主要給大家介紹了關(guān)于Python使用pydub模塊轉(zhuǎn)換音頻格式以及對音頻進(jìn)行剪輯的相關(guān)資料pydub是python的高級一個(gè)音頻處理庫,可以讓你以一種不那么蠢的方法處理音頻。需要的朋友可以參考下

前言

近端時(shí)間看了一個(gè)短視頻,覺得視頻的背景音樂片段很不錯(cuò),想把這個(gè)背景音樂得到,雖然小編運(yùn)用Python爬蟲肯定能得到這首音樂,但是這個(gè)音樂片段肯定是得不到的,于是網(wǎng)上看一下相關(guān)官方文檔,沒想到python真的有模塊可以滿足要求,這又讓我想起自己CSDN界面的那段話了,“在Python面前,只有你想不到的,沒有Python做不到的”。

1.需要下載的Python模塊和ffmpeg多媒體處理工具

需要的Python模塊是標(biāo)題上提到的那個(gè),pydub,這個(gè)模塊可以實(shí)現(xiàn)對音頻文件的剪輯、轉(zhuǎn)換音頻格式等。pydub是python的高級一個(gè)音頻處理庫,自帶的wave模塊只能處理 wav 格式的音頻文件,如果要想處理類似MP3格式的文件,就得要裝 ffmpeg或者libav了。pydub依賴于ffmpeg,這里選擇安裝ffmpeg。

下載命令,在cmd上輸入pip install pydub即可

除了下載pydub這個(gè)模塊之外,還需要下載ffmpeg這個(gè)多媒體處理工具,否則,即使在代碼中指定音頻文件路徑?jīng)]有錯(cuò)誤,運(yùn)行結(jié)構(gòu)也會報(bào)錯(cuò)。如下:

下載這個(gè)之后,就不會報(bào)這個(gè)錯(cuò)誤了,下載網(wǎng)址為:ffmpeg

在這個(gè)網(wǎng)址下面找一個(gè)和自己電腦系統(tǒng)一樣的版本下載即可,下載完成之后,解壓,好像不配置環(huán)境變量,程序也可以正常執(zhí)行,不過,最好還是配置環(huán)境變量。

2.實(shí)現(xiàn)音頻剪輯和轉(zhuǎn)換音頻格式代碼

其實(shí),實(shí)現(xiàn)音頻剪輯和轉(zhuǎn)換音頻格式的代碼總共就幾行代碼,只不過需要輸入一些參數(shù)值,因此代碼量相對而言多了起來。

關(guān)鍵代碼為:

from pydub import AudioSegment
    
    sound=AudioSegment.from_file(file='./music/刺客.mp3',format='mp3')
    sound=sound[start:end]  # start,end兩個(gè)參數(shù)用于對音頻進(jìn)行剪輯
    sound.export(out_f='./music/刺客.wav', format='wav')  # 用于保存剪輯之后的音頻文件

當(dāng)然讀者想了解更多有關(guān)這個(gè)模塊的使用,可以來看看官方文檔啊!

文檔連接為:pydub

文檔中講了有關(guān)音頻合并、音頻重復(fù)等知識點(diǎn)喔!。

最終實(shí)現(xiàn)代碼:

from pydub import AudioSegment
import sys

class Music(object):
    def __init__(self,file,file_type,start,end,save_file,save_file_type):
        self.sound = AudioSegment.from_file(file=file, format=file_type)
        self.start=start  # 剪輯音頻文件開始時(shí)間
        self.end=end    # 剪輯音頻文件的結(jié)束時(shí)間
        self.save_file=save_file  # 保存音頻文件的路徑
        self.save_file_type=save_file_type  # 保存音頻文件的類型

    def editedMusic(self):   # 定義方法用于剪輯音頻
        # 對于傳入的start,end參數(shù)進(jìn)行一些字符串處理

        ## 對傳入的開始時(shí)間進(jìn)行字符串處理
        if self.start=='0' or self.start=='':  #  從頭開始處理音頻文件
            start_time=0
        elif ":" in self.start:# 從音頻中間處理
            list_1=self.start.split(":")
            start_time=int(list_1[0])*60+int(list_1[1])
        else:  # 如果是其他情況,提示錯(cuò)誤,并退出程序
            print("你輸入的初始截取時(shí)間有問題")
            sys.exit()
        start_time*=1000   # 毫秒作為單位,需要在原來秒數(shù)的基礎(chǔ)上再乘以1000
        if  start_time>=len(self.sound):   # 如果初始截取時(shí)間大于或等于音頻文件總時(shí)間
            print('你輸入的初始截取時(shí)間大于該音頻文件總時(shí)間,故無法進(jìn)行剪輯操作')
            sys.exit()

        ## 對傳入的結(jié)束時(shí)間進(jìn)行字符串處理
        if self.end=='':
            end_time=len(self.sound)  # 如果輸入結(jié)束時(shí)間為空,表示截取到音頻文件最后
        elif ':' in self.end:
            list_2=self.end.split(':')
            end_time=int(list_2[0])*60+int(list_2[1])
        else:
            print("你輸入的結(jié)束截取時(shí)間有問題")
            sys.exit()
        end_time*=1000
        self.sound=self.sound[start_time:end_time]  # 對音頻文件進(jìn)行剪輯
        self.saveFile()

    def saveFile(self):
        self.sound.export(out_f=self.save_file,format=self.save_file_type)
        # 保存已經(jīng)進(jìn)行剪輯的音頻文件
        print('已成功轉(zhuǎn)換!')

if __name__ == '__main__':
    print('1.可以將音頻文件轉(zhuǎn)換其他格式的音頻文件\n2.可用剪輯音頻文件\n')
    print('='*50)
    file=input('建議:\n(1.音頻文件和運(yùn)行文件在同一個(gè)文件夾下面,最好使用相對路徑)\n(2.音頻文件和運(yùn)行文件不在同一個(gè)文件夾下面,最好用絕對路徑)\n請輸入要剪輯的文件路徑:')
    file_type=file[file.rfind('.')+1:]  # 音頻文件類型 mp3、wav
    start=input("(可用輸入0,空格,(1:1,1分1秒):)\n輸入開始截取時(shí)間:")
    end=input("(可用輸入空格,(1:1,1分1秒):)\n輸入結(jié)束截取時(shí)間:")
    save_file=input("請輸入剪輯之后保存的文件路徑:")
    save_file_type=save_file[save_file.rfind('.')+1:]
    music=Music(file,file_type,start,end,save_file,save_file_type)
    music.editedMusic()  # 1:12  1:36

當(dāng)然,這個(gè)模塊好像還可以滿足一些用戶改變音樂音質(zhì)的需求,export()方法里面有一個(gè)參數(shù)bitrate比特率,百度了一下這個(gè)東西,好像對音頻音質(zhì)有一定影響。

3.總結(jié)

到此這篇關(guān)于Python使用pydub模塊轉(zhuǎn)換音頻格式以及對音頻進(jìn)行剪輯的文章就介紹到這了,更多相關(guān)Python轉(zhuǎn)換音頻格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python with用法:自動(dòng)關(guān)閉文件進(jìn)程

    Python with用法:自動(dòng)關(guān)閉文件進(jìn)程

    這篇文章主要介紹了Python with用法:自動(dòng)關(guān)閉文件進(jìn)程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法

    python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法

    今天小編就為大家分享一篇python 利用瀏覽器 Cookie 模擬登錄的用戶訪問知乎的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python-docx如何刪除所有bookmarks

    python-docx如何刪除所有bookmarks

    在Python-docx庫中,雖然沒有直接刪除書簽的功能,但可以通過操作XML元素,遍歷文檔結(jié)構(gòu)并刪除指定元素來實(shí)現(xiàn)刪除所有書簽的目的,首先要明白書簽在XML文件中的位置,然后利用Python-docx提供的element元素遍歷并刪除特定的書簽元素
    2024-09-09
  • Python之re模塊詳解

    Python之re模塊詳解

    這篇文章主要介紹了Python編程之Re模塊下的函數(shù)介紹,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考,希望能夠給你帶來幫助
    2021-09-09
  • Pytorch中關(guān)于F.normalize計(jì)算理解

    Pytorch中關(guān)于F.normalize計(jì)算理解

    這篇文章主要介紹了Pytorch中關(guān)于F.normalize計(jì)算理解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python并發(fā)編程實(shí)例教程之線程的玩法

    Python并發(fā)編程實(shí)例教程之線程的玩法

    編程的樂趣之一是想辦法讓程序執(zhí)行的越來越快,代碼越寫越優(yōu)雅,這篇文章主要給大家介紹了關(guān)于Python并發(fā)編程實(shí)例教程之線程的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 如何用Python破解wifi密碼過程詳解

    如何用Python破解wifi密碼過程詳解

    這篇文章主要介紹了如何用Python破解wifi密碼過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Pytorch可視化之Visdom使用實(shí)例

    Pytorch可視化之Visdom使用實(shí)例

    Visdom 是一個(gè)專門用于 PyTorch 的交互式可視化工具,可以對實(shí)時(shí)數(shù)據(jù)進(jìn)行豐富的可視化,幫助我們實(shí)時(shí)監(jiān)控在遠(yuǎn)程服務(wù)器上進(jìn)行的科學(xué)實(shí)驗(yàn),這篇文章主要給大家介紹了關(guān)于Pytorch可視化之Visdom使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Django中使用group_by的方法

    Django中使用group_by的方法

    這篇文章主要介紹了Django中使用group_by的方法,實(shí)例分析了在Django中使用group_by語句的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python學(xué)習(xí)資料

    Python學(xué)習(xí)資料

    Python學(xué)習(xí)資料...
    2007-02-02

最新評論