【问题标题】:Android VideoView not working in sdk 4.3Android VideoView 在 sdk 4.3 中不起作用
【发布时间】:2016-04-30 04:47:13
【问题描述】:

我正在尝试在VideoView 上播放来自设备的视频。这是我的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    vView = (VideoView) findViewById(R.id.videoView);
    mc = new MediaController(this);
    vView.setMediaController(mc);
    String new_emulator_path = "/storage/emulated/0/Download/testvid.mp4";
    Uri uri = Uri.parse(new_emulator_path);
    vView.setVideoURI(uri);
    vView.requestFocus();
    mc.show();
    vView.start();
}

...

<VideoView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/videoView"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:adjustViewBounds="true" />

在 5.1 上使用相同的代码时,它可以正常播放,但在 4.3 及以下版本中无法播放。以下是日志摘录:

04-30 00:28:09.141 2293-2293/com.ebook.video D/MediaPlayer: getMetadata
04-30 00:28:09.249 2293-2314/com.ebook.video E/MediaPlayer: error (1, -2147483648)
04-30 00:28:09.257 2293-2293/com.ebook.video E/MediaPlayer: Error (1,-2147483648)
04-30 00:28:09.257 2293-2293/com.ebook.video D/VideoView: Error: 1,-2147483648

我看过很多关于这个错误代码的帖子,但无法理解任何解释。

编辑:我尝试播放不同格式的视频 - mkv (H264 mpeg-4 AVC)、3gp (H263)、mp4 (H264 mpeg-4 AVC)、flv (FLV1)。具有 3gp 扩展名和 H263 格式的视频播放正常,而其他人则给出上述错误消息。关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: android android-videoview


    【解决方案1】:

    Documentationandroid 5.1 之前不支持H265 所以我认为你对此有疑问。您可以使用ExoPlayer(或者更好的方式ExoMedia VideoPlayer 和 ExoPlayer 的简单包装器)。

    顺便说一句,使用以下代码可能会对您有所帮助:

    VideoView videoView = (VideoView) findViewById(R.id.videoView1);
    videoView.setVideoPath(YOUR_LOCAL_FILE_PATH);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()  {
             @Override
             public void onPrepared(MediaPlayer mp) {
                        Log.i(TAG,"Hoooray");
                     }
             });
    
    videoView.start();
    

    我从您的代码中发现您想在模拟器中显示视频,因此请先查看this 相关帖子。

    【讨论】:

    • 我尝试在 4.3 sdk 中播放的大多数视频的编码格式都是 H264。根据文档,H.264 AVC 自 Android 3+ 起就可用。如果我的解释有误,请纠正我。
    • @AMRUTHAKALIVARAPU 你是对的。你能提供更多的日志吗?还从以下 uri 测试 Mp4 视频,我在 VideoView 上测试它并且工作正常。 sample-videos.com
    • 我已经从你提到的链接中测试了 mp4 视频,但我仍然得到同样的错误。
    • 找不到一个简单的例子来演示 exoplayer 的使用。
    • @AMRUTHAKALIVARAPU 使用 ExoMedia 作为 exoplayer 的包装器,效果非常好。
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多