我尝试在TextureView上播放视频。为了在TextureView中播放视频,我已经用Google搜索并在stackoverflow上查看了this question。我在setDataSource()中使用了Local文件而不是远程视频流。我没有在logcat中收到任何错误,它显示视频开始播放。但我看到显示屏上只有黑屏。我尝试了示例代码this github项目。即使在这种情况下也只出现黑屏。我可以通过VideoView播放相同的视频,因此视频文件没有问题。
这是我到目前为止尝试过的代码......
MainActivity.java
private TextureView mTextureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
this.mTextureView=(TextureView) findViewById(R.id.textureView);
this.mTextureView.setSurfaceTextureListener(this);
} catch (Exception e1) {
e1.printStackTrace();
}
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
int height) {
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(Environment
.getExternalStorageDirectory()
+ File.separator
+ "video1.mp4");
mMediaPlayer.setSurface(new Surface(surface));
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
activity_main.xml中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextureView android:id="@+id/textureView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
请帮我解决这个问题...... 提前致谢
修改
我的代码中缺少某些内容,或者我做错了什么......
答案 0 :(得分:0)
如果您尝试在Android模拟器上播放视频,那么它将无法正常工作,因为在此答案时,Android虚拟设备无法播放视频。您需要在真实设备上进行测试。