11

У меня есть видеопоток со следующими свойствами:

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc

Когда я запускаю его в VLC, мне нужно нажать "A", чтобы изменить соотношение сторон на «4:3», чтобы видео показывалось с правильным соотношением сторон.

Глядя на факты о видео, является ли ошибкой то, что а) фактическое видео было неправильно растянуто в пиксельных данных, или б) есть просто какое-то значение метаданных, которое было неправильно установлено?

Если первое, я знаю, я могу перекодировать видео и изменить ширину и высоту. Но если последнее, то какую команду ffmpeg запустить для исправления метаданных без перекодирования самого видео?

3 ответа3

27

Существует разница между примерным соотношением сторон (SAR) и отображаемым соотношением сторон (DAR). Если вы хотите изменить отображение видео в формате 4:3, вам нужно либо изменить фактические пиксели в изображении (путем масштабирования пикселей и изменения SAR), либо установить флаг метаданных, который на уровне контейнера сообщает внешнему медиа-плееры, чтобы растянуть изображение до желаемого DAR.

Вы не сможете масштабировать пиксели и изменять SAR без применения видеофильтра. Если вы выберете этот метод, вам необходимо будет перекодировать файл - поскольку вы не можете "скопировать поток" видеопотока при применении видеофильтра.

Чтобы масштабировать изображение и изменить SAR (во время транскодирования), попробуйте:

ffmpeg -i <INPUT_FILE> -vf scale=720:540 -c:v <Video_Codec> <OUTPUT_FILE>

С другой стороны, если вы просто хотите изменить флаг метаданных и настроить DAR, вы сможете скопировать видео в потоковом режиме. Для этого попробуйте:

ffmpeg -i <INPUT_FILE> -aspect 720:540 -c copy [OUTPUT_FILE]
2

ffmpeg не может изменить параметры видеопотока без перекодирования, MP4Box (часть gpac) и mkvmerge могут. В случае одного видеопотока и реального / правильного соотношения сторон 4:3, вы можете попробовать:

MP4Box -par 1=3:4 VideoFile.mp4

    "-par" : PixelAspectRatio (adjusts DAR + SAR with respect to the video resolution)
    "1"=   : stream number
    "3:4"  : aspect ratio (lower number 1st!)
    Changes are directly applied to "VideoFile.mp4", no copy

Чтобы проверить до и после: ffmpeg -i VideoFile.mp4

1

Ответ Дельгадо верен, что MP4Box может сделать это, но опция -par работает не совсем так, как описано. С параметром -out (чтобы не мешать вашему исходному файлу):

mp4box source.mp4 -out target.mp4 -par stream-number=width:height

Когда вы используете -par stream-number=width:height , вы определяете соотношение сторон пикселя, то есть результат деления соотношения сторон устройства на соотношение сторон хранилища. (Эквивалентно, вы описываете соотношение сторон исходного пикселя.) Например, предположим, что у вас есть источник DVD с разрешением 720 × 480, и правильное соотношение сторон экрана составляет 4:3. Для этого случая вам нужно:

mp4box source.mp4 -out target.mp4 -par 1=8:9

потому что (4/3) /(720/480) = 8/9.

Если источник представляет истинные пиксели SD NTSC (в этом случае предполагается, что только центральные 704 × 480 пикселей должны отображаться на экран 4 × 3 с 8-пиксельным пересканированием по обе стороны), правильная команда будет такой:

mp4box source.mp4 -out target.mp4 -par 1=10:11

потому что (4/3) /(704/480) = 10/11 - в точности соотношение сторон эталонного пикселя для видео NTSC стандартной четкости.

Для случая, приведенного в вопросе, если это действительно 4: 3, это дает очень странное соотношение пикселей: (4/3)/(720/416) = 104/135. Его ширина 720, что предполагает наличие источника DVD; это видео с частотой 25 кадров в секунду, предполагающее PAL, но PAR работает менее 1, предлагая NTSC. Полагаю, это может быть 4: 5 (очень близко к 104: 135), но я не знаю ничего, что могло бы дать такое соотношение пикселей; возможно, попробуйте сначала, а затем попробуйте 3: 4, если он выглядит слишком растянутым по горизонтали. Если вы уверены, что это точно 4: 3, просто используйте 104: 135.

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