如何在Android的Exo播放器中更改音轨

问题描述 投票:0回答:1

我有一些带有两个音轨的视频,我想在视频播放期间将音轨更改为另一种语言。

我已经尝试了一切,但仍然没有成功

这是我的代码,我正在使用Firebase存储来存储视频。

我到处搜索,但找不到解决方法。

我的代码正在运行,但仍然没有出现任何错误,但是对于我来说,更改音轨似乎是不可能的。

public class NewVideoActivity extends AppCompatActivity {

    SimpleExoPlayerView exoPlayerView;
    SimpleExoPlayer exoPlayer;
    String videoURL;
    private ImageView selectTracksButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_video);

        getSupportActionBar().hide();

        selectTracksButton = findViewById(R.id.audioTrack);



        videoURL = getIntent().getStringExtra("Link");

        exoPlayerView = (SimpleExoPlayerView) findViewById(R.id.exo_player_view);
        try {


            BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
            TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
            exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);




            Uri videoURI = Uri.parse(videoURL);

            DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
            ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
            MediaSource mediaSource = new ExtractorMediaSource(videoURI, dataSourceFactory, extractorsFactory, null, null);




            exoPlayerView.setPlayer(exoPlayer);

            exoPlayer.prepare(mediaSource);
            exoPlayer.setPlayWhenReady(true);


        }catch (Exception e){
            Log.e("MainAcvtivity"," exoplayer error "+ e.toString());
        }
}
java android exoplayer2.x
1个回答
0
投票

您可以使用hls视频(.m3u8扩展名)格式作为解决方案。

offical documentation

简单代码

    trackSelector = new DefaultTrackSelector();
    trackSelector.setParameters(
            trackSelector.getParameters().buildUpon().setMaxVideoSizeSd()
            .setPreferredTextLanguage("en")
            .setPreferredAudioLanguage("en").build());

您可以在此处为方法提供支持的语言作为参数同样,如果可用,则支持多子文本,您可以通过相同的方式将参数作为方法的参数(setPreferredTextLanguage)。

languages code list

为您提供示例hls视频网址

https://wowzaec2demo.streamlock.net/vod-multitrack/definst/smil:ElephantsDream/ElephantsDream.smil/playlist.m3u8

此hls视频支持两种音频语言;英文和西班牙文(en,es)

希望对您有帮助

© www.soinside.com 2019 - 2024. All rights reserved.