13

У меня есть фильм (m4v/h.264/AAC), который отлично воспроизводится на моем Mac, но недавно я обнаружил, что он не будет воспроизводиться на моем Apple TV3. После просмотра свойств этого файла фильма я вижу, что у него есть профиль High@4.1, но Apple TV3 поддерживает только High@4.0. Я думаю, что единственное свойство, которое делает это видео несовместимым, это максимальная скорость передачи видео, все остальные свойства выглядят так, как будто они поддерживаются в High@4.0.

Как я могу использовать ffmpeg для понижения этого видео до High@4.0?

Или я должен вместо этого изменить фактическое свойство (максимальная скорость передачи), которое делает это видео 4.1 вместо 4.0? Я обеспокоен тем, что если я просто изменю скорость передачи данных, хотя файл будет совместим с High@4.0, он все равно будет «помечен» как High@4.1 и, следовательно, все равно не будет воспроизводиться на моем Apple TV3.

2 ответа2

19

При кодировании с помощью libx264 вы можете установить профиль и уровень H.264 с помощью:

  • -profile:v - один из уровней high , main или baseline (и других, но здесь это не имеет значения)
  • -level:v - как определено в Приложении A стандарта H.264, например, 4.0 .

Например:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

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

Выходные данные будут иметь правильный профиль и уровень, установленные в его метаданных. Вы можете проверить это во время кодирования, где x264 говорит что-то вроде:

[libx264 @ 0x7fb26103a000] profile High, level 4.0

MediaInfo также может помочь вам проанализировать детали контейнера и кодека.

Конечно, перекодирование видео в некоторой степени ухудшит его качество, учитывая, что вы снова применяете преобразование с потерями. Попробуйте установить параметр -crf чтобы повлиять на параметр постоянного качества. Значение по умолчанию здесь 23, а значения между 18 и 28 считаются нормальными. Чем ниже, тем лучше качество. Если ваш входной сигнал имеет скорость передачи до 65000 кбит / с, скорее всего, после преобразования он все равно будет выглядеть довольно хорошо.

0

Ссылаясь на ваш комментарий, попробуйте эту команду:

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

ура

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .