Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Ffmpeg и сохранение пропоций
цитата
15/03/11 в 01:09
 Vyacheslav
Реально ли средствми ffmpeg любой ролик подогнать под фиксированый размер с растягиванием или обрезанием лишних краёв?
цитата
15/03/11 в 13:02
 samedi
http://www.ffmpeg.org/ffmpeg-doc.html#SEC6

Цитата:
`-s size'
Set frame size. The format is `wxh' (ffserver default = 160x128, ffmpeg default = same as source)

http://www.ffmpeg.org/ffmpeg-doc.html#SEC74

Цитата:
Crop the input video to out_w:out_h:x:y.

http://www.ffmpeg.org/ffmpeg-doc.html#SEC75

Цитата:
Auto-detect crop size.

Calculate necessary cropping parameters and prints the recommended parameters through the logging system. The detected dimensions correspond to the non-black area of the input video.


Последний раз редактировалось: samedi (15/03/11 в 23:17), всего редактировалось 1 раз
цитата
15/03/11 в 16:18
 Vyacheslav
А реально ли сначала подогнать размер изображения кропом одной из сторон до пропорционального (требуемого) размера, а затем масштабировать в нужный размер пропорционально?

например, на входе бывают разные мувики с размерами 1920x1080, 640x480, ... А в результате нужно получить 516x380 . Тоеесть хотелось бы зазумить пропорционально меньшую сторону исходника, а большую срезать по центру..

По сути формула ясна, но она применима, если все исходники больше, например только по ширене. Мы составляя пропорцию, получаем
516 х
--- = --------- , где х = 516*ВысотаИсх./380
380 ВысотаИсх.

x - это та виличина до которой нужно откропить Ширину исходника, чтобы он стал пропорционален 516x380
Но проблема в том, что исходник может оказаться "вытянутым" и кропить надо не ширину, а высоту, а это уже условие и реализуется только предварительным скриптом.
цитата
15/03/11 в 19:03
 Sterx
не забывай о "правиле 16"
цитата
15/03/11 в 19:19
 Vyacheslav
Да я то не забуду, только и без него не знаю как быть?..
цитата
15/03/11 в 21:38
 Sterx
сторона видео любая должна быть кратна 16
цитата
15/03/11 в 22:41
 Vyacheslav
И как это сможет помочь?
Что будет, если не кратна 16?
цитата
15/03/11 в 23:09
 samedi
Vyacheslav писал:
А реально ли сначала подогнать размер изображения кропом одной из сторон до пропорционального (требуемого) размера, а затем масштабировать в нужный размер пропорционально?


По-моему, такой возможности в ffmpeg изначально нет. Тебе нужно написать bash-скрипт, который на первом шаге получит размер видео, на втором - сделает ресайз с кропом.
цитата
20/03/11 в 02:10
 big_alexxx
можно сделать как то так:
получаем данные о файле
exec("/usr/local/bin/ffmpeg -i $movie_file 2>&1", $out);
preg_match выдергиваем данные о размере кадра
preg_match('/Video:.*([0-9]{1,5})x([0-9]{1,5})/iU', $out, $matches);
width=$matches[1]
height=$matches[2]
определяешь соотношение сторон, вычисляешь нужное новое соотношение
$new_width=твоя ширина;
$height_x=round($new_width * $height / $width /16, 0);
$new_height=16*$height_x;


Эта страница в полной версии