无法使用VideoView播放任何视频格式

时间:2014-03-26 18:50:20

标签: android android-fragments android-videoview

我希望有人可以帮助我。播放视频时遇到问题。我不能播放任何视频格式。我有一个看起来像这样的片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <VideoView
        android:id="@+id/video"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

我的片段活动中的以下代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
        Bundle savedInstanceState) {
    MediaController media_Controller = new MediaController(getActivity());
    View v = inflater.inflate(R.layout.fragment_video, parent, false);
    final VideoView videoView = (VideoView)v.findViewById(R.id.video);
    Uri uri = Uri.parse("android.resource//" + getActivity().getPackageName() + "/" + R.raw.videofile);
    videoView.setMediaController(media_Controller);
    videoView.setVideoURI(uri);
    videoView.start();

    return v; 
}

对于每个文件,我的应用程序都会抛出以下消息:

Sorry, this video cannot be played.

这些是我日志中的消息:

03-26 14:48:10.024: D/OpenGLRenderer(2226): Flushing caches (mode 0)
03-26 14:48:10.034: E/MediaPlayer(2226): error (1, -2147483648)
03-26 14:48:10.054: E/MediaPlayer(2226): Error (1,-2147483648)
03-26 14:48:10.054: D/VideoView(2226): Error: 1,-2147483648

EDIT1:

好的,我发现了一个问题。问题出在这一行:

Uri uri = Uri.parse("android.resource//" + getActivity().getPackageName() + "/" + R.raw.videofile);
videoView.setVideoURI(uri);

它没有获得正确的资源,因此无法播放文件。硬编码解决方案有效:

videoView.setVideoPath("android.resource://my.package.name/raw/videofile");

我不明白这两者之间有什么区别。

1 个答案:

答案 0 :(得分:0)

您正在尝试在VideoView中播放内部资源。不幸的是,VideoView是一个外部组件,它无法访问您的应用程序数据。 Here yoy得到了一个可以处理内部资源的VideoView的替代实现