首页 > 解决方案 > 无法使用java在android studio中播放原始视频

问题描述

为什么我不能在我的应用程序中播放原始视频?我错过了我的代码中的某些内容吗?每次我在列表视图中单击视频名称时,此错误都会出现在我的 logcat 2020-11-22 12:34:40.306 8395-8426/com.ncf.fitnessandexercise E/MediaPlayerNative: error (1, -2147483648) 2020-11- 22 12:34:40.325 8395-8395/com.ncf.fitnessandexercise E/MediaPlayer:错误 (1,-2147483648)

在此处输入图像描述

public class Zumba extends AppCompatActivity {
    VideoView videoView;
    ListView listView;
    ArrayList<String> videoList;
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zumba);
        videoView=findViewById(R.id.videoview);
        listView=findViewById(R.id.lvideo);
        videoList= new ArrayList<>();
        videoList.add("Basic_Zumba_Steps_for_Quick_Weight_Loss_Fitness");
        videoList.add("Closer_Zumba_Live_Love_Party");
        videoList.add("Senorita_Zumba_Dance_Fitness");
        videoList.add("Short_Zumba_Dance_Workout_for_Beginners");


        adapter= new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,videoList);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {
                    case 0:
                        videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video));
                        break;
                    case 1:
                        videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video2));
                        break;
                    case 2:
                        videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video3));
                        break;
                    case 3:
                        videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video4));
                        break;

                    default:
                        break;
                }
                videoView.setMediaController(new MediaController(Zumba.this));
                videoView.requestFocus();
                videoView.start();
            }
        });
    }
}

这是我的xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ncf.fitnessandexercise.Zumba">

    <VideoView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/videoview"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"/>

    <ListView
        android:id="@+id/lvideo"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/videoview">
    </ListView>

</RelativeLayout>

标签: javaandroid

解决方案


-2147483648 对应于 frameworks/native/include/utils/Errors.h 中的 UNKNOWN_ERROR

这表明错误的来源很难确定,因为它是一个非常通用的返回值,由上面提到的编解码器和兼容性问题以及线程取消和其他几种类型引发。

你可以使用android exoplayer,它支持大部分视频格式

implementation 'com.google.android.exoplayer:exoplayer:2.X.X'

创建播放器

SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();

构建媒体项目。

MediaItem mediaItem = MediaItem.fromUri(videoUri);

设置要播放的媒体项目。

player.setMediaItem(mediaItem);

准备播放器。

player.prepare();

开始播放。

player.play();

github.com/google/ExoPlayer

StackOverflow 上的相关问题


推荐阅读