掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
FFmpeg是一個(gè)多功能的開(kāi)源音視頻解決方案,可以用來(lái)獲取音頻或視頻的信息、處理音視頻文件、流媒體傳輸?shù)?。在Linux平臺(tái)下使用FFmpeg獲取音頻時(shí)長(zhǎng)非常方便,本文將介紹如何使用FFmpeg獲取音頻時(shí)長(zhǎng)。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到沅陵網(wǎng)站設(shè)計(jì)與沅陵網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋沅陵地區(qū)。
安裝FFmpeg
首先需要在Linux系統(tǒng)上安裝FFmpeg。使用以下命令在Ubuntu系統(tǒng)下安裝最新版本的FFmpeg:
“`
sudo apt-get update
sudo apt-get install ffmpeg
“`
獲取音頻時(shí)長(zhǎng)
有多種方式可以使用FFmpeg獲取音頻時(shí)長(zhǎng),下面將介紹兩種常見(jiàn)的方式。
1. 使用ffprobe命令
ffprobe是FFmpeg工具套裝中的一個(gè)命令行工具,可以用來(lái)獲取音視頻的信息,包括時(shí)長(zhǎng)、比特率等等。使用以下命令獲取音頻文件的總時(shí)長(zhǎng):
“`
ffprobe -i [音頻文件路徑] -show_entries format=duration -v quiet -of csv=”p=0″
“`
其中,[音頻文件路徑]為待獲取時(shí)長(zhǎng)的音頻文件的路徑。
例如,獲取一個(gè)名為audio.mp3的音頻文件的時(shí)長(zhǎng),使用以下命令:
“`
ffprobe -i audio.mp3 -show_entries format=duration -v quiet -of csv=”p=0″
“`
輸出結(jié)果為:
“`
267.810000
“`
可以看到,該音頻文件的總時(shí)長(zhǎng)為267.81秒。
2. 使用ffmpeg命令
除了ffprobe命令外,還可以使用ffmpeg命令來(lái)獲取音頻文件的時(shí)長(zhǎng)。使用以下命令獲取音頻文件的時(shí)長(zhǎng):
“`
ffmpeg -i [音頻文件路徑] 2>&1 | grep ‘Duration’ | cut -d ‘ ‘ -f 4 | sed s/,//
“`
其中,[音頻文件路徑]為待獲取時(shí)長(zhǎng)的音頻文件的路徑。
例如,獲取一個(gè)名為audio.mp3的音頻文件的時(shí)長(zhǎng),使用以下命令:
“`
ffmpeg -i audio.mp3 2>&1 | grep ‘Duration’ | cut -d ‘ ‘ -f 4 | sed s/,//
“`
輸出結(jié)果為:
“`
00:04:27.81
“`
可以看到,該音頻文件的總時(shí)長(zhǎng)為4分27.81秒。
結(jié)論
通過(guò)本文介紹的兩種方法,可以使用FFmpeg在Linux系統(tǒng)下方便地獲取音頻文件的時(shí)長(zhǎng)。在實(shí)際工作中,可以根據(jù)具體需要選擇適合的方法。相信本文對(duì)Linux用戶使用FFmpeg獲取音頻時(shí)長(zhǎng)有所幫助。
相關(guān)問(wèn)題拓展閱讀:
ffmpeg在avformat_find_stream_info中會(huì)讀取一部分源文件的音視頻數(shù)據(jù),來(lái)分析文件信息,那么這個(gè)操作讀取多少數(shù)據(jù)呢?
答案是:
通過(guò)probesize和yzeduration兩個(gè)參數(shù)來(lái)控制液察
。
直接用命令行查看這兩個(gè)參數(shù):
-probesize和 -yzeduration定義在 libavformat/options_table.h 中
可以看到probesize默認(rèn)為, 而yzeduration默認(rèn)為0.
傳入的參數(shù)保存在 libavformat/avformat.h 中AVFormatContext的probesize和max_yze_duration變量中。
從上可以看出
probesize是從源文件中讀取的更大字節(jié)數(shù),單位為字節(jié)。
max_yze_duration是從文件中讀取的更大時(shí)長(zhǎng),單位為 AV_TIME_BASE units
。
probesize的單位是字節(jié)。
最小是32字節(jié)。鬧余茄
默認(rèn)是字節(jié)。
avformat_find_stream_info函數(shù)中:
可以看到y(tǒng)zeduration參數(shù)不設(shè)置時(shí),即yzeduration默認(rèn)等于0時(shí),可以看到
默認(rèn)的分析時(shí)長(zhǎng)為5秒
:
而如果是flv文件的時(shí)候, 默認(rèn)為90秒
:
mpeg和mpegts文件的時(shí)候,默認(rèn)7秒
:
結(jié)論是:
誰(shuí)先達(dá)到就聽(tīng)誰(shuí)的
。
以上的例子是讀取50M的數(shù)據(jù)或100秒的數(shù)據(jù),那個(gè)標(biāo)準(zhǔn)先達(dá)到,那就聽(tīng)誰(shuí)的,停止probe
。毀好
ffmpeg/doc/ffmpeg-formats.texi
ffmpeg/doc/faq.texi
關(guān)于linux ffmpeg獲取音頻時(shí)長(zhǎng)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流