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

Python如何對(duì)音視頻文件進(jìn)行解析詳解

 更新時(shí)間:2022年11月17日 12:01:12   作者:盆友圈的小可愛  
在腳本或應(yīng)用程序中,我們需要執(zhí)行音頻處理任務(wù),下面這篇文章主要給大家介紹了關(guān)于Python如何對(duì)音視頻文件進(jìn)行解析的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

作為一個(gè)學(xué)完P(guān)ython基礎(chǔ)知識(shí)的測(cè)試,終于可以像RD們自己寫腳本處理任何場(chǎng)景吧,如何優(yōu)雅地寫出來代碼,接下來開啟進(jìn)階版的Python。

在我們工作中,涉及的多媒體文件相關(guān)的測(cè)試,總逃不掉要使用工具查看多媒體文件相關(guān)的信息,上百次甚至上千次的打開關(guān)閉操作,工作是非常低效。

本期,我們一起來實(shí)現(xiàn)如何使用Python解析多媒體文件獲取信息,一起來漲知識(shí)吧~

問題背景

當(dāng)我們遇到進(jìn)行多媒體測(cè)試,總會(huì)遇到各種各樣不同編碼、后綴、多音軌的多媒體文件。那么問題來,在這個(gè)測(cè)試過程我們總是打開多媒體文件-查看文件編碼等信息,此過程如此往復(fù)。在測(cè)試一個(gè)項(xiàng)目下來,累計(jì)打開查看多媒體文件信息至少也有上百次~

  • 在這里補(bǔ)充一下,通常對(duì)于多媒體測(cè)試來說,常用的分析工具是**MediaInfo**
    • 是一款開源的多媒體分析工具
    • 可以支持多種視頻和音頻文件格式
    • 支持多種格式查看方式如xml、text、tree等

做測(cè)試真是體力活,惰性是提高工作效率的第一次動(dòng)力,動(dòng)動(dòng)腦筋,在網(wǎng)上查找一番Python提供了關(guān)于多媒體解析的庫pymediainfo庫控制MediaInfo工具

2.安裝依賴庫

2.1 pymediainfo庫

Pymediainfo 是專門對(duì)多媒體文件進(jìn)行解析的開源第三方Python庫,目前維護(hù)作者是Louis Sautier??梢灾С諰inux、MAC OS和Windows系統(tǒng)。

Pymediainfo 模塊中調(diào)用mediaInfo工具,解析文件并返回詳細(xì)信息->空白備注的信息。

2.2 安裝pymediainfo庫

  • 第三方庫,安裝直接使用Python提供的pip工具
    • pip install pymediainfo
  • 如果安裝遇到下載失敗,則可以添加其他服務(wù)器資源進(jìn)行下載。如清華大學(xué)源
    • pip install pymediainfo -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 測(cè)試解析效果

查看 pymediainfo 庫源代碼pymediainfo/init.py內(nèi)容,可以看到pymediainfo主要有兩個(gè)類:

  • Track:從mediaInfo對(duì)象輸出指定屬性的值
  • Medianfo:解析多媒體文件,獲取詳細(xì)信息

根據(jù)官網(wǎng)文檔的介紹,簡(jiǎn)單使用pymediainfo庫方法,解析movie1.mp4文件:

from pymediainfo import MediaInfo
media_info = MediaInfo.parse(filename)
print(media_info.to_json())

終端輸出非常詳細(xì)的信息,如下部分打印截圖:

我們看到輸出的內(nèi)容是Json格式的,存在兩個(gè)問題:

  • 數(shù)據(jù)字段多
  • 數(shù)據(jù)字段間距擁擠

介于以上問題,對(duì)解析的Json數(shù)據(jù),要進(jìn)行格式化處理輸出,怎么做到輸出形式如mediainfo 軟件GUI效果一樣呢?

4. 格式化解析信息

我們獲取到的media_info信息,怎么格式化輸出與GUI界面顯示的一樣的內(nèi)容,最直接的思路大概如下:

  • 查看JSON數(shù)據(jù)內(nèi)容,多媒體文件信息主要包含三個(gè)部分:

    • General:movie、music、picture必有
    • Video:movie必帶,music和picture無
    • Audio:movie和music必帶,picture無
  • 三種類型的多媒體文件字段內(nèi)容也不盡相同,其中movie文件字段最多

根據(jù)GUI上對(duì)每種文件展示詳細(xì)內(nèi)容字段,總體是一致的,可以使用map方式,將GUI上展示的字段名和JSON字段建立映射表output_type來存儲(chǔ)。

獲取到解析信息后,使用for循環(huán)將tracks所有屬性字段, 根據(jù)創(chuàng)建output_type截取字段來進(jìn)行打印輸出到new_file文件中。

在此過程中,當(dāng)指定的字段值為None時(shí),則進(jìn)行跳過。

注:mediaInfo GUI界面 text展示的是左對(duì)齊,因此可以使用format格式輸出

"{key1:[填充字符][對(duì)齊方式][寬度]}".format(key1)
# *<40:左對(duì)齊,總共40個(gè)字符,不夠用*填充
# *>40:右對(duì)齊,總共40個(gè)字符,不夠用*填充
# *^40:居中,總共40個(gè)字符,不夠用*填充

根據(jù)以上思路,代碼就非常容易實(shí)現(xiàn)啦demo代碼如下

終端打印效果如下所示:

5. 批量解析操作

回到開頭我們面對(duì)一堆的多媒體文件需要查看分析詳情的時(shí)候,大概的解決思路如下:

  • 我們可以繼續(xù)使用os.path模塊獲取指定目錄下所有多媒體文件列表media_files。
  • 遍歷將每個(gè)mediafile使用mediainfo方法解析出信息mediainfo.to_json()存儲(chǔ)在list中,為什么不每一次解析內(nèi)容就寫入到文件中,原因如下:

    每次解析后頻繁打開寫入文件操作,消耗系統(tǒng)資源

    對(duì)于mediainfo內(nèi)容還需要進(jìn)行格式化后內(nèi)容寫入到目標(biāo)文件中

  • 將統(tǒng)一的格式化內(nèi)容一一寫入到指定文件中,可以為后續(xù)查找和分析提供資料

6. 總結(jié)

本期,我們?cè)诠ぷ饔龅揭l繁地查看和查找多媒體文件信息,學(xué)習(xí)到了使用python中第三方庫pymediainfo模塊便捷快速解析指導(dǎo)的多媒體文件。

根據(jù)不同場(chǎng)景和需求,個(gè)性化解析出想要的多媒體詳細(xì)信息,提高我們工作效率,更多的時(shí)間學(xué)習(xí)其他新知識(shí)啦~

到此這篇關(guān)于Python如何對(duì)音視頻文件進(jìn)行解析的文章就介紹到這了,更多相關(guān)Python音視頻文件解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pycharm運(yùn)行按鈕灰色問題及解決

    pycharm運(yùn)行按鈕灰色問題及解決

    這篇文章主要介紹了pycharm運(yùn)行按鈕灰色問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python用opencv將標(biāo)注提取畫框到對(duì)應(yīng)的圖像中

    python用opencv將標(biāo)注提取畫框到對(duì)應(yīng)的圖像中

    這篇文章主要介紹了python用opencv將標(biāo)注提取畫框到對(duì)應(yīng)的圖像中,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 如何利用pyecharts畫好看的餅狀圖

    如何利用pyecharts畫好看的餅狀圖

    這篇文章主要給大家介紹了關(guān)于如何利用pyecharts畫好看的餅狀圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vscode配置anaconda3的方法步驟

    vscode配置anaconda3的方法步驟

    這篇文章主要介紹了vscode配置anaconda3的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python求解數(shù)組中兩個(gè)字符串的最小距離

    python求解數(shù)組中兩個(gè)字符串的最小距離

    這篇文章主要為大家詳細(xì)介紹了python求解數(shù)組中兩個(gè)字符串的最小距離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Ubuntu手動(dòng)編譯源碼安裝Python的詳細(xì)過程

    Ubuntu手動(dòng)編譯源碼安裝Python的詳細(xì)過程

    這篇文章主要介紹了Ubuntu手動(dòng)編譯源碼安裝Python的詳細(xì)過程,在python官網(wǎng)找到所需版本的python安裝包,下載到Ubuntu系統(tǒng)中,需要的朋友可以參考下
    2006-08-08
  • Jupyter notebook運(yùn)行Spark+Scala教程

    Jupyter notebook運(yùn)行Spark+Scala教程

    這篇文章主要介紹了Jupyter notebook運(yùn)行Spark+Scala教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 談一談基于python的面向?qū)ο缶幊袒A(chǔ)

    談一談基于python的面向?qū)ο缶幊袒A(chǔ)

    在本篇內(nèi)容中我們給大家整理了關(guān)于python面向?qū)ο缶幊袒A(chǔ)的觀點(diǎn)分析以及知識(shí)點(diǎn)整理,有需要的朋友們學(xué)習(xí)下。
    2019-05-05
  • python Web應(yīng)用程序測(cè)試selenium庫使用用法詳解

    python Web應(yīng)用程序測(cè)試selenium庫使用用法詳解

    selenium主要是用來做自動(dòng)化測(cè)試,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題本文詳細(xì)介紹了在python中selenium模塊的使用方法
    2021-10-10
  • python生成xml時(shí)規(guī)定dtd實(shí)例方法

    python生成xml時(shí)規(guī)定dtd實(shí)例方法

    在本篇文章里小編給大家整理的是關(guān)于python生成xml時(shí)規(guī)定dtd實(shí)例方法,需要的朋友們學(xué)習(xí)參考下。
    2020-09-09

最新評(píng)論