webm dash encoding... Каковы правильные параметры ffmpeg?

Я озадачен кодированием видео в формат, совместимый с тире. Я иду от.mp4 к.webm

Во-первых, я использую OS X и ffmpeg 2.5.4.

Вот команды кодирования, которые я использую в своем тесте (я получил их отсюда):

ffmpeg -i IMG_0113.mp4 -c:v libvpx-vp9 -s 160x90 -b:v 25k -g 1 -tile-columns 4 -frame-parallel 1 -an -f webm -dash 1 video_160x90_25k.webm

ffmpeg -i IMG_0113.mp4 -c:v libvpx-vp9 -s 160x90 -b:v 50k -g 1 -tile-columns 4 -frame-parallel 1 -an -f webm -dash 1 video_160x90_50k.webm

ffmpeg -i IMG_0113.mp4 -vn -acodec libvorbis -ab 128k  -dash 1 audio_128k.webm

ffmpeg -f webm_dash_manifest -i video_160x90_25k.webm -f webm_dash_manifest -i video_160x90_50k.webm -f webm_dash_manifest -i audio_128k.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.mpd

Во-вторых, проблема не в моем сервере, так как я скачал примеры отсюда, и они работают на плеере dash.js на 100% при обслуживании с моего локального сервера.

Пожалуйста, кто-нибудь может указать мне правильное направление? Или предоставьте образец команд ffmpeg, используемых для получения правильного формата вывода.

Спасибо, Дин.

2 ответа

Решение

Хорошо, здесь идет, удалось решить это. Надеюсь, это спасет кого-то еще от неприятностей.

Во-первых, вот решение.

Шаг 1: (вырезать аудио из видео и создать один аудио файл)

ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 25k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_25k.webm

ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 50k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_50k.webm

ffmpeg -i IMG_0113.mp4 -vn -acodec libvorbis -ab 128k audio_128k.webm

Шаг 2: (используя sample_muxer из проекта libwebm, доступного здесь, для создания ключевых точек видео)

sample_muxer -i video_160x90_25k.webm -o video_160x90_25k_cued.webm

sample_muxer -i video_160x90_50k.webm -o video_160x90_50k_cued.webm

Шаг 3: (Используйте ffmpeg для создания ключевых точек звука)

ffmpeg -i audio_128k.webm -vn -acodec libvorbis -ab 128k -dash 1 audio_128k_cued.webm

Шаг 4: (Используйте ffmpeg для создания файла манифеста webm dash .mpd)

ffmpeg -f webm_dash_manifest -i video_160x90_25k_cued.webm -f webm_dash_manifest -i video_160x90_50k_cued.webm -f webm_dash_manifest -i audio_128k_cued.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.mpd

Во-вторых, вот объяснение.

ffmpeg (моя версия по крайней мере) неправильно создавала ключевые точки в видеофайлах (при добавлении параметра -dash 1). Я определил это, исследуя видеофайлы и понимая формат файла webm ( прочитайте это, если хотите узнать больше).

Затем я наткнулся на sample_muxer, прочитав эту страницу, и решил посмотреть, будет ли он лучше обрабатывать ключевые моменты видео, которые ffmpeg не получает. Вау Вау, это сделал!

Я заметил, что ключевые точки в извлеченном аудиофайле из ffmpeg (с использованием параметра -dash 1) создавались правильно!

Поколение ffmpeg манифеста webm dash также работает хорошо!

Для воспроизведения видео я обнаружил, что shaka-player работает лучше всего, но я не мог его использовать, так как мне требовалось воспроизведение видео из контейнера cefpython, а shaka-player не работал с последней версией cef (встроенная хромированная среда), включенной в выпуск cefpython.,

Затем я написал свой собственный плеер на основе этого полезного сайта из Google

Во всяком случае, надеюсь, что это помогает кому-то

У меня была похожая проблема. Когда я конвертировал mpeg2 в vp9 с помощью ffmpeg v3.4.2, выходное видео не было доступно для поиска в проигрывателе VLC (поиск занял много времени). Когда я попробовал ffmpeg v4.0.2, видео было доступно для поиска в проигрывателе VLC. Похоже, это исправлено в ffmpeg v4.0.2

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