Autor Zpráva
Silver8000
Profil
Ahoj lidi,
mam dotaz ohledne FFMPEG.
Jedna se o prikaz syntaxe ktery prevede jakekoliv video do formatu mp4 ale s tim ze bude mit co nejmensi velikost souboru a zaroven dobrou kvalitu videa aby se na to vubec dalo koukat.

pouziti pres exec(FFMPEG input_file [commands(H.264)] output_file); atp.

Predem diky
Enko
Profil
Co považuješ za dobrou kvalitu videa? Pro jaké zařízení to bude? K čemu budou výsledná videa sloužit? Zkus být více konkrétnější. Jinak předpokládám, že dokumentaci si asi četl. http://ffmpeg.org/ffmpeg.html#Video-and-Audio-file-format-conversion
Silver8000
Profil
Enko:
Q; Co považuješ za dobrou kvalitu videa?
A; Kvalita videa by mela odpovidat tomu aby se na video mohlo koukat.
Docastna ukazka zde : http://share-space.no-ip.org/player.php

Q; Pro jaké zařízení to bude?
A; Na PC.

Q; K čemu budou výsledná videa sloužit?
A; Bude to pro webovy prehravac.

Ale stale potrebuji urcit tu kvalitu videa + co nejmensi soubor
PS: Ke shlednuti je potreba mit instalovany divx web player
Krakatoa
Profil
http://trac.ffmpeg.org/wiki/x264EncodingGuide

A crf si nastav jaké ti bude vyhovovat.
V těch tvých ukázkách máš crf 32, 22 a 18, takže nejspíš co je to crf víš, v tom případě netuším proč a na co se ptáš.

Jen poznámka, velikost a kvalita výsledného videa je závislá na kvalitě zdrojového videa.
Silver8000
Profil
Ted me jde o to jestly je mozne automaticky detekovat kvaltu videa a nasledne pro toto video nastavit kvalitu vysledneho videa.

S tim CRF to byl vystrel do tmy takze jsem nevedel o co jde ale pri pokusech s hanbrakem jsem to zjistil.
margin
Profil *
Silver8000:
Kvalita videa by mela odpovidat tomu aby se na video mohlo koukat.
To je velmi individuální, někdo může video označit za koukatelnou kvalitu a někdo jiný označí totéž video za šílenou kostkovanou mazanici.
Krakatoa
Profil
Silver8000:
je mozne automaticky detekovat kvaltu videa
Není to možné, na to bys potřeboval věštěckou kouli. Automaticky jde pouze zjistit kvalita výsledného videa oproti zdrojovému videu (psnr, ssim a podobně).
Amunak
Profil
Krakatoa:
To ale záleží taky na tom, co je myšlené kvalitou videa. Na pohled může být příšerné, ale základní informace, jako rozměry, počet snímků za sekundu, bitrate apod. se zjistit dá. A z nich jde odhadnout, jaký preset pak použít pro konverzi.
Krakatoa
Profil
Amunak:
Pokud enkoduješ na konstantní kvalitu (u x264 parametr crf) tak tě rozměry, počet snímků za sekundu, bitrate a podobně u zdrojového videa nezajímají, tam jde jen o to zjistit jakou hodnutu crf nastavit tak, aby kvalita výsledného videa byla koukatelná (parametrem crf vpodstatě nastavuješ úbytek kvality), pokud má velký rozsah kvality u vstupního videa, tak bude mít i výstupní rozsah kvality videa velký a automaticky nemůže nijak odhadnout kvalitu vstupního videa, ty jsou na rozměrech, počtu snímků za sekundu, bitrate a podobně, nezávislé. Příklad, mám velmi kvalitní video, je to full hd (1920x1080), datový tok pár kB/s, občas ve videu jen pár snímků za sekundu... jedná se o nahrávání obrazovky.
Silver8000
Profil
Tak se zeptam jinak...
Jak lze zachovat kvalitu videa a zaroven zmesit vysledny soubor?
Priklad : 2000MB -> 200MB
Mam 2GB video soubor chci zachovat kvalitu ale zmensit na 200MB.
Jak to udelam?
_es
Profil
Silver8000:
Jak lze zachovat kvalitu videa a zaroven zmesit vysledny soubor?
To v princípe samozrejme nejde, zmenšením dát sa zmenší aj „kvalita“ videa.
Amunak
Profil
No... Ono záleží taky na zvolené kompresi. Když se to udělá dobře, nemusí to na kvalitě být poznat.
Silver8000
Profil
Amunak:
A jake jsou moznosti komprese?
Uvedte priklady prosim at uz se nekam pohnu.
Hledam na netu a furt se k tomu nemohu dohrabat.
Amunak
Profil
Možnosti komprese jsou široké. Nevím o ničem konkrétním, protože s videem nedělám. A je to docela složitá oblast. Stejně jako archivy (soubory) jdou komprimovat různými metodami s různou efektivitou a vlastnostmi, existují různé algoritmy i pro kompresi videa. Nejsem si ale jistý, jestli ti na fóru o webdesignu dokáže někdo fundovaně odpovědět. A nejspíš jsi taky ve špatné kategorii.
Silver8000
Profil
Ve spatne kategorii nejsem protoze ten prikaz dam do PHP viz priklad :
<?php
$cmd ='ffmpeg -i input_video_file [option] output_video_file 2>output_log_file';
$resource = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from (we do not use it).
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to and we will read from.
   2 => array("pipe", "w") // stderr is a file to write to (we do not use it).
);
proc_close(proc_open('start /B '.$cmd,$resource,$pipe));
?>
A pres dalsi php soubor ziskam udaje o stavu z out_log_file dale muzu udelat progresni bar zaroven muzu aktualizovat DB.
Jan Tvrdík
Profil
Silver8000:
Co ti na stránce trac.ffmpeg.org/wiki/x264EncodingGuide není jasné?
_es
Profil
Amunak:
Stejně jako archivy (soubory) jdou komprimovat různými metodami s různou efektivitou a vlastnostmi, existují různé algoritmy i pro kompresi videa.
Pri videu ide však o stratovú kompresiu, teda o niečo iné ako pre nestratovej kompresii súborov.

Ono záleží taky na zvolené kompresi. Když se to udělá dobře, nemusí to na kvalitě být poznat.
Uchovávaš Silvera8000 v omyle, že ide nejako výrazne zmenšiť dáta pri rovnakom video výstupe.

Silver8000:
Nastav si parametre kompresie tak, aby bol dobrý kompromis medzi kvalitou a dátovou veľkosťou. Čakáš snáď, že ti tu niekto poradí nejaké „čarovné“ parametre?
Silver8000
Profil
_es:
Čakáš snáď, že ti tu niekto poradí nejaké ‚čarovné‘ parametre?
To zrovna neee ale urcite by mela existovat nejaka universalni syntaxe ktera to zvladne.

ja jsem stvoril toto :
$cmd ='ffmpeg -i '.$this_video_in.'  -c:v libx264  -preset slow -crf 0 -fs '.$fs.' -quality best -y -threads 1 '.$this_video_out.'.mp4 2>'.$this_log_out;

limitace velikosti souboru = $fs => 200MB * (1024*1024)

video to zmesi kvalita je defakto stejna (od oka nerozponatelna) ale video se mi hlasi jako rozbite pres prohlizec a co se tyka win. tak je vse v poradku az a to ze video neobsahuje metadata pro vygenerovani nahledu.

Co tam mam spatne?
Amunak
Profil
_es:
Pri videu ide však o stratovú kompresiu, teda o niečo iné ako pre nestratovej kompresii súborov.
Chtěl jsem tím vyjádřit, že těch možností je taky mnoho a každá má plno nastavení ;-)

Uchovávaš Silvera8000 v omyle, že ide nejako výrazne zmenšiť dáta pri rovnakom video výstupe.
Pokud se to tak dá pochopit, tak se omlouvám. Jen se snažím říct, že když z 2GB uděláš 400MB soubor, nemusí to nutně znamenat, že bude výstupní kvalita pětkrát horší. Kvalita se určitě sníží, ale třeba to ani nebude poznat. Platí to dvojnásob, pokud ten dvougigový soubor je "originál" bez komprese.

Ve spatne kategorii nejsem protoze ten prikaz dam do PHP viz priklad
Domnívám se, že jsi ve špatné kategorii proto, že i když příkaz voláš z PHP, pořád se tu řeší jen problematika (komprese) videa, nikoliv problémy s PHP skriptem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0