LINUX.ORG.RU

ffmpeg hls разделение видео и аудио дорожек на отдельные файлы

 


0

1

Приветствую. С ffmpeg до этого не сталкивался, как и со всей этой сферой аудио\видео, но сейчас стоит задача разбить аудиопотоки в видео на разные файлы. Видео само разбить на сегменты в hls для воспроизведения на сайте. Если короче, то нужно сделать так же, как в примере от Apple

На данный момент вывел такую команду для этой цели

ffmpeg -ss 00:00:00.0 -y -i example.mkv -level 4.1 -an -c:v libx264 -s:v 1920x1080 -crf 20 -sc_threshold 0 -g 48 -keyint_min 48 -hls_list_size 0 -hls_time 4 -hls_allow_cache 1 -b:v 2901k -maxrate 3482k -muxdelay 0 -muxpreload 0 -hls_segment_filename out/1080/p_%04d.ts -hls_fmp4_init_filename out/1080/p_init.mp4 -pix_fmt yuv420p -r 30 -strict unofficial out/1080/variant_ts.m3u8 \
-y -map 0:1 -codec aac -ac 2 -f segment -segment_time 4 -segment_list_size 0 -segment_list out/aud1/variant.m3u8 -segment_format aac -muxdelay 0 -muxpreload 0 -strict unofficial out/aud1/out%d.aac \
-y -map 0:1 -codec copy -f segment -segment_time 4 -segment_list_size 0 -segment_list out/aud2/variant.m3u8 -segment_format ac3 -muxdelay 0 -muxpreload 0 -strict unofficial out/aud2/out%d.ac3

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

Рассинхрон идёт из-за "-r 30".
Идёт дроп кадров, и по этому звук с видео расходятся.
Проще не использовать фиксированную частоту кадров.
Для x264 всё проще, можно юзать qscale 1 например. Качество не теряет, зато ужимает хоршо. И -map_chapters -1 лучше ставить, потому чне не все плееры адекватно принимают резанные как DVD переходы к отрезку видео.

red_rain
()
Ответ на: комментарий от red_rain

Теоретически дорожки должны оставаться синхронными при любой частоте.

Но тут ffplay, он жутко примитивный, софтовый и плохо управляется. Видимо у него нет механизмов исправления накопившихся ошибок. Я им пользовался когда приходилось смотреть видео с чисто софтовым декодом на атоме N270, плеер часто захлёбывался и постоянно накапливал рассинхронизацию, и это ещё было лучшим вариантом, остальные требовали ещё больше цпу и ещё чаще лагали.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

Недавно смог затестить в своих плеерах, где будем проигрывать. Там такого рассинхрона уже нет. Ещё помимо ffplay в mpv запускал, там такая же история была.

jessiekibl
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.