У меня есть следующий код для преобразования HDV-видео в готовый к сети mp4:
ffmpeg -i hdv-input.m2t -crf 28 -c:a aac -b:a 80k -ac 1 -strict -2 -movflags +faststart h-264-out.mp4
Проблема в том, что в этой команде нигде не указывается пропорция пикселя. Если вы не в курсе, видеофайлы HDV имеют разрешение 1440x1080, но пиксели не квадратные. При декодировании для отображения пиксели растягиваются до полного разрешения 1920x1080. Это называется анаморфотным видео, и этого следует избегать при создании видео для конечных пользователей.
Честно говоря, я не знаю, создаются ли mp4-файлы, которые я создаю с помощью приведенной выше команды, с квадратными пикселями, но я хочу убедиться, что это так. Какие правильные параметры мне нужно добавить к этой команде, чтобы обеспечить квадратные пиксели в моем выходе mp4? Должен ли я также установить разрешение, и как мне это сделать? Кажется, должна быть и -c:v
команда, но я действительно не знаю.
Вы можете использовать комбинацию фильтров Scale и Setsar.
ffmpeg -i hdv-input.m2t -vf "scale=iw*sar:ih,setsar=1" -crf 28 -c:a aac -b:a 80k -ac 1 -movflags +faststart h-264-out.mp4
Ширина масштабатора, которую необходимо установить в current width x sample/pixel aspect
. Если он уже равен 1, он равен new width = old width
. После этого я добавил setsar, чтобы убедиться, что выходной SAR равен 1
.
Для формата MP4 видеокодеком по умолчанию является H.264. Если это то, что вы хотите, не нужно явно устанавливать c:v
.
(Для битрейта < 128k libfdk_aac
это лучше, чем собственный кодировщик AAC.)
-strict -2
не требуется для использования собственного кодировщика AAC, если ваш ffmpeg выпущен после декабря 2015 года.
пользователь 24601
Гьян
Роб
Гьян
width = DAR x height
. Для варианта использования OP setdar будет избыточным. Для других видео это будет принудительно отображать 16: 9,пользователь 24601
libfdk_aac
? Я перешел-c:a aac
на-c:a libfdk_aac
и получаю сообщение об ошибке «неизвестный кодировщик« libfdk_aac »».Гьян
КРЕЙГ