Преобразование видео в фиксированный размер экрана путем обрезки и изменения размера

Я пытался выяснить это сам, но множество вариантов просто сбивает меня с толку.

В идеале я хочу использовать ffmpeg или mencoder (или что-то еще, но те два, которые я знаю, у меня есть работа), чтобы конвертировать любое входящее видео в фиксированный размер экрана.

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

Последнее, что мне нужно, это 720x480 в XVid AVI с аудиодорожкой MP3.

Я нашел много страниц, показывающих, как изменить размер до максимального разрешения, но мне нужно, чтобы видео имело именно такое разрешение (с обрезанными лишними частями, без черных полос).

Может кто-нибудь сказать мне командную строку для запуска - или, по крайней мере, получить мне / большую часть пути туда? Если это должно быть несколько командных строк (запустите X, чтобы получить разрешение, выполните это вычисление, а затем запустите Y с выводом этого вычисления), я могу написать это.

13
задан 18 March 2015 в 18:29

1 ответ

Что-то вроде этого должно работать с надлежащими параметрами для каждого случая:

Примечание: Исходный ответ был отправлен в этой ссылке: Как я могу обрезать видео с ffmpeg? который первоначально отправленный мной и редактируемый несколько раз для обновления его к новейшим опциям в новых версиях ffmpeg. Большое спасибо slhck, Jonathan., Anton Rudeshko, LordNeckbeard и будущие специалисты по обслуживанию.


В последних версиях FFmpeg используйте crop фильтр:

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Где опции следующие:

  • out_w ширина выходного прямоугольника
  • out_h высота выходного прямоугольника
  • x и y укажите верхний левый угол выходного прямоугольника

Исходное изображение

original image
Исходное 320x240 изображение

Пример 1

80x60

Обрезать 80×60 раздел, начинающий с положения (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

Пример 2

bottom right quarter

Обрезать нижнюю правую четверть:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

Это совпадает с:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Который совпадает с:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Можно обратиться к входному размеру изображения с in_w и in_h как показано в этом первом примере. Выходная ширина и высота могут также использоваться с out_w и out_h.

Пример 3

20 pixels from the top, and 20 from the bottom

Обрежьте 20 пикселей от вершины, и 20 от нижней части:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Фильтр будет автоматически центрировать обрезку если x и y опущены такой как в этом примере.

Предварительный просмотр

Можно взять обрезку (heh heh) и предварительно просмотреть ее живой с ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

Таким образом, можно экспериментировать и скорректировать обрезку без потребности закодировать, просмотреть, повториться.

Примечания

  • crop документация фильтра

  • Кодер по умолчанию для MP4 libx264 (Видео H.264) или mpeg4 (Видео части 2 MPEG-4) в зависимости от Вашего ffmpeg сборка. См. Wiki FFmpeg: Видео H.264, Кодирующее Руководство для большего количества информации.

  • Вместо того, чтобы обрезать и повторно закодировать, рассмотрите обрезку после воспроизведения. Это возможно с любым плеером, который стоит использовать.

  • Древний ffmpeg сборки используются -croptop, -cropbottom, -cropleft, -cropright опции вместо crop фильтр. Если это верно, для Вас затем получают современное ffmpeg. Разработка очень активна и нет никакой причины использовать старинные вещи.

21
ответ дан 18 March 2015 в 18:29

Другие вопросы по тегам:

Похожие вопросы: