【问题标题】:Video is not playing in Android TV Emulator视频未在 Android TV 模拟器中播放
【发布时间】:2016-03-03 06:50:53
【问题描述】:

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

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

在演示中,他们使用了 videoview。我还尝试使用 surface view/texture view 来播放链接中的视频,但它会给出不同的错误,例如

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 模拟器上测试视频。谢谢。

【问题讨论】:

  • 在普通的手机模拟器上能用吗??
  • 我已经提到'我还发现任何从 AVD 创建的模拟器都无法播放视频'。但它在 genymotion 模拟器(手机)中播放。

标签: android surfaceview android-videoview android-tv


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 1970-01-01
    • 2015-03-09
    • 2015-06-15
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多