Script .sh pentru convert video cu ffmpeg pe windows si linux

AlexH

Merg pe strada catre Mine...
Membru personal
Administrative
Freelancer
SEO Expert
Am tot cautat ceva de genul dar nu am gasit exact ce cautam si ar ajuta multi.
Cine se pricepe si stiu ca sunt cativa pe aici, sa faca un mic script .sh pentru linux cu datele de mai jos. Daca e posibil si pentru windows ca sunt destui care folosesc ffmpeg si pe acesta.

1. am doua foldere
2. unul este de filme care N filme in format mkv sau mp4
3. al doilea este de subtitrare unde include toate subtitrarile de la filme si care au acelasi nume ca filmul

Ce trebuie sa faca scriptul?

La rulare sa faca convert sau copy + adaugare subtitrare la toate filmele din folderul Filme.

1. verifica folderul filme pentru a vedea cate sunt
2. verifica folderul subtitrare pentru a vedea cate filme au sub si daca unul nu are, este scos din lista pentru convert
3. daca filmul este in format mp4, atunci se va rula cu comanda copy pentru ca nu este nevoie de conversie + arsa subtitrare pe film
4. daca filmul este in format mkv sau alt format, mai putin mp4 se executa convert fast fara a se modifica rezolutia sau alte detalii din video
5. cand termina de convert, muta filmul cu sub arsa in folderul x
6. daca un film nu are sub adaugat in folderul subtitrare sa nu fie procesat
7. la alegere se poate adauga un folder sau regula pentru logo pe film/fisier video. Asta fie citeste un folder /logo unde este fisierul logo.png sau cauta in folderul filme fisierul logo.png si-l arde pe film.

Sursa adica filmele din folderul Filme sa ramana si sa nu fie sterese dupa procesare.

La rula exista doua solutii:

1. salvare si rulare fisierul convert.sh de oriude. Asta inseama ca pot edita fisierul convert.sh unde pun calea la fisiere si care vor fi citite
2. salvare si rulare fisier in folderul unde am filmele. Asta inseamna ca fisierul va citi automat folderul in care sunt si va rula comanda

Aceasta este comanda ffmpeg care o folosesc la conversie
Cod:
-vcodec libx264 -movflags +faststart -threads 0 -r 25 -g 50 -crf 28 -me_method hex -trellis 0 -bf 8 -acodec aac -strict -2 -ar 44100 -ab 128k -f mp4

La aceasta trebuie adaugat comanda copy daca formatul la sursa este mp4 si comanda pentru a arde subtitrare pe film.

La threads daca e posibil ca scriptul sa vada automat ce resurse are serverul si sa aloce cate mai multe threads ca procesul sa se termine cat mai repede. Sau se mai poate face prin metoda asta.

1. ./convert.sh --f adica se face fast si aloca maxim de threads
2. ./convert.sh - se face slow, normal pentru a nu ucide serverul.

Ar ajuta multa lume acest script.
Multumesc.

Cu un astfel de fiser ai putea face automat 5000 de filme pe un server fara sa stai langa el, un lucru foarte bun.

 
Comanda pentru a adauga watermark pe video imagine + text daca e nevoie.
gen logo la site si link sub catre model
Cod:
ffmpeg -i /var/sentora/hostdata/zadmin/adult/oksana100.mpg -i /var/sentora/hostdata/zadmin/adult/rovideo.png -filter_complex \
"[0:v]drawtext=fontfile=/usr/share/fonts/default/Type1/n019003l.pfb:text='buysex.es/oksana100':[email protected]:fontsize=16:x=00:y=40[text]; \
[text][1:v]overlay[filtered]" -map "[filtered]" \
-map 0:a -vcodec libx264 -movflags +faststart -threads 0 -r 25 -g 50 -crf 28 -me_method hex -trellis 0 -bf 8 -acodec aac -strict -2 -ar 44100 -ab 128k /var/sentora/hostdata/zadmin/adult/oksanawatermarktext.mp4

Plus reduce marimea la fisier cu peste 60%, lucru important daca hostati fisierele la voi pe server si mentine calidatea la video.

Aceasta comanda adauga sus stanga logo la site
Cod:
ffmpeg -i /var/sentora/hostdata/zadmin/adult/oksana100.mpg -i /var/sentora/hostdata/zadmin/adult/rovideo.png -filter_complex "overlay=10:10" -vcodec libx264 -movflags +faststart -threads 0 -r 25 -g 50 -crf 28 -me_method hex -trellis 0 -bf 8 -acodec aac -strict -2 -ar 44100 -ab 128k /var/sentora/hostdata/zadmin/adult/oksanawatermark.mp4

O comanda si mai usoara
Cod:
ffmpeg -i /tmp/clip.mp4
  -vhook “/usr/lib/vhook/drawtext.so
    -f /usr/share/fonts/corefonts/comic.ttf -x 5 -y 5
    -t Roforum.net”
/tmp/out.avi
 
Ultima editare:
Salut Alex, pot adauga watemark la un folder intreg, nu la fiecare video in parte am gasit ceva pe net dar nu reusesc sa il fac sa mearga
Cod:
for %%I in ("E:/Desene/pokemon/*.mp4") do ffmpeg -i "%%I" -i E:/Desene/logo-player.png -filter_complex 'overlay=W-w-10:H-h-10' -preset ultrafast -codec:a copy -f mp4 "E:/Desene/pokemon/s1/%%I-marked.mp4"
momentan folosesc comanda asta
Cod:
ffmpeg -i E:/Desene/pokemon/01.mp4 -i E:/Desene/logo-player.png -filter_complex "overlay=W-w-10:H-h-10" -preset ultrafast -codec:a copy E:/Desene/pokemon/output.mp4
 
Daca rulezi pe windows e nevoie de un fisier .bat unde pui comanda pentru a citi toate clipurile dintr-un folder.
Prima comanda postata de tine o salvezi intr-un fisier bat si apoi rulezi scriptul, dupa ce faci update la calea unde este folderul.
O posibila eroare:
Daca folderul ffmpeg este pe partitia E, atunci cand scrii calea la folder sau logo elimini E sau /.
Cod:
for %%I in ("E:/Desene/pokemon/*.mp4") do E:/calea/catre/ffmpeg -i "%%I" -i E:/Desene/logo-player.png -filter_complex 'overlay=W-w-10:H-h-10' -preset ultrafast -codec:a copy -f mp4 "E:/Desene/pokemon/s1/%%I-marked.mp4"
 
Cauti pe google convert ttml to vtt sau srt si vei gasi cateva convertoare.
Vezi un script aici Asta cred ca este cel mai usor https://github.com/codingcatgirl/ttml2srt
Cod:
python3 ttml2srt.py mysubtitle.ttml > converted.srt

Mai poti testa cu ffmpeg
Cod:
ffmpeg -i file.ttml file.vtt
Sa ma anunti care a functionat..
 
Subtitrarea mea este intr-un folder numit anon.ttml, in care este un fisier xml si multe imagini cu textu subtitrarii, iar in programul SubtitleEdit selectezi fisierul xml din folder iar el conveteste imaginile in text dupa care poti salva fisierul in .srt
 
Loading...
Back
Sus