Автор Тема: ffmpeg: фиксиране на лого в клип, при конвертиране  (Прочетена 934 пъти)

theshit

  • Гост
Здравейте, как да направя така, че логото да е с едни и същи размери при всички клипове, които конвертирам с ffmpeg. Идеята е такава, че при клипове с голяма резолюция логото излиза нормално а при клипове с малка такава - логото излиза огромно. Няма  ли някакъв начин да въведа размера на логото в процент а не в пиксели?  ??? ??? Мисля, че все трябва да има някакъв начин  >:(
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Не зная и не намирам такава опция във филтрите на ffmpeg (между другото, поне в Debian 7 вече се казва avconv), затова ще ти предложа да си направиш изчислението за размера извън командата и след това да плесваш готовата стойност във филтрите. Изчислението можеш да го направиш например така:
Код
GeSHi (Bash):
  1. video_file='/път/до/видео/файла'
  2. logo_file='/път/до/логото'
  3. logo_size_percent=5
  4. output_file='/път/до/крайния/файл'
  5.  
  6. video_size=$(exiftool $video_file | awk '/Image Size/ {print $4}')
  7. video_width=${video_size%x*}
  8. video_height=${video_size#*x}
  9.  
  10. logo_width=$((video_width*$logo_size_percent/100))
  11. logo_height=$((video_height*$logo_size_percent/100))
  12.  
  13. avconv -i $video_file -vf "movie=$logo_file, scale=$logo_width:$logo_height [watermark]; ....." $output_file
Тук използвам инструмента ExifTool, за да взема размерите на видеото. Ако го нямаш инсталиран, пакетът в Debian-базираните дистрибуции е libimage-exiftool-perl. В RedHat-базираните май е perl-Image-ExifTool. По принцип размерите на видеото могат да се видят и директно с avprobe (ffprobe, "ffmpeg -i", "avconv -i"), но форматът на изписване там не е така ясен, зад размера понякога има запетая, друг път има интервал... може да се направи и с него, но е по-чупливо, така че, ако имаш възможност за exiftool, ползвай него.

П.П.: Забравих да кажа, че при горния вариант (задаване и на височина, и на широчина, на логото) логото няма да си запазва пропорциите с оригиналната картинка, а ще се сплесква и разтегля спрямо процентното съотношение на височината и широчината на видеото. Ако пропорциите на логото трябва да се запазят такива, каквито са в оригиналната картинка, тогава премахваме изчисленията за височина и в avconv (ffmpeg) заменяме височината на логото с "-1". Т.е.
Код
GeSHi (Bash):
  1. video_file='/път/до/видео/файла'
  2. logo_file='/път/до/логото'
  3. logo_size_percent=5
  4. output_file='/път/до/крайния/файл'
  5.  
  6. video_width=$(exiftool $video_file | awk '/Image Width/ {print $4}')
  7.  
  8. logo_width=$((video_width*$logo_size_percent/100))
  9.  
  10. avconv -i $video_file -vf "movie=$logo_file, scale=$logo_width:-1 [watermark]; ....." $output_file
« Последна редакция: Dec 27, 2013, 19:17 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
PHP и FFMPEG
Web development
ovvn3r 5 5409 Последна публикация Apr 23, 2009, 21:23
от ovvn3r
Помощ за ffmpeg
Настройка на програми
SK0RP10N 6 5930 Последна публикация Oct 14, 2009, 18:15
от SK0RP10N
Проблем с ffmpeg
Настройка на програми
d3v1ous 3 4424 Последна публикация Feb 21, 2010, 23:01
от tolostoi
Въпрос относно ffmpeg
Настройка на програми
encho1982 2 3884 Последна публикация Oct 16, 2010, 17:32
от tolostoi
Конвертиране на видео файл в mp4 с помощта на ffmpeg
Настройка на програми
theshit 16 8437 Последна публикация Sep 23, 2013, 19:14
от bvbfan