Android не может воспроизводить видео в режиме видео

Я 11-летний программист, и я получаю эту ошибку на своем телефоне, когда пытаюсь запустить код просмотра видео, чтобы я мог воспроизвести видео. Ошибка: «К сожалению, это видео не может быть воспроизведено». Мое видео, которое я скачала, находилось в необработанной папке под ресурсами, а код и xml в порядке. Я использую видеоформат mp4. Вот мой код:

package com.example.lenovouser.video;


import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    VideoView videoView = findViewById(R.id.video_view);

    Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.green_and_yellow_popsicle);
    videoView.setVideoURI(uri);
    videoView.setMediaController(new MediaController(this));
    videoView.start();


}

}

А вот мой xml-код:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout 
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.example.lenovouser.video.MainActivity">

<FrameLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    app:layout_constraintBottom_toBottomOf = "parent"
    app:layout_constraintLeft_toLeftOf = "parent"
    app:layout_constraintRight_toRightOf = "parent"
    app:layout_constraintTop_toTopOf = "parent">

    <VideoView
        android:id = "@+id/video_view"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content" />

</FrameLayout>

</android.support.constraint.ConstraintLayout>

Спасибо за ваше время!

Я поднял свой вопрос.

user10517855 19.10.2018 11:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
1 779
4

Ответы 4

попробуйте использовать это вместо этого, он использует необработанный URI вместо R.raw проверьте этот пост, если у вас все еще возникают проблемы Как воспроизвести видео из необработанной папки на устройстве Android?

String videoPath = "android.resource://" + getPackageName() + "/raw/green_and_yellow_popsicle";
videoView.start();

как бы то ни было, если вы все еще хотите использовать R.raw, используйте приведенный ниже код,

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.green_and_yellow_popsicle);
videoView.setVideoURI(uri);
videoView.setMediaController(new MediaController(this));
videoView.start();

Я пробовал это, но это не сработало, я все еще сказал ту же ошибку

user10517855 17.10.2018 12:23

Это не в журнале, а в телефоне .. вот ошибка, которая показывает:

user10517855 17.10.2018 12:26

Есть stacktrace, посмотрите в logcat, должна быть причина, почему он не воспроизводится

SamHoque 17.10.2018 12:26

журнал в порядке

user10517855 17.10.2018 12:27

что такое трассировка стека?

user10517855 17.10.2018 12:27

Вы используете студию Android?

SamHoque 17.10.2018 12:28

Да, я использую студию Android

user10517855 17.10.2018 12:29

Я не вижу расширения видеофайла. Я не уверен, что вы можете воспроизводить любое видео из необработанного, вместо этого можете создать папку с ресурсами и поместить туда видеофайл.

videoView.setVideoPath("file:///assets/myvideo.mp4");  
videoView.start();

Также убедитесь, что вы используете видеоформат, указанный в документации поддержки Android: https://developer.android.com/guide/topics/media/media-formats#recommendations

OP использует папку Raw, откуда вы взяли? R.raw не показывает расширение afaik

SamHoque 17.10.2018 12:32

Привет, видео находится в папке raw, а не в папке с возможностью рисования

user10517855 17.10.2018 12:34

Я не использую папку с возможностью переноса для видео

user10517855 17.10.2018 12:35

Возможно, у вашего телефона уровень API ниже 4.1 или попробуйте другое видео в другом формате.

Ни одно из этих решений у меня не сработало, но здесь вы можете узнать, как получить URI из папки R.raw: https://stackoverflow.com/a/8616187/8187578

Другие вопросы по теме