Annonce

Nyt fra microsoft

Indsend nyhed

Del dine opdagelser!

Afstemning

Hvornår har du sidst været til LAN?

  • 56%Det er er mere end et år siden
  • 12%Har aldrig været til et LAN
  • 10%Inden for det seneste år
  • 6%Inden for de seneste 3-4 måneder
  • 6%Inden for de seneste 2-4 uger
  • 6%Inden for den seneste uge
  • 5%Inden for de seneste 5-8 uger

h.264-video dekodet i Javascript

2. nov. 2011 15:15Da programmøren Michael Bebenita startede hos Mozilla, blev en af de første opgaver han fik, at gøre det muligt at dekode h.264-video udelukkende via Javascript. Selv tænkte han, at det lød som en nærmest umulig opgave, men nu er det lykkedes.

Sammen med udvikleren Alon Zakai, der har lavet compileren Emscripten, har de nu alpha-kode klar, der kan dekode en h.264 komprimeret video i den seneste nightly build af Firefox.

Koden kan afvikle videoen i næsten 30 billeder i sekundet, og Bebenita skriver på sin blog, at der er masser af optimeringer at tage fat i. Blandt andet skal koden understøtte flere CPU-kerner, ligesom det skal understøtte hardware accelerering via WebGL.

Endnu er koden blot et proof of concept, men ønsker man selv at rode med det, så er det muligt ved at hente det på Github, eller forsøge i sin egen browser her.

Vil man ikke selv rode med det, så kan du se en video-demonstration inde hos yfrog.

#1: memborg

2. nov. 2011 15:42

Sejt nok

#2: David Munch

2. nov. 2011 15:58

Hvorfor er det relevant, udover at være proof of concept?

#3: Henrik S

2. nov. 2011 16:02

Fordi Firefox ikke har H.264 video support. De støtter OGG og Theora. Så det her kunne banen vejen for at Video ikke skal fikses specielt for Firefox fremadrettet.

Og ellers er det bare lækkert :)

#4: Chucara

2. nov. 2011 16:02

"When all you have is a hammer, every problem is a nail" ?

Jeg misunder ham ikke hans job :)

Newz.dk: Hvor alle er eksperter indenfor alt.

#5: Holger_dk

2. nov. 2011 16:10

Hehe det er edderspark'me fedt...

Dog ser det ud til at det er Enscripten der er den virkelig imponerende

- Holger

#6: grok

2. nov. 2011 16:20

Hvorfor er det relevant, udover at være proof of concept?David Munch (#2)

Fordi hvis du viser video direkte i browseren i stedet for at kalde et eksternt prog. undgår du nogle sikkerheds risici.
Brugeren får en bedre oplevelse hvis han ikke skal installere addons. Video kan vises på kiosk maskiner uden addons.
Der er sikkert flere fordele, men det var de første jeg kunne komme i tanke om.

#7: Trixxrlol

2. nov. 2011 16:37

Det er sku da FOR FEDT!
Jeg har i VIRKELIG lang tid, håbet på at man på et tidspunkt i fremtiden, kunne få lov til at se film i sin browseHNNNNNGHHHHHH.

#8: Abech

2. nov. 2011 16:39

Mega fedt!
Men jeg har ingen lyd på videoen. I hverken chrome eller Firefox?

#9: Montago

2. nov. 2011 16:58

Mega fedt!
Men jeg har ingen lyd på videoen. I hverken chrome eller Firefox?Abech (#8)

Derer ikke lyd på videoerne.. Desuden er det kun h264 som bliver decoded= video..

Det er før set at man kan generere lyd i javascrip, så der skal nok komme en ac3/mp3 dekoder i javascript så man kan se mkv film :)

Microsoft, fordi jeg ikke er bindegal

#10: tentakkelmonster

2. nov. 2011 19:02

Det er da ihvertifald en måde at få brugt noget CPU på. Javascript er ikke just assembler-performance.

Hvem skriver en H.264 dekoder i QBASIC? Så tager jeg hatten af! ;)

#11: rasmusssen

2. nov. 2011 19:09

Koden kan afvikle videoen i næsten 30 billeder i sekundet
nyhed

Chrome 15 afspillede det med
Average FPS (All / Steady) 56.56 57.06

#12: syska

2. nov. 2011 19:16

Det er da ihvertifald en måde at få brugt noget CPU på. Javascript er ikke just assembler-performance.tentakkelmonster (#10)

Ja og nej ...

JavaScirpt bliver vist optimeret ved brug af assembly, mener jeg i hvert fald de gør i Chrome.

mvh

#13: mrtnf

2. nov. 2011 19:33

Coooollll...

#14: el_barto

2. nov. 2011 21:11

Det er god kodning :)

Brugsværdien er dog begrænset uden lyd, og uden brug af de H.264 optimerede GPU'er vi efterhånden får serveret i enhver enhed der kan vise video.

#15: cyberdude

2. nov. 2011 23:34

Det er sgu imponerende uanset hvordan man vender og drejer det.

Dog lidt flamebait til FF.

Lidt sjovt det er mozilla programmører der står bag, med en mozilla video, og som #3 skriver så er det smart til FF da det ikke understøtter h.264. Når FF på min computer runder omkring 25 fps steady, og min Chrome runder 40fps steady på den samme video. Det viser måske klart og tydeligt at Chrome er _liiiidt_ foran med hensyn til deres JavaScript motor.
Hvis nu FF også fik shinet deres motor en tand så ville det nok være noget mere brugbart.

Jeg undre mig lidt over denne sætning
"der kan dekode en h.264 komprimeret video i den seneste nightly build af Firefox."
Jeg kører altså ikke Nightly builds, men kan sagtens kører denne demo?

#16: xenocrates

3. nov. 2011 01:58

#15 tror der menes at scriptet er indbygget i den seneste nightly build.

#17: Fyrsten

3. nov. 2011 07:57

Koden kan afvikle videoen i næsten 30 billeder i sekundet, o..

Det er vel hardwaren der afgør hvor mange billeder der kan afspilles i sec. ?

#18: zcuba

3. nov. 2011 08:55

#17

der antages vel her at brugere har uendelig regnekraft, og derfor er HW ikke en begrænsende faktor. Det eneste der begrænser her er den helt specielle codec struktur der siger:
-------
function show_next_frame();
{
//hemmelig kode

return frame_number;
}

while( last_frame != show_next_frame())
{
sleep( 1/30 second + 10 - Math.floor(Math.random()*21) );
}

show_last_frame();

--------

chrome snyder lidt ved at opdage det her hemmelige timing, og har en

if(FF sleep was x, make sleep = x / 2)

#19: CableCat

3. nov. 2011 09:27

ja ja, næsten 30fps med 360p. Fuld HD ved 1080p vil så kræve 9 gange mere regnekraft.

Standardisering gennem tvang, giver frihed.

#20: tachylatus

3. nov. 2011 10:59

Med Canvas får jeg 35-40 fps i Chrome 15 med et CPU forbrug på ca. 25% (ca. 85% på én kerne).
Core i7-2620M 2.7 GHz med 4 logiske kerner.

Uden rendering omkring 50 fps.
Med Canvas w/ WebGL 45-50 fps, men billedet vises i sort-hvid.

Skalerer vi CPU forbruget ned så det svarer til 25 fps afspilning ender vi på 12-17%, afhængig af rendering.
Til sammenligning bruger en 360p YouTube video typisk 6-8% CPU.

Der er selvfølgelig en masse usikkerhed i målingerne, men det giver da et billede der siger ca. 2-3x mere CPU forbrug i forhold til YouTube.

:(){ :|:;};:

#21: Abech

3. nov. 2011 14:07

Men når Javascript's hastighed afhænger af computerens regnekraft. Vil alle så ikke se videoen i forskellig hastighed? Det holder jo ikke at videoen afspiller vildt hurtigt hos nogle, og langsomt hos andre?

#22: el_barto

4. nov. 2011 13:10

Men når Javascript's hastighed afhænger af computerens regnekraft. Vil alle så ikke se videoen i forskellig hastighed? Det holder jo ikke at videoen afspiller vildt hurtigt hos nogle, og langsomt hos andre?Abech (#21)

Jo, så længe der ikke gøres brug af uret i scriptet. Men nu er det jo også bare et proof of concept.

Det ville være en smal sag at begrænse frameraten til f.eks. 24fps. At det indbyggede ur så langt fra er præcist nok til at vise judderfri video er nok en anden sag. Her skal en hardware-clock til (som. f.eks. i lydkort eller grafikkort).

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret bruger