java - 无法使用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>
解决方案
-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();
推荐阅读
- apache - openshift pod中的网关超时
- flutter - 如何在 Flutter 中使用 Dart 语言获取 android 手机 IMEI 号码?
- crm - 在综管系统企业云中更新数据的工作流程
- c++ - 内联函数如何解析多个函数定义?
- python-2.7 - Python2.7 & SQLite3: DELETE & SELECT with DATE(SUBSTR()) DO NOT working
- javascript - 映射不是来自translation.json的数据时如何使用react-i18next
- react-native - 从 React 本机 webview 下载 inf PDF 在 Android 上打开后给出“无效的 pdf 格式或损坏”,但在 iOS 上工作正常
- javascript - Discord 机器人未启动
- types - PowerBI:在可视化中使用多种数据类型格式进行测量
- r - 从R中的日期时间提取月份和年份