Un utilitar interesant pentru creat imagini cu miniaturi (thumbnails) luate la intervale regulate dintr-un fișier video, este ffpoth. Avem nevoie și de ffmpeg și imagemagick.
Instalare:
- Arch: yaourt -S ffpoth
- alte distribuții: http://code.google.com/p/ffpoth/wiki/install
Sintaxa comenzii e destul de simplă și intuitivă, toate opțiunile următoare sunt opționale, fără ele se iau în considerație valorile implicite:
ffpoth -b timp -e timp n număr w lățime fișier-video | opțiuni montaj
-b = timpul peste care se va sări la începutul fișierului video; implicit e 0, valorile peste 1 sunt considerate secunde, iar valorile între 0 și 1 sunt interpretate ca find procente/ fracțiuni (0,5 = mijlocul fișierului video)
-e = timpul de la finalul fișierului peste care se va sări; implicit e 1, valorile peste 1 sunt secunde, valorile între 0 și 1 sunt procente/ fracțiuni
-n = numărul miniaturilor ce vor compune imaginea, implicit 20
-w = lățimea miniaturilor, implicit 160, 0 se consideră lățimea originală; inălțimea va fi calculată automat păstrând raportul lățime- înălțime
Deci comanda ar putea fi:
ffpoth fișier-video | opțiuni-montaj
Opțiunile pentru montarea miniaturilor sunt utilitare aparținând pachetului imagemagick: montage, convert, composite, etc. Pentru a vedea toate aplicațiile cuprinse în suita imagemagick dați comanda (Arch Linux):
pacman -Ql imagemagick | grep bin
Manipularea imaginilor se poate face și folosind alte imagini, în cazul de față ffpoth doar extrage imagini din fișierul video și le micșorează, și în faza a doua unul din utilitarele suitei imagemagick le combină în forma dorită. Manualele acestor utilitare vă dau toate opțiunile utile.
Autorul a avut amabilitatea să dea chiar și exemple practice aici: http://code.google.com/p/ffpoth/wiki/examples tot ce trebuie să facem e să alegem forma/ geometria/ aranjamentul preferat și să înlocuim în comanda- exemplu numele fișierului video, numărul de cadre/ miniaturi (-n), dimensiunea acestora (-w), dimensiunea chenarului ce desparte miniaturile (-geometry +x+y), numărul coloanelor ce compun imaginea (-tile nx), calitatea imaginii/ compresia (- quality n), colțul în care să fie afișat textul dorit (-gravity ...) etc.
Câteva rezultate:
ffpoth ArchLinux.ogv | montage - -geometry +1+1 -tile 4x -quality 100 arch.png
Pentru chestii mai complexe trebuie create funcții sau scripturi bash. După exemplul autorului putem crea un script bash (un fișier text) cu următorul conținut (am modificat puțin astfel încât să putem modifica numele sursei și rezultatului):
./nume-script nume-fișier-video nume-imagine (sau sh nume-script nume-fișier nume-imagine )
De exemplu:
./ffp ArchLinux.ogv arch-test.png
Sursă: https://bbs.archlinux.org/viewtopic.php?id=133025
Instalare:
- Arch: yaourt -S ffpoth
- alte distribuții: http://code.google.com/p/ffpoth/wiki/install
Sintaxa comenzii e destul de simplă și intuitivă, toate opțiunile următoare sunt opționale, fără ele se iau în considerație valorile implicite:
ffpoth -b timp -e timp n număr w lățime fișier-video | opțiuni montaj
-b = timpul peste care se va sări la începutul fișierului video; implicit e 0, valorile peste 1 sunt considerate secunde, iar valorile între 0 și 1 sunt interpretate ca find procente/ fracțiuni (0,5 = mijlocul fișierului video)
-e = timpul de la finalul fișierului peste care se va sări; implicit e 1, valorile peste 1 sunt secunde, valorile între 0 și 1 sunt procente/ fracțiuni
-n = numărul miniaturilor ce vor compune imaginea, implicit 20
-w = lățimea miniaturilor, implicit 160, 0 se consideră lățimea originală; inălțimea va fi calculată automat păstrând raportul lățime- înălțime
Deci comanda ar putea fi:
ffpoth fișier-video | opțiuni-montaj
Opțiunile pentru montarea miniaturilor sunt utilitare aparținând pachetului imagemagick: montage, convert, composite, etc. Pentru a vedea toate aplicațiile cuprinse în suita imagemagick dați comanda (Arch Linux):
pacman -Ql imagemagick | grep bin
Manipularea imaginilor se poate face și folosind alte imagini, în cazul de față ffpoth doar extrage imagini din fișierul video și le micșorează, și în faza a doua unul din utilitarele suitei imagemagick le combină în forma dorită. Manualele acestor utilitare vă dau toate opțiunile utile.
Autorul a avut amabilitatea să dea chiar și exemple practice aici: http://code.google.com/p/ffpoth/wiki/examples tot ce trebuie să facem e să alegem forma/ geometria/ aranjamentul preferat și să înlocuim în comanda- exemplu numele fișierului video, numărul de cadre/ miniaturi (-n), dimensiunea acestora (-w), dimensiunea chenarului ce desparte miniaturile (-geometry +x+y), numărul coloanelor ce compun imaginea (-tile nx), calitatea imaginii/ compresia (- quality n), colțul în care să fie afișat textul dorit (-gravity ...) etc.
Câteva rezultate:
ffpoth ArchLinux.ogv | montage - -geometry +1+1 -tile 4x -quality 100 arch.png
ffpoth -w300 -n12 ArchLinux.ogv | montage - -geometry +1+1 -tile 3x -quality 100 arch1.png
Pentru chestii mai complexe trebuie create funcții sau scripturi bash. După exemplul autorului putem crea un script bash (un fișier text) cu următorul conținut (am modificat puțin astfel încât să putem modifica numele sursei și rezultatului):
#!/bin/bash
Streams=$(ffmpeg -i $1 2>&1 | grep '^[[:blank:]]*Stream' | sed 's/^[^:]*.[^:]*..//;s/([^)]*.//g;s/ ,/,/g')
Text=$(echo -ne "File: $1\nSize: $(stat -c '%s' $1) bytes\n$Streams")
ffpoth -w120 -n20 $1 |
convert - -gravity northeast -stroke '#000C' -strokewidth 2 -annotate 0 '%c' -stroke none -fill white -annotate 0 '%c' MIFF:- |
montage - -geometry +1+1 -tile 4x MIFF:- |
convert label:"$Text" - -append $2
Facem fișierul executabil și dăm în consolă comanda: Streams=$(ffmpeg -i $1 2>&1 | grep '^[[:blank:]]*Stream' | sed 's/^[^:]*.[^:]*..//;s/([^)]*.//g;s/ ,/,/g')
Text=$(echo -ne "File: $1\nSize: $(stat -c '%s' $1) bytes\n$Streams")
ffpoth -w120 -n20 $1 |
convert - -gravity northeast -stroke '#000C' -strokewidth 2 -annotate 0 '%c' -stroke none -fill white -annotate 0 '%c' MIFF:- |
montage - -geometry +1+1 -tile 4x MIFF:- |
convert label:"$Text" - -append $2
./nume-script nume-fișier-video nume-imagine (sau sh nume-script nume-fișier nume-imagine )
De exemplu:
./ffp ArchLinux.ogv arch-test.png
Sursă: https://bbs.archlinux.org/viewtopic.php?id=133025