Перетворіть відео у фіксований розмір екрана, обрізаючи та розміруючи розмір


14

Я сам спробував це зрозуміти, але безліч варіантів мене просто бентежить.

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

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

Точна кінцева річ, яка мені потрібна, - це 720x480 у XVid AVI з аудіодоріжкою MP3.

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

Хто-небудь може сказати мені командний рядок для запуску - або, принаймні, донести мені частину / більшу частину шляху? Якщо для цього потрібно кілька командних рядків (запустіть X, щоб отримати дозвіл, зробіть цей обчислення, а потім запустіть Y з результатом цього обчислення), я можу це зробити сценарієм.

Відповіді:


22

Щось подібне повинно працювати з належними параметрами для кожного випадку:

Примітка. Оригінальна відповідь була розміщена за цим посиланням: Як можна обрізати відео за допомогою ffmpeg? який я спочатку публікував і редагував кілька разів, щоб оновити його до найновіших варіантів в останніх версіях ffmpeg. Велике спасибі slhck , Джонатане. , Антон Рудешко , LordNeckbeard та майбутні виконавці .


В останніх версіях FFmpeg використовуйте cropфільтр :

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

Де такі варіанти:

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

Оригінальне зображення

оригінальне зображення
Оригінальне зображення розміром 320x240

Приклад 1

80х60

Щоб обрізати ділянку розміром 80 × 60, починаючи з положення (200, 100):

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

Приклад 2

нижня права чверть

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

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 пікселів зверху, і 20 знизу

Обріжте 20 пікселів зверху та 20 знизу:

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

Попередній перегляд

Ви можете взяти урожай (хе-хе) і переглянути його в прямому ефірі ffplay:

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

Таким чином можна експериментувати та коригувати обрізання без необхідності кодувати, переглядати, повторювати.

Примітки

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

  • За замовчуванням кодер для MP4 - це libx264(H.264 відео) або mpeg4(MPEG-4, частина 2 відео), залежно від вашої ffmpegзбірки. Додаткову інформацію див. У FFmpeg Wiki: Посібник з кодування відео H.264 .

  • Замість обрізання та повторного кодування розгляньте можливість обрізання під час відтворення. Це можливо з будь-яким гравцем, який варто використовувати.

  • Стародавні ffmpegбудує б -croptop, -cropbottom, -cropleft, -croprightваріанти натомість cropфільтра. Якщо це так для вас, тоді отримайте сучаснийffmpeg . Розробка дуже активна, і немає ніяких причин використовувати антикваріат.


Додаткові бали для попереднього перегляду, завдяки ffplayякому використання ffmpegдля обрізання розміру екрана відео є практичним.
SpeedCoder5
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.