【關(guān)鍵字】
視頻提取類Extractor、視頻編解碼、保存pcm文件、getAudioTime
【背景和問題】
上篇中介紹了從視頻提取音頻并保存到pcm文件功能,請參考文檔:https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid=0101591351254000314,解碼步驟使用的是普通模式進行解碼,測試過程中發(fā)現(xiàn)此模式從視頻提取音頻到保存文件整體流程耗時較長,可能十幾秒視頻讀取需要一兩分鐘,主要普通模式解碼過程比較耗時,本文針對此問題提供解決方案。
【解決方案】
關(guān)于視頻編解碼開發(fā)指導(dǎo)文檔中,除了普通模式編解碼,還有管道模式編解碼,經(jīng)測試,使用管道模式進行解碼會快很多,解碼具體開發(fā)步驟見文檔即可,將上篇文章“從視頻提取音頻并保存到pcm文件功能”中解碼開發(fā)步驟替換成使用管道模式進行解碼即可,使用Extractor從視頻提取音頻數(shù)據(jù)和將音頻數(shù)據(jù)寫入pcm文件過程與原來一致。
【音頻播放類接口getAudioTime說明】
1、關(guān)于getAudioTime接口,官方文檔解釋為“獲取播放時間戳信息”,通過此接口返回的TimeStamp對象中包含getNanoTimestamp信息,此數(shù)據(jù)并非表示音頻開始播放,到當(dāng)前播放的時長,如果一個10s音頻,播放到5s時并非返回5s對應(yīng)的納秒數(shù);也并非跟系統(tǒng)時間有關(guān),返回的數(shù)據(jù)無法轉(zhuǎn)換成系統(tǒng)時間戳;
此接口通常使用方式為:若想要獲取當(dāng)前播放的時間信息,可以在播放開始時通過getAudioTime接口記錄時間,然后在播放過程中再調(diào)用一次記錄時間,兩次時間相減再轉(zhuǎn)換成秒單位的數(shù)據(jù),即可獲取正確播放時間;
(由于此接口比較耗費性能,若音頻較長需要調(diào)用接口次數(shù)比較多,建議直接通過java原生方法在播放開始和過程中分別記錄時間,然后相減獲取播放時長,此方式性能更優(yōu))
2、調(diào)用getAudioTime接口是需要調(diào)用getStage方法檢查播放狀態(tài),需要在播放過程中調(diào)用才可正確返回數(shù)據(jù)。
【視頻轉(zhuǎn)音頻過程中,解碼如何判斷是否完成?】
在framebuffer方法中,若bufferInfo.bufferType為4表示解碼完成,可通過此數(shù)據(jù)判斷是否完成解碼。
【參考文檔】
-
實現(xiàn)從視頻提取音頻并保存到pcm文件功能:https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid=0101591351254000314
-
視頻解碼文檔(管道模式):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-codec-0000000000031749#section151781927112310
-
媒體提取開發(fā)指導(dǎo):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-extractor-0000000000044202
-
音頻播放開發(fā)指導(dǎo):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-audio-playback-0000000000031734
-
getAudioTime API接口文檔:文章來源:http://www.zghlxwxcb.cn/news/detail-643215.html
https://developer.harmonyos.com/cn/docs/documentation/doc-references/audiorenderer-0000001054358892#ZH-CN_TOPIC_0000001054358892__getAudioTime--文章來源地址http://www.zghlxwxcb.cn/news/detail-643215.html
到了這里,關(guān)于【HarmonyOS】【續(xù)集】實現(xiàn)從視頻提取音頻并保存到pcm文件功能(API6 Java)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!