我有一些.MP4視頻文件,必須在Android活動的VideoView中讀取。這些視頻包含多個音軌,每個音軌對應一種用戶語言(例如:英語,法語,日語......)。
我遇到意想不到的麻煩,找到任何幫助或文檔來提供這樣的功能。我目前能夠加載視頻並使用MediaController在VideoView中播放,但不能更改音頻軌道。
我不確定Android SDK提供了什麼簡單的方法來做到這一點,這讓我對如何解決問題感到無能爲力。我正在考慮提取每個音頻軌道,根據語言將我想要的音頻加載到MediaPlayer中,然後將音頻和視頻一起播放。但是我擔心會出現一些同步問題,並阻止我這樣做。
如果您有任何線索,有任何建議可以幫助我開始解決這個問題,那麼您非常歡迎。Android:VideoView中有多個音軌?
回答
還沒有測試過自己,但看起來Vitamio庫支持多音軌(以及其他有趣的功能)。它與Android的VideoView
類API兼容。
也許你將不得不使用VitamioVideoView.setAudioTrack()
設置音軌(例如基於區域設置)。詳情請參閱Vitamio API docs。
最後我做了我所建議的。我分離了視頻和音頻數據,根據用戶語言將音頻加載到MediaPlayer中,然後同步兩個流。這是一個相當骯髒的解決方案,但在我不得不做這項工作的時候可以接受。 我還沒有測試過您的解決方案,但我會接受它,因爲它似乎正是我當時所需要的。不管怎樣,謝謝你 ! – Vahron 2013-03-18 10:01:46
VideoView類無法支持您的require.U必須解析以獲取音頻流數據(您想要)與Java層上的AudioTrack類一起播放。需要
不正確。看到我的答案。 – 2016-06-19 15:16:03
任何第三方庫:
mVideoView.setVideoURI(Uri.parse("")); // set video source
mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
MediaPlayer.TrackInfo[] trackInfoArray = mp.getTrackInfo();
for (int i = 0; i < trackInfoArray.length; i++) {
// you can switch out the language comparison logic to whatever works for you
if (trackInfoArray[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO
&& trackInfoArray[i].getLanguage().equals(Locale.getDefault().getISO3Language()) {
mp.selectTrack(i);
break;
}
}
return true;
}
});
據我可以告訴 - 音軌,應在3個字母的ISO 639-2進行編碼,以正確識別。
你能指點我如何編碼這些音軌 – 2017-01-14 06:29:05
ffmpeg是一個很好的開始的地方 – 2017-01-15 07:23:17
你寫道,音軌應該用3字母iso 639-2編碼。你能解釋一下它是什麼嗎? – 2017-01-15 15:30:11
- 1. mediaelement.js WP插件中有多個音軌?
- 2. 多個立體聲音軌
- 3. Android:播放多個音軌
- 4. mlt將音軌添加到多音軌音頻而不混音
- 5. android:videoview history/bookmark
- 6. 用seek同步多個HTML5音軌
- 7. HTML5視頻的多個音軌
- 8. 單個MIDI音軌可以同時播放多個音符嗎?
- 9. 播放多音軌音頻在線
- 10. 的ActionScript 3,多音軌
- 11. 多軌音頻與Java
- 12. Android多軌音頻庫?
- 13. 多個HTML5音頻行爲:一個軌道中的時候請
- 14. AVMutableAudioMix多個音軌的音量不能正常工作
- 15. 加入多個音軌時的音頻持續時間匹配
- 16. 循環多個音頻軌道(混音器)Flash AS3
- 17. html5/javascript音頻同時播放多個音軌
- 18. 消除錄音軌道中當前播放的音軌聲音
- 19. Android:Videoview旋轉後不播放
- 20. AVAssetTrack:音軌沒有timeRange?
- 21. 部分在軌中有多個產量
- 22. 多個多態關聯與軌工作4軌沒有5
- 23. ColdFusion的 - 多個插件 - 音軌號碼在每個插入
- 24. AVMutableAudioMix將多個音量更改爲單個軌道
- 25. html5視頻mp4的多音軌
- 26. Smooth Streaming Player - 多音軌 - H.264 SmoothStreams
- 27. 轉換多音軌+字幕.MKV到MP4
- 28. 生成靜音音軌
- 29. 在AVMutableVideoComposition中平移音軌
- 30. 將音頻靜音一段音軌
這方面的進展如何? – runor49 2012-03-06 21:54:42
您似乎已根據所選解決方案的評論取得了進展。你能分享你如何完成上述任務嗎? – LostPuppy 2016-04-05 00:30:08
這是一個古老的問題,但有一個簡單的解決方案來解決這個問題。看到我的答案。 – 2016-06-19 15:17:48