Конвертация видео для просмотра на телевизоре
Есть исходный видеофайл.mkv размером 8Gb, который не получается запустить на телевизоре через USB.
# Параметры исходного файла
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,codec_type,width,height,bit_rate input.mkv
[STREAM]
codec_name=hevc
codec_type=video
width=3840
height=1632
bit_rate=N/A
[/STREAM]
В man телевизора указана информация: разрешение 1920*1080, частота кадров 60, скорость передачи данных 20Мб/с.
Пробовал конвертировать файл следующими командами:
# для просмотра на старом нетбуке
# на нетбуке работает без тормозов, на телевизоре не запускается
ffmpeg -i input.mkv -vcodec libx264 -crf 28 -acodec aac -ab 128k -s 1024x600 output.mkv
# забыл указать разрешение -s 1920*1080, но думаю: не критично
# выходной файл в формате .mp4
ffmpeg -i input.mkv -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 192k -movflags +faststart output.mp4
Видео конвертируется довольно долго (не смотря на двухпроцесорный серверный ПК). По этому нет возможности поэкспериментировать более разнообразно. Прошу помочь.
Ответы (1 шт):
У меня абоненты забирают видео по сети, но не думаю, что должна быть разница. Примерно 20к абонентов смотрят на разных телевизорах и не жалуются.
Подготовка фильмов такая:
ffmpeg \
#Для экспериментов можно указать маленький кусочек с длительностью 20сек
-t 00:00:20 \
-i input.mkv \
#Фиксированный битрейт 6М
-b:v 6M -minrate 6M -maxrate 6M -bufsize 2M \
#кодек
-c:v libx264 -preset slow -profile:v main -x264-params nal-hrd=cbr \
#пиксельный формат
-pix_fmt yuv420p \
#масштабирование с подгонкой пропорций
-vf "scale=min(iw*1080/ih\\,1920):min(1080\\,ih*1920/iw), \
pad=1920:1080:(1920-iw)/2:(1080-ih)/2, \
#для субтитров надо добавить ещё один фильтр
#c указанием имени файла субтитров (будем считать, что они в этом же файле)
#и с номером дорожки субтитров, например 3
subtitles=input.mkv:si=3
" \
#Аудио
-c:a aac -ac 2 -b:a 192k \
#формат
-f mp4 \
#для браузеров была еще перестановка заголовков и фрагментирование
#Но многие телевизоры показывали чёрный экран, так что отказались
#-movflags +faststart+frag_keyframe+empty_moov
output.mp4
Эта команда не включает выбор аудио/видеодорожек. Предполагается, что дорожек по одной.
Конечно, комментарии надо удалить.
Для того чтобы предварительно посмотреть содержимое файла, подойдёт вот такая команда:
ffprobe -hide_banner -v quiet -show_entries format:stream:error -i input.mkv
Если в файле есть субтитры - увидим номера их дорожек и описание, по нему иногда можно понять, какие выбрать.