我在Github上制作了一个示例项目,该项目可以正确处理您的文件。您可以在下面的链接中进行检查和测试:
https://github.com/squti/ExoPlayer-MKV-
Sample
如果您只想使用项目中的代码,请先从设备或仿真器中卸载以前安装的应用程序,然后运行新的应用程序。
以下是项目的基本代码:
MainActiviy.java
public class MainActivity extends AppCompatActivity { private PlayerView playerView; private SimpleExoPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); playerView = findViewById(R.id.player_view); } @Override protected void onStart() { super.onStart(); player = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector()); playerView.setPlayer(player); DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory( this, Util.getUserAgent(this, getString(R.string.app_name))); ProgressiveMediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(Uri.parse("file:///android_asset/jellyfish-3-mbps-hd-h264.mkv")); player.prepare(mediaSource); player.setPlayWhenReady(true); } @Override protected void onStop() { super.onStop(); playerView.setPlayer(null); player.release(); }}activity_main.xml
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.exoplayer2.ui.PlayerView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" app:resize_mode="fill" /></androidx.constraintlayout.widget.ConstraintLayout>
另外,您需要将以下依赖项添加到应用程序级别的Gradle文件中:
implementation 'com.google.android.exoplayer:exoplayer-core:2.11.7'implementation 'com.google.android.exoplayer:exoplayer-ui:2.11.7'
我将视频文件放在
asset文件夹中,但是您可以根据需要进行更改。



