视频无法在Android TV模拟器中播放

时间:2016-03-03 06:50:54

标签: android surfaceview android-videoview android-tv

我正在开发一个Android电视应用程序,我正在研究android studio模板中给出的示例电视应用程序。这里一切正常,但在视频播放器屏幕上,它在Android TV模拟器中显示“无法播放此视频”错误。

参考文件 PlaybackOverlayActivity.java => onFragmentPlayPause()(当我们在android studio中创建新的电视项目时)

在演示中,他们使用 videoview 。我也尝试使用表面视图/纹理视图来播放链接中的视频,但它会出现不同的错误,例如

1.MediaPlayer:错误(100,0)

2.MediaPlayer:应该已经设置了字幕控制器

3.MediaPlayer:错误(1,-38)

我已经尝试过不同线程的不同解决方案......

请检查以下代码,它仅用于测试视频播放。 我还发现,从AVD创建的任何模拟器都无法通过任何这些方法播放视频。

public class MainActivity extends Activity implements TextureView.SurfaceTextureListener, MediaPlayer.OnPreparedListener {


        private MediaPlayer mMediaPlayer;

        private TextureView mPreview;

        private String path = "http://www.sample-videos.com/video/mp4/240/big_buck_bunny_240p_1mb.mp4";

        @Override
        public void onCreate(Bundle icicle) {

            super.onCreate(icicle);

            setContentView(R.layout.activity_main);

            mPreview = (TextureView) findViewById(R.id.surface);
            mPreview.setSurfaceTextureListener(this);
        }

        public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
            Surface s = new Surface(surface);

            try {
                mMediaPlayer = new MediaPlayer();
                mMediaPlayer.setSurface(s);
                mMediaPlayer.setDataSource(this, Uri.parse(path));
                mMediaPlayer.setOnPreparedListener(this);
                mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mMediaPlayer.prepare();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

        }

        @Override
        public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
            return false;
        }

        @Override
        public void onSurfaceTextureUpdated(SurfaceTexture surface) {

        }

        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    }

android-tv-cant-play-video

还要说明是否有其他方法可以在Android TV模拟器上测试视频。感谢。

1 个答案:

答案 0 :(得分:0)

我建议你看看Android TV Leanback sample,它比Android Studio模板更积极地维护。在Leanback示例中,它可以向您展示如何使用ExoPlayer播放内容。

此外,最近对Android模拟器进行了更改,修复了一个关键问题,即网络访问无法通过模拟器获得,从而无法获取视频。确保您已更新到最新的API23_x86和API23_arm模拟器以获得此修复。