在TextureView中播放视频时出现问题

时间:2015-08-01 13:01:46

标签: android video textureview

我尝试在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>

请帮我解决这个问题...... 提前致谢

修改
我的代码中缺少某些内容,或者我做错了什么......

1 个答案:

答案 0 :(得分:0)

如果您尝试在Android模拟器上播放视频,那么它将无法正常工作,因为在此答案时,Android虚拟设备无法播放视频。您需要在真实设备上进行测试。