Firebase: Возможно ли транслировать видео? [Дубликат]

Некоторое Содержимое Сообщества в свойстве FlowDocument.ColumnWidth, http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.columnwidth (v = vs.85) .aspx , говорит: «По умолчанию ширина столбца Flow Document в 20 раз превышает размер шрифта». Я добавил FontSize = "40" в FlowDocument и получил ширину, с которой я мог бы работать. Я просто должен был предоставить FontSizes везде, потому что мне действительно не хотелось 40.

34
задан gcas 16 June 2016 в 17:12
поделиться

2 ответа

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

  • Прямая трансляция (подписчики смотрят, как происходит событие)
  • Стиль Youtube (после чего видео и конечные пользователи будут смотреть по их усмотрению)

Создав потоковое приложение стиля Periscope с использованием Firebase Storage и базы данных Firebase Realtime, я настоятельно рекомендую против этого - мы загрузили три вторых фрагмента и синхронизировать их через базу данных реального времени. Несмотря на то, что он работал (на удивление хорошо), на очень хорошем интернет-ресурсе было ~ 5 секунд латентности, и это также было не самым эффективным решением (в конце концов, вы загружаете и сохраняете это видео, а также не транскодируете) , Я рекомендую использовать некоторый стиль WebRTC, созданный для транспорта видео, и используя базу данных Realtime для передачи сигналов вдоль стороны потока.

С другой стороны, определенно возможно создать мобильные функции YT для Firebase. Трюк здесь будет транскодировать видео (используя что-то вроде Zencoder или Bitmovin, подробнее здесь: https://cloud.google.com/solutions/media/ ), чтобы вырезать загруженное видео в меньшие куски разных разрешений (и разные форматы, например, для iOS требуется HLS для потоковой передачи). Вы можете хранить информацию о куске в базе данных реального времени (имя фрагмента, доступные разрешения, количество фрагментов) и загружать упомянутые фрагменты из хранилища по мере продвижения видео.

21
ответ дан Mike McDonald 16 August 2018 в 08:07
поделиться
  • 1
    Спасибо за советы и обмен опытом. Требование моего приложения больше похоже на вариант 2. пользователи смогут загружать короткие видеоролики, которые позже смогут передавать другие пользователи. На самом деле я действительно прочитал статью, которую вы мне прислали на днях, но надеялся, что может быть более сложная интеграция между двумя службами, которые там не зарегистрированы. Похоже, что с хранилищем Firebase и ценой GCP для этих задач мне может быть лучше изучить другую услугу для видео-хостинга. На данный момент я смотрю в Sprout Video и Vimeo Pro. – gcas 17 June 2016 в 23:02
  • 2
    Я бы посмотрел ziggeo.com , они довольно просты в использовании и могут иметь все, что вам нужно для успеха в этом пространстве. – Mike McDonald 18 June 2016 в 01:33
  • 3
    @gcas, что вы в конечном итоге использовали? Я тоже в той же лодке, используя firebase. вы использовали хранилище и транскодирование с использованием какой-либо другой службы (например, zencoder). – jasan 20 February 2017 в 07:31
  • 4
    Также я смущен про Vimeo Pro, как вы упомянули, не будет ли водяной знак Vimeo через iframe? – jasan 20 February 2017 в 07:42
  • 5
    @MikeMcDonald, можете ли вы подробнее рассказать о том, как делать потоки стилей YT, особенно о том, как делать кусок с помощью потоковой передачи пакетов вместо загрузки всего видео с Firebase Storage. Кроме того, может ли WebRTC использоваться для передачи одного или нескольких потоков видео, а именно: вещания? – Afeez Aziz 2 April 2017 в 14:58

Если вы хотите выпустить видео из Firebase Storage, это лучший способ, который я нашел. Это будет зависеть от размера вашего видеофайла. Я только запрашиваю файлы 10-30mb, поэтому это решение работает хорошо для меня. Просто обрабатывайте Urb Firebase как обычный url:

String str = "fire_base_video_URL";
Uri uri = Uri.parse(str);

videoViewLandscape.setVideoURI(uri);
progressBarLandScape.setVisibility(View.VISIBLE);
videoViewLandscape.requestFocus();
videoViewLandscape.start();

Если вы хотите зацикливать видео:

videoViewLandscape.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

И если вы хотите показать индикатор выполнения перед видео начинает делать это:

videoViewLandscape.setOnInfoListener(new MediaPlayer.OnInfoListener() {
    @Override
    public boolean onInfo(MediaPlayer mp, int what, int extra) {
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
            progressBarLandScape.setVisibility(View.GONE);
            return true;
        }
        else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){
            progressBarLandScape.setVisibility(View.VISIBLE);
            return true;
        }
        return false;
    }
});

Это не лучший способ сделать что-то, но он работает для меня пока пока не найду хорошую службу потокового видео.

14
ответ дан Tunaki 16 August 2018 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: