Member 14883729 Ответов: 1

Как мне...получить видео из firebase


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

private var path = "https://firebasestorage.googleapis.com/v0/b/video-app-af9bf.appspot.com/o/Videos%2FVideo_20200812_141638_.mp4?alt=media&token=d87f94e0-6ca3-4de2-856c-b228884185f7"


    val view = fragmentview.findViewById<VideoView>(R.id.v)
    val uri = Uri.parse(path)
    view.setVideoURI(uri)
    view.requestFocus()
     view.start();




Это мой xml файл


<?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.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:background="@drawable/gradient_2"
        android:layout_height="match_parent">
    
        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
            android:id="@+id/swiperefresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/gradient_2"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.4"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.02"
            tools:ignore="InvalidId,MissingConstraints">
    
    
    
    
            <androidx.recyclerview.widget.RecyclerView
    
                android:id="@+id/watchvideorecyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0"
                tools:ignore="PxUsage"/>
    
    
    
    
        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
    
        <ImageView
            android:id="@+id/memefragment"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:background="@drawable/ic_happy"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.64"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.025"
            tools:ignore="MissingConstraints" />
    
        <ImageView
            android:id="@+id/videofragment"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:background="@drawable/ic_videocam"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.348"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.025"
            tools:ignore="DuplicateIds,MissingConstraints" />
    
        <VideoView
            android:id="@+id/v"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
        <View
            android:layout_width="1dp"
            android:layout_height="42dp"
            android:background="#fff"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.024"
            tools:ignore="MissingConstraints" />
    
    
    </androidx.constraintlayout.widget.ConstraintLayout>


Что я уже пробовал:

Я пытаюсь для отображения видео от опорного пункта хранения, чтобы смотреть видео через URL-адрес.

1 Ответов

Рейтинг:
1

Sandeep Mewara

Для начала:
Убедитесь, что видео в хранилище действительно находится в формате, который могут воспроизводить устройства Android. VideoView могут играть только типы видео, которые поддерживает Android[^].

private var path = "https://firebasestorage.googleapis.com/v0/b/video-app-af9bf.appspot.com/o/Videos%2FVideo_20200812_141638_.mp4?alt=media&token=d87f94e0-6ca3-4de2-856c-b228884185f7"
val view = fragmentview.findViewById<VideoView>(R.id.v)
val uri = Uri.parse(path)
view.setVideoURI(uri)
view.requestFocus()
 view.start();

Вы передаете uri непосредственно в VideoView Это будет означать, что вы пытаетесь передать видео из данного uri. Firebase Storage не поддерживает потоковое видео, поэтому проблема в этом. Потоковая передача из uri требует, чтобы сервер на другом конце мог передавать данный ресурс потоком.

Поскольку вы хотите воспроизвести видео из хранилища, вам придется это сделать:
1. сначала загрузите весь файл целиком
2. сохраните его в локальном хранилище
3. затем передайте этот путь к файлу локального хранилища в Видеовью для воспроизведения.

Для простого теста передайте жестко закодированный локальный url-адрес в ваш Видеовью и убедитесь в этом сами.

Попробуйте.


Member 14883729

Но когда я попробовал это в другой деятельности, то это сработало правильно

Sandeep Mewara

Как общий, если это потоковое вещание, то оно не будет. Поверьте, что другой активностью будет изображение или носитель, загруженный локально.

Member 14883729

Сэр, на самом деле я новичок, и я научился программированию от вас, и я хочу, чтобы кто-то помог решить некоторые проблемы с кодированием. Могу ли я связаться с вами лично через Instagram или messenger

Sandeep Mewara

Извините, но я ими не пользуюсь. Вам нужно учиться самому и задавать вопросы только с помощью этого форума. Люди, которые могут помочь, ответят.

Member 14883729

Хорошо спасибо

Member 14883729

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