Varför en MP4 inte spelas upp, och vad en container egentligen är
En MP4 som inte spelas upp är sällan trasig. Filändelsen namnger bara containern, omslaget som håller strömmarna och deras tidsstämplar. Det som måste avkodas är codecen inuti, och samma .mp4 kan innehålla H.264 som spelas på en tio år gammal telefon eller AV1 som en två år gammal tv inte kan röra. Det är därför en MP4 spelas upp och en annan inte gör det.
Två frågor gäller för varje videofil: vilken låda ligger den i, och hur är bilden komprimerad. Att byta låda är oftast gratis; att byta komprimering är det aldrig.
En container är en låda, en codec är bilden
| Container | Videocodecar | Ljud | Stöd |
|---|---|---|---|
| MP4 | H.264, H.265, viss AV1 | AAC, MP3 | Överallt |
| WebM | VP8, VP9, AV1 | Opus, Vorbis | Endast webbläsare |
| MKV | Nästan vad som helst | AC-3, DTS, vad som helst | Skrivbordsspelare, inte webbläsare |
| MOV | H.264, H.265, ProRes | AAC, PCM | Apple, redigering |
| AVI | DivX, Xvid, MJPEG | MP3, PCM | Äldre Windows |
MKV är den tillåtande, utmärkt för arkiv och dålig för leverans: en giltig MKV kan innehålla en kombination som ingen webbläsare öppnar. MOV och MP4 delar det mesta av sin struktur, så att flytta mellan de två är ofta bara en omskrivning av indexet. Inspektera filen:
input.mp4
Stream #0:0 Video h264 (High) 1920x1080 30 fps 4200 kb/s
Stream #0:1 Audio aac (LC) 48000 Hz stereo 128 kb/s
Ordet efter "Video" är det som spelar roll. Ordet "mp4" säger dig nästan ingenting.
Vilken codec som spelas var
| Codec | Bitar för samma kvalitet | Licensiering | Stöd |
|---|---|---|---|
| H.264 (AVC) | Referens, säg 100 % | Patentpool, licensierad nästan överallt | Universellt |
| H.265 (HEVC) | 50 till 65 % | Konkurrerande pooler, dyrt, ouppklarat | Apple ja, webbläsare ojämnt |
| VP9 | Liknar H.265 | Royaltyfri | Chrome, Firefox, Edge, Android |
| AV1 | 30 till 50 % | Royaltyfri | Aktuella webbläsare, ny hårdvara |
H.265 är tekniskt stark och kommersiellt besvärlig, så stödet delar sig längs tillverkarnas linjer snarare än längs tekniska. AV1 komprimerar bäst och kodar långt långsammare, ibland en tiopotens långsammare, så den passar video som kodas en gång och ses ofta. För en okänd publik är H.264 i MP4 fortfarande svaret, och Compress Video siktar på just det.
Bithastighet, upplösning och bildfrekvens
Bithastigheten är bitar per sekund utdata, och den ensam bestämmer filstorleken: multiplicera med speltiden så har du filen.
1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s = about 0.5 MB per second
Att fördubbla upplösningen fyrdubblar antalet pixlar men inte antalet bitar som behövs, eftersom grannpixlar i en större bildruta liknar varandra mer och komprimerar bättre. Räkna med två till tre gånger så många, så att halvera bredd och höjd är bland de billigaste sätten att krympa en fil: det är Resize Video, och Crop Video kastar bort pixlar rakt av. Bildfrekvensen är mildare och lägger på 20 till 40 % från 30 till 60 i stället för 100 %, och Change Video Speed kortar tidslinjen i stället.
Tre sätt att styra hastigheten:
- Konstant bithastighet håller en enda hastighet hela vägen: stillsamma tagningar slösar bitar, snabb rörelse faller isär. Den passar förbindelser med ett hårt tak.
- Variabel bithastighet med ett målvärde jämnar ut, så att scener kan låna av varandra. Storleken är förutsägbar, så använd den när utdata måste rymmas inom en gräns.
- Konstant kvalitet, oftast ett CRF-värde, låser kvaliteten och låter bithastigheten gå dit den behöver. Storleken är oförutsägbar, kvaliteten är jämn, och det är standardvalet för allt som ses snarare än strömmas.
För H.264 löper CRF-skalan från 0 till 51, där lägre är bättre: 18 är nästan omöjligt att skilja från källan, 23 är ett förnuftigt standardval, och bortom 28 faller rörelsen isär. Skalan är inte gemensam mellan codecar.
Nyckelbildrutor, och varför en beskärning ibland är gratis
En I-bildruta, eller nyckelbildruta, är en komplett bild som avkodas på egen hand. En P-bildruta lagrar bara det som ändrats sedan en tidigare bildruta. En B-bildruta förutsäger utifrån både en tidigare och en senare bildruta, vilket komprimerar bäst och är anledningen till att avkodare ibland håller tillbaka bildrutor före visning.
En nyckelbildruta plus dess beroende bildrutor är en bildgrupp, och webbkodare placerar en ungefär varannan sekund. Klipp mitt i en grupp och de överlevande bildrutorna hänvisar till en bild som inte längre finns i filen, vilket är varför beskärning har två lägen. Att kopiera strömmarna går ögonblickligen och förlustfritt men landar bara på en nyckelbildruta, så starten kan glida med upp till gruppens längd; omkodning lägger en nyckelbildruta där du bad om den, till priset av tid och kvalitet. Trim Video erbjuder båda; kopiera om inte den exakta bildrutan spelar roll.
Omkodning kostar kvalitet eftersom varje förlustbehäftat pass kastar bort det som modellen anser minst synligt. Koda igen och det andra passet behandlar det första passets artefakter som verklig detalj, bevarar dem och lägger till sina egna, så felen ackumuleras genom generationerna. Kopiera strömmarna när bara containern ändras, och kopiera bilden när bara ljudet försvinner, vilket är vad Mute Video gör. Rotate Video kan sätta en rotationsflagga i stället för att vrida pixlar, även om spelare som ignorerar den visar den ursprungliga orienteringen. När pixlarna måste ändras, ändra allt i ett enda pass.
Ljudspåret är den andra halvan
Ljud är en separat ström med egen codec, samplingsfrekvens och kanaluppsättning, och en vanlig anledning till att en fil inte spelas upp. En webbläsare som gladeligen avkodar H.264-bilden kanske inte avkodar AC-3- eller DTS-surround, vilket ger tystnad eller ett rakt misslyckande för hela filen. Skivrippningar i MKV faller ständigt på detta.
Samplingsfrekvensen är hur ofta vågformen mättes: 44100 Hz från CD, 48000 Hz som videostandard. AAC i stereo vid 48000 Hz är det säkra leveransvalet, kring 128 kb/s för tal och 192 kb/s för musik. Extract Audio drar ut ett spår som MP3, WAV, AAC eller Opus.
Att göra en GIF av video
GIF är ett stillbildsformat från 1987 med animering påskruvad och utan verklig rörelsekompensation. Varje bildruta komprimeras i stort sett för sig, så fem sekunder kan svälla till flera megabyte där samma klipp som en stum MP4 är ett par hundra kilobyte. Det är begränsat till 256 färger per bildruta, har en bit transparens och inget ljud.
Färggränsen är där kvaliteten vinns eller förloras. En generisk fast palett ger bandning i övergångar och tvingar fram kraftig dithering, och det bruset ligger nära slumpmässigt, så det komprimerar dåligt och blåser upp filen. Att bygga en palett ur själva klippet och sedan mappa bildrutorna på den ger en bättre bild och ofta en mindre fil; Video to GIF gör det passet. Håll GIF-filer korta och smala: två eller tre sekunder, 480 till 640 pixlar breda, 10 till 15 bildrutor per sekund. Om destinationen accepterar video, skicka en ljudlös MP4.
Inställningar som fungerar för webben
- H.264 i MP4 med AAC-ljud för allt som helt enkelt måste spelas upp.
- CRF kring 23, ner till 20 för skärminspelningar med finstilt text, upp till 26 för bakgrundsmaterial.
- Skala om till den bredd den kommer att visas i, före komprimeringen snarare än efter.
- Slå på faststart, så att indexet ligger först och uppspelningen börjar innan nedladdningen är klar.
Allt detta körs i webbläsaren på din egen maskin, så ingenting laddas upp och gränsen är minnet, inte en serverkvot. Avkodningsbuffertar för en lång 4K-fil kan tömma en flik, så beskär först och skala om sedan.