我有一些带有两个音轨的视频,我想在视频播放期间将音轨更改为另一种语言。
我已经尝试了一切,但仍然没有成功
这是我的代码,我正在使用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());
}
}
您可以使用hls视频(.m3u8扩展名)格式作为解决方案。
简单代码
trackSelector = new DefaultTrackSelector();
trackSelector.setParameters(
trackSelector.getParameters().buildUpon().setMaxVideoSizeSd()
.setPreferredTextLanguage("en")
.setPreferredAudioLanguage("en").build());
您可以在此处为方法提供支持的语言作为参数同样,如果可用,则支持多子文本,您可以通过相同的方式将参数作为方法的参数(setPreferredTextLanguage)。
为您提供示例hls视频网址
此hls视频支持两种音频语言;英文和西班牙文(en,es)
希望对您有帮助