exoplayer開發 音軌切換

2021-09-28 05:52:31 字數 1954 閱讀 2562

exoplayer音軌切換有兩種方式:第一種是parametersbuilder提供的setpreferredlanguage(string lan)方法,該方法根據音軌的language欄位來切換,但是有的音軌檔案不標準沒language欄位名,這種情況就得使用第二種方法了;第二種是parametersbuilder提供的setselectionoverride(int rederindex,trackgroup trackgroup,selectionoverride selectionoverride)f方法,使用這個方法的難點在於搞清楚各個引數的含義和取值,我就是這塊沒搞明白,浪費了好多時間,差點就放棄了。接下來就重點講講第二種方法的使用。

/** a type constant for tracks of unknown type. */

public static final int track_type_unknown = -1;

/** a type constant for tracks of some default type, where the type itself is unknown. */

public static final int track_type_default = 0;

/** a type constant for audio tracks. */

public static final int track_type_audio = 1;

/** a type constant for video tracks. */

public static final int track_type_video = 2;

/** a type constant for text tracks. */

public static final int track_type_text = 3;

/** a type constant for metadata tracks. */

public static final int track_type_metadata = 4;

/** a type constant for camera motion tracks. */

public static final int track_type_camera_motion = 5;

/** a type constant for a dummy or empty track. */

public static final int track_type_none = 6;

format audio/mpeg-l2, lang null, id 1/257, lable null 

format audio/mpeg-l2, lang null, id 1/258, lable null

第三步,要想得到第三個引數selectionoverride,就的弄明白trackgroup是啥,通過檢視原始碼得知,trackgroup裡面維護了乙個fomat陣列,fomat就是資料格式的表示物件,裡面有好多成員變數,如minetype,language,id。通過分析第二步的trackgroup我能得知這裡面有兩條音軌資料,索引分別為0和1。因此通過selectionoverride的構造方法將我所需要選的音軌給選擇出來。

最後,通過defaultselector的setparmameters()方法將它注入進去即可;下面是具體**

if (trackinfo != null) {

myexoplayer.gettrackselector()

.setparameters(myexoplayer.gettrackselector()

.builduponparameters()

.setselectionoverride(1, trackinfo.gettrackgroups(1),

new defaulttrackselector.selectionoverride(track, 0)));

ExoPlayer 開發指南

與android內建的mediaplayer相比,exoplayer具有許多優點 1.支援通過http dash 和smoothstreaming進行動態自適應流,這兩種都不受mediaplayer的支援。還支援許多其他格式。同時它還支援http直播 hls mp4,webm,m4a,mpeg ts...

Android藍芽開發音訊焦點

在車機開發中,藍芽模組一般是定製的,而藍芽的音訊輸出,包括藍芽 藍芽 都要制定聲音策略,進行音訊焦點的管理。音訊焦點的管理,這一點類似於android多 開發時的音訊焦點管理,也是通過audiomanager來進行管理。音訊焦點管理的主要 一般寫在主服務裡即可,便於統籌管理。以藍芽 為例 藍芽 的類...

比亞迪李柯開發音訊,比亞迪李柯開發聲道

1.比亞迪李柯開發音訊輸入 audio input 一般採用麥克風錄製 2.比亞迪李柯開發的音訊流型別 mstreamtype 常用的音訊流型別有 3.取樣頻率 audio sample rate 比亞迪李柯開發定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,用赫茲 hz 來表示。44100是目...