Как мне транскодировать файл wmv для воспроизведения в плеере html5? - PullRequest
0 голосов
/ 13 октября 2018

Я работал над этим довольно долго и до сих пор не нашел решение, которое работает.Мне нужен способ live преобразовать (перекодировать) файл .wmv для воспроизведения в веб-плеере html5.

У меня есть установленный сервер Linux (Apache) для потоковой передачи видеофайлов через веб-плеер html5 (Video.js), предназначенный для браузеров Chrome и Firefox.Я имею в виду типы файлов .mp4 (H.264), .mkv и .wmv.Хорошей новостью для меня является то, что я могу иметь дело с mp4 и mkv изначально, однако я не могу играть в wmv.Кроме того, мне приходится иметь дело с большим количеством файлов, периодически меняться, и может быть довольно большим .

После долгих исследований и прочтения много раз, как вы можете 't stream wmv напрямую, я понял, что у меня есть два варианта.Либо преобразуйте файл в поддерживаемый формат, либо в реальном времени перекодируйте файл для использования в веб-плеере.Из-за количества файлов и их размера (и периодически меняющегося) преобразование файла просто неосуществимо.Так что я застрял с потоковым вещанием / транскодированием.Я подумал, что будет ffmpeg, но мне еще предстоит выяснить, как получить ffmpeg для потоковой передачи в проигрыватель html5.

Итак, как мне взять существующий файл .wmv и выполнить потоковую передачу вhtml5-плеер?

То, что я до сих пор пробовал:

Попытка создать плейлист m3u8 и надеяться, что он волшебным образом сработает.

ffmpeg -i "hello.wmv" -s 640x480 -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out_%6d.ts

Простое копирование в mp4и потоковая передача в то время как ffmpeg все еще развивается.Очевидно, что это не сработало.

ffmpeg -i "hello.wmv"  -vcodec copy video.mp4

Преобразование в формат webm и потоковая передача webm, пока ffmpeg все еще выполняется.Это действительно показывало видео в течение нескольких секунд в html-плеере:

ffmpeg -i "hello.wmv" -codec:a libvorbis -codec:v libvpx -b:a 128k -b:v 1200k video.webm

Ffmpeg использовать не требуется (также думал о vlc), требуется html5-плеер.Полное преобразование, а затем потоковая передача не является приемлемым вариантом, поскольку размеры файлов могут быть слишком большими и периодически меняться.Какую команду / программу можно использовать для потоковой передачи файла для воспроизведения в html-плеере?

1 Ответ

0 голосов
/ 14 октября 2018

Попробовав МНОЖЕСТВО разных способов, я наконец-то нашел подходящее решение.Публикация здесь для тех, кто может столкнуться с этим в будущем.Решение, которое я выбрал, заключается в использовании HLS (прямой эфир), который сегментирует файл.Используя выходной файл .m3u8, я использовал его в теге видео для моего html5-плеера.

Вот что я использовал в ffmpeg.Обратите внимание, что я установил предустановку на сверхбыстрый (потому что libx264 был очень медленным из-за того, что я видел).Я уверен, что есть более эффективные параметры для использования с ffmpeg, и я определенно продолжу проводить дополнительное тестирование, но это подтверждается как работающее:

ffmpeg -i "hello.wmv" -preset ultrafast -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list play_file.m3u8 -segment_list_type hls -segment_list_size 0 out_%6d.ts 

В теге html video просто используйте:

 <source src="play_file.m3u8" type="application/x-mpegURL">

Примечание для тех, кто может столкнуться с этим в будущем: если вы столкнетесь с ошибкой «файл не поддерживается» при использовании типа x-mpegURL, значит что-то не так с вашим исходным js.Убедитесь, что у вас есть hls.js (в моем случае videojs-contrib-hls.js), иначе он выдаст ошибку.Мне потребовалось много времени, чтобы понять, что проблема была не в браузере, а в html js.

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

...