#java #android #android-videoview
#java #Android #android-videoview
Вопрос:
Я очень близко подобрался к воспроизведению своего видео, но все еще сталкиваюсь с проблемой. Вот мой код из MainActivity.java
:
public void my_vid(View view){
setContentView(R.layout.my_vid);
VideoView vid = findViewById(R.id.video_view);
String vid_path = "/sdcard/Download/Track_horizontal_plane.mp4";
Uri uri = Uri.parse(vid_path);
vid.setVideoURI(uri);
MediaController mediaController = new MediaController(this);
vid.setMediaController(mediaController);
mediaController.setAnchorView(vid);
}
Вот мой соответствующий макет:
<VideoView
android:id="@ id/video_view"
android:layout_width="411dp"
android:layout_height="667dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
Наконец, вот ошибка, которую я получаю:
2020-12-16 12:40:15.204 25622-25622/com.android.choice D/MediaPlayerNative: getMetadata
2020-12-16 12:40:26.286 25622-25654/com.android.choice E/MediaPlayerNative: error (100, 2)
2020-12-16 12:40:26.287 25622-25622/com.android.choice E/MediaPlayer: Error (100,2)
2020-12-16 12:40:26.287 25622-25622/com.android.choice D/VideoView: Error: 100,2
2020-12-16 12:40:26.302 25622-25654/com.android.choice E/MediaPlayerNative: error (1, -2147479551)
2020-12-16 12:40:26.401 25622-25622/com.android.choice E/MediaPlayer: Error (1,-2147479551)
2020-12-16 12:40:26.401 25622-25622/com.android.choice D/VideoView: Error: 1,-2147479551
Когда я открываю макет содержимого, содержащий видеообзор, MediaController работает и даже правильно сообщает мне длину выбранного мной видео. Как только я нажимаю play на mediacontroller, он сообщает мне, что видео не может быть воспроизведено. Файл — это mp4
файл, поэтому я думаю, что проблем быть не должно. Есть идеи, где я ошибаюсь? Спасибо за помощь.
Ответ №1:
1. пожалуйста, убедитесь, что вы анализируете URI из жестко заданной строки правильно. было бы лучше, если бы вы попробовали использовать фактический URI. здесь вы можете увидеть пример получения видео из галереи.
fun chooseVideoFromGallery() {
val intent = Intent()
intent.type = "video/mp4"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(
Intent.createChooser(intent, "Select Video"),
REQUEST_TAKE_GALLERY_VIDEO
)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) {
val uri: Uri? = data!!.data
}
}
}
2. если проблема не в URI, было бы лучше, если бы вы использовали Exo player (созданный Google) вместо видеопроигрывателя, чтобы он поддерживал широкий спектр видео- и аудиоконтейнеров.