Потоковая передача видео с камеры с помощью ffmpeg в Firefox через Dash.js

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

Проблема

Браузеры на базе Chromium воспроизводят потоковое аудио и видео, но Firefox воспроизводит только аудио и не отображает видео.

Фон

Отличный учебник Udemy предоставил мне эту команду:

      ffmpeg -f dshow -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -rtbufsize 256M -hls_master_name stream.m3u8 -hls_playlist 1 -seg_duration 2 stream.mpd

Обратите внимание: сейчас я работаю над Windows, но надеюсь, что в Linux, моей конечной цели, все будет работать так же.

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

Эта команда создает файл .mpd и различные файлы фрагментов, как и следовало ожидать. Я использую проигрыватель DashJS для воспроизведения потокового видео. Вкратце, код выглядит следующим образом:

JS

      import dashjs from 'dashjs'
import { ref, onMounted } from 'vue'
const thevideo = ref(null)
onMounted(() => {
  const player = dashjs.MediaPlayer().create();
               player.initialize(thevideo.value!, '/stream/stream.m3u8', true);
}

HTML

      <video width=600 height=300 ref="thevideo" controls></video>

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

Как я уже упоминал, эта настройка отлично работает в таких браузерах, как Chrome и Edge. я используюсоздатьнепосредственно впапку, и проигрыватель Dash.js сможет воспроизводить видео и аудио.

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

Может кто-нибудь знает, что здесь происходит?

Кстати, когда я пытаюсь создать поток HLS с помощью такой команды:

      ffmpeg -f dshow -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -rtbufsize 265M -fflags flush_packets -max_delay 5 -flags -global_header -hls_time 5 -hls_list_size 3 -y stream.m3u8

ни один браузер не может воспроизвести файл .m3u8. Я не вижу ошибок в Chrome, но Firefox сообщает, что не может проанализировать поток.m3u8 как XML-файл. Я не знаю, почему он пытается это сделать, потому что это не XML-файл, и я никогда не советовал относиться к нему как к таковому. Однако , когда я использую эту команду с реальным видеофайлом в качестве входных данных вместо входа с камеры, она работает хорошо.

Я в порядке, просто работаю с mpeg-dash, но если кто-нибудь может помочь мне сделать m3u8 из входных данных камеры, я тоже был бы признателен. Но, по крайней мере, мне бы хотелось помочь заставить поток MPEG-DASH работать в Firefox. Большое спасибо.

1 ответ

Наконец-то я нашел эту проблему в Shaka player, и она говорит именно о моей проблеме. Клянусь, я уже пытался добавить-vf format=yuv420p, но я сделал это еще раз, и теперь видео появляется в Firefox. Мне не ясны все детали, но речь идет о том, что Firefox ожидает более распространенного типа « цветового пространства » для этого видео.

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