У меня есть видеопоток со следующими свойствами:
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 запустить для исправления метаданных без перекодирования самого видео?
-c copy
и масштабировать одновременно; однако вы можете использовать-aspect
для изменения соотношения сторон на уровне контейнера (но не на уровне потока).-aspect
работает для воспроизведения вffplay
, но не в WMP или MPC-HC. Он добавляет дополнительный элемент SAR / DAR кStream #…
информационной строке,FFmpeg/probe/play
но, похоже, не является решением для общего воспроизведения. Растягивание видео с помощью окна кажется самым простым решением для воспроизведения MPC-HC.Ответ Дельгадо верен, что MP4Box может сделать это, но
-par
опция не работает так, как описано. С-out
параметром (чтобы не мешать вашему исходному файлу):Когда вы используете
-par stream-number=width:height
, вы определяете соотношение сторон пикселя, то есть результат деления соотношения сторон устройства на соотношение сторон хранилища. (Эквивалентно, вы описываете соотношение сторон исходного пикселя.) Например, предположим, что у вас есть источник DVD с разрешением 720 × 480 и правильное соотношение сторон экрана 4: 3. Для этого случая вам нужно:потому что (4/3) / (720/480) = 8/9.
Если источник представляет истинные пиксели SD NTSC (в этом случае предполагается, что только центральные 704 × 480 пикселей должны отображаться на экран 4 × 3 с 8-пиксельным пересканированием по обе стороны), правильной командой будет:
потому что (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.
источник
ffmpeg не может изменить параметры видеопотока без перекодирования, MP4Box (часть gpac ) и mkvmerge могут. В случае одного видеопотока и реального / правильного соотношения сторон 4: 3, вы можете попробовать:
Для проверки до и после:
ffmpeg -i VideoFile.mp4
источник
Изменение SAR без перекодировки также работает с
ffmpeg
на.mp4
использование вh264_metadata
качестве Gyan указывало здесь :источник