Stránka 1 z 1

ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 12. 10. 2017 21:36
od dovok
Dobrý den, v ffmpeg převádím soubor v jednotkách GB do jiného kontejneru s parametrem -copy (tedy rychlostí asi 7500 fps ~ 120 MB/s - jen orientačně) - SSD to zvládá takto rychle. Zkopíruji li ho následně celý na SD kartu - probíhá to rychlostí 60 MB/s.
Bohužel, zapisuje li ffmpeg cílový soubor na SD kartu, je zápis pomalejší, na kvůli tomu, že by sama karta byla pomalejší (kopírování velkého souboru na ni probíhá 60 MB/s), ale nevím proč kvůli čemu, myslím, že to nějak souvisí se způsobem zápisu nebo flushováním nebo velikostí výstupního bloku dat ffmpeg. - Rychlost je mnohem nižší - asi jen 250 fps ~ 5-10 MB/s.

Nevím, zda za to může chyba OS (Mám Windows 8) nebo ffmpeg (mladší jako půl roku) nebo snad SD karty (pokud nepočítám, že pomalejší rychlost zápisu menších bloků je vlastnost). Potřeboval bych poradit, jak ten zápis zrychlit na úroveň sekvenčního zápisu (60 MB/s) (nebo přesněji sekvenční zápisu menších bloků, pokud ta hypotéza platí), poradíte jak? Existuje například nějaké řešení v linuxu, kde by se cachování dalo simulovat zřetězením nějakým cachovacím příkazem za pípu ?Protože právě takhle to budu zrovna chci použít, že chci zapisovat rovnou na kartu. Chci využít prostě plnou rychlost, co karta umí i pokud by to mělo nějaké nevýhody (pár MB RAM jako cache) nebo snad nějaké riziko ztráty atomicity...

Re: ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 13. 10. 2017 05:53
od Milanr1
Řešíš nesmysly.
Zápis malých souborů je vždy pomalejší.

Re: ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 13. 10. 2017 08:47
od vladimir
ffmpeg zřejmě nezapisuje sekvenčně. Pokud se na převodu podílí více jader procesoru, je možné, že každé zpracovává svou část souboru a výsledek se ukládá na přeskáčku podle toho, jak je hotový. Nebo se samostatně zpracuje video a audio a ukládá se prokládaně, tedy v souboru jsou na střídačku kousky videa a audia, tedy zdánlivě sekvenční zápis je ve skutečnosti random. Na to není SD-karta stavěná. Pokud preferuješ práci na přenosných médiích, pořiď si přenosný SSD disk.

Re: ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 13. 10. 2017 19:39
od dovok
Odpovídáš nesmysly. Výsledný soubor je identický, tudíž stejně velký. (dyť jsem dokonce psal, že ho v prvním případě ukládám na SSD a pak zkopíruji, v druhém případě rovnou zapisuji na kartu) - Možná je problém v zápisu ffmpeg po menších blocích. A právě na to se ptám, aby zápis byl nějak cachovaný aby, karta viděla, že se na ni zapisuje, jako při kopírování, tedy tak rychle

Re: ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 13. 10. 2017 21:47
od Nargon
Nevím jak v linuxu, ale ve windows se dá zapnout "cache" na disk. Defaultně je zapnutá jen pro interní disky (SATA), všechny vyměnitelné zařízení, např flashky to mají vypnuté. Je to holt z důvodu že lidi jsou prasata a vytrhávají zařízení aniž by ho odpojily. Do které kategorie patří sd karty nevím, ale tipuji že to bude spíš jako u flashek. Tak se zkus podívat tímto směrem.

Re: ffmpeg: pomalý zápis na SD, pomaleji než sekvenčně

Odeslat příspěvekNapsal: 20. 11. 2017 12:08
od dovok
To by mě zajímalo, jak se to nastavuje na linuxu. Jednak rychlé odebrání vs lepší výkon, za druhé cache – podobné co je na windows.

a ve windows právě že v těch vlastnostech disku to nejde nastavit (dialog se záložkou Zásady odebrání, spodní část dialogu má checkbox povolit mezi paměť a vyprazdnování) - ale změna stavu a uložení neprojde,hodí to nějakou hlášku, že to nejde nastavit.