You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中VideoView播放raw目录视频报错:无法播放此视频

VideoView播放raw目录视频提示“无法播放此视频”的解决办法

在Android Studio中使用VideoView播放raw目录下的视频时,模拟器提示“can't play this video”(无法播放此视频),相关代码及错误截图如下,且已尝试常规解决方案仍未解决:

无法播放视频错误截图

布局代码(activity_main.xml)

<VideoView
    android:id="@+id/testView"
    android:layout_width="wrap_content"
    android:layout_height="308dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.574"/>

逻辑代码(MainActivity.kt)

package com.example.video_player

import android.net.Uri
import android.net.Uri.*
import android.widget.MediaController
import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val videoView = findViewById<VideoView>(R.id.testView);
        //Creating Media Controller
        val mediaController = MediaController(this)
        mediaController.setAnchorView(videoView)
        //specify the location of media file
        val uri:Uri = parse(
            "android.resources://" + packageName
                    + "/raw/test"
        )
        //Setting MediaController and URI, then starting the videoView
        videoView.setMediaController(mediaController)
        videoView.setVideoURI(uri)
        videoView.requestFocus()
        videoView.start()
    }
}

可行解决方向

1. 校验视频格式与编码兼容性

VideoView仅支持MP4(H.264视频编码+AAC音频编码)、3GP等标准格式,非标准编码或MKV、AVI等格式会直接无法播放。

  • 用格式工厂等工具将视频转码为H.264+AAC编码的MP4格式,再放入raw目录。

2. 修正资源URI生成方式

当前URI拼接可能存在隐性问题,替换为更可靠的写法:

// 方式1:通过资源ID生成URI
val uri = Uri.parse("android.resource://$packageName/${R.raw.test}")
// 方式2:直接传入资源路径
videoView.setVideoPath("android.resource://$packageName/${R.raw.test}")

3. 检查视频文件命名与存放

  • 视频文件名只能包含小写字母、数字、下划线,不能有大写、空格或特殊字符(比如test.mp4不能写成Test_Video.mp4)。
  • 确认文件存放在res/raw目录下,且Android Studio已正确识别该文件(可在Project视图中查看)。

4. 添加错误监听定位根源

给VideoView添加错误监听器,获取具体错误码排查问题:

videoView.setOnErrorListener { mp, what, extra ->
    Log.e("VideoError", "错误码:$what,额外信息:$extra")
    true
}

根据错误码查询Android官方文档,可明确是格式不支持、文件损坏还是其他系统层面问题。

5. 排除设备兼容性问题

  • 改用真机测试,部分旧版本模拟器对编码支持存在缺陷。
  • 更换不同系统版本、不同型号的模拟器重试。

内容的提问来源于stack exchange,提问作者Kiran Jadhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:52:32