Úprava INFO tagu v AVI – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Úprava INFO tagu v AVI – PHP – Fórum – Programujte.comÚprava INFO tagu v AVI – PHP – Fórum – Programujte.com

 

27. 4. 2018   #1
-
0
-

Zdravím, dělám utilitu pro práci s AVI soubory. Úspěšně dokážu číst INFO tagy, tak jsem se pokusil o editaci, ta potom selže - avi soubor se poškodí. Základem je struktura LIST, skládá se ze slova LIST, následně 4 byte velikosti v pořadí little-endian. Za tímto LISTem je ještě chunk JUNK, což je zarovnávací prostor, hlavička se opět skládá z 8byte - "JUNK" a 4 byte velikosti, velikost se počítá právě po hlavičce - těch 8 byte. To platí i pro LIST. LISTů je několik druhů, mne ovšem zajímá jen to INFO. Jsou to 4byte "INFO", hned po 8mi bytové hlavičce, takže se už počítá do velikosti. Následně obsahuje několik chunků. Opět 8 byte, první 4 byte je fourCC kód (např. INAM pro Title, IART pro Artist, atd.) následně délka následujícího řetězce a po řetězci nulový byte. Provedu konverzi dat do INFO struktury. Jelikož dojde ke změně velikosti, změnu vyrovnám tím následujícím chunkem JUNK, jehož obsah není důležitý a může složit např. pro skrytý popis. Otázka tedy zní, kde je problém? Když jsem si to projížděl v HEX editoru, formát se zdál být správný, ručně jsem kontroloval délky řetězců atd. Viz přiložené soubory

Připojen obrázek.

Na obrázku jde vidět právě onen LIST INFO a následně JUNK

V přiložených .bin souborech jsou surová data. Neobsahují na začátku slovo "LIST", začátek souboru je definice velikosti. old.bin je původní, new.bin je generovaný skriptem. Přikládám i onen skript. Zatím to je primitivní bast, čtení ovšem funguje bez problému. Důležitá je funkce write (parse.php), která zapíše asociativní pole AVItag::$tags do binární podoby a zapíše na patřičný offset.

https://drive.google.com/file/d/1UjBlS24HeYtm_FNMuGhSrGmqQJiObywL/view?usp=sharing

Nahlásit jako SPAM
IP: 83.240.52.–
gna
~ Anonymní uživatel
1891 příspěvků
27. 4. 2018   #2
-
0
-

Hele, už ten popis je zmatený. Je to prostě hromada chunků FOURCC id, LE32 delkadat, data...

Podle id poznáš formát dat. Pro RIFF jsou data FOURCC fileid, CHUNK..., pro LIST jsou data FOURCC listid, CHUNK..., pro ty IXXX jsou to nulou ukončené řetězce, atd.

Chunky jsou zarovnané na 2 byty, ty tam natvrdo přidáváš jeden byte bez ohledu na velikost.

fgets načítá textový řádek (do zadané velikosti nebo odřádkování) ne libovolná data.

Test jestli za tím listem je JUNK chunk, který můžeš posunout by měla být optimalizace, abys nemusel překopat celý soubor, ne nutnost bez které to nejde.

Když to rozparsuješ pořádně, tak to pak budeš schopný i zeditovat.

Nahlásit jako SPAM
IP: 213.211.51.–
27. 4. 2018   #3
-
0
-

To, že chunky jsou zarovnané na 2 byty mi uniklo a vysvětluje to hodně. O tom ostatním vím a není to v téhle fázi důležité, zezačátku jsem chtel exportovat validní soubor. Ty chyby, co jsem dostával při parsování jiným skriptem kooresponduje právě s těmi 2 byty. Zkusím, pokud bude fungovat, poradím si už dál, parsování celého souboru je v plánu. V prvé řadě jsem chtěl ale aspoň základní úpravu tagu ve spoustech AVI souborů, které vypadají de-facto stejně. Ale nástroj z toho vzniknout má.

Nahlásit jako SPAM
IP: 83.240.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 27 hostů

Podobná vlákna

Gvp -> avi — založil Matej Zabsky

C#: AVI video — založil Anonymní uživatel

Přehrání AVI klipu ve WPF — založil Luďa

DOM - existence tagu? — založil pawlik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý