kategorie:

menu:


Přehrávání WMV9 na Ubuntu amd64

12.04.2008   ::    topic: Linux

…a ukládání streamu z mms protokolu

Aneb čas bez Frisbee konečně skončil! Co má společného videoformát wmv9 a Frisbee? O tom (z části) bude následující příspěvek.

Jsem zvyklý při práci poslouchat hudbu. Pokud nedělám zrovna něco na co se musím plně koncentrovat, tak mi často v růžku monitoru běží i nějaké videoklipy. Často je to hudební stanice Óčko. Ještě před půl rokem jsem si na koleji mohl pouštět Óčko v docela vysoké kvalitě díky digitálnímu video broadcastu (DVB) po kolejní síti. Ale už asi ten půl rok není tímto způsobem dostupné a od správce serveru jsem nezaregistroval žádnou snahu tento stav změnit. S nedostupností na kolejní síti souvisí i nemožnost si z této stanice cokoliv grabnout (nahrát) pomocí strahovského DVBgrabu.Kvůli tomu často zmeškal pořad Frisbee, ve kterém je týdenní porce novinek a klipů z taneční scény.

TV Óčko se dá naštěstí naladit i po internetu, na adrese http://ocko.idnes.cz/stream.asp. Toto vysílání lze na linuxu přehrát například ve VLC nebo Kaffeinu. Stále mi ale chyběla možnost si oblíbené pořady nahrát. (No, asi by to šlo přes VLC, s tím ale nejsem moc velký kamarád.)

Ukládání streamu z mms protokolu

Když jsem tento problém řešil, vygooglil jsem po chvilce prográmek mimms, který umí data steamovaná pomocí protokolu mms uložit na disk. Pro ukládání streamu Óčka ve střední kvalitě stačí spustit program s těmito parametry:
mimms „http://stream2­.idnes.cz/ocko-tv?idostrova=ocko“ ocko.wmv.
Délku nahrávání lze určit parametrem -t, nebo prostě program v požadovaný čas killnout.

Po vyřešení ukládání streamu se vyskytl další problém. Střední kvalita streamu není při zobrazení přes celou obrazovku moc koukatelná. Vysoká kvalita je zas šířena ve formátu wmv9, takže mi na mém Kubuntu amd64 nehrál zvuk. Nepomohla ani instalace Windows kodeků z balíku w64codecs a kompilace mplayeru.

Při konfiguraci mplayeru se objevuje tato poznámka:
NOTE: Win32 codec DLLs are not supported on your CPU (x86_64) or your
operating system (Linux). You may encounter a few files that cannot
be played due to missing open source video/audio codec support.

Přehrávání wmv9 na architektuře x86_64

Zhruba půl hodiny googlení nasvědčovalo tomu, že jedinou šancí bude instalování 32 bitové verze mplayeru, mencoderu a Windows kodeků. Už jsem se hrozil toho ručního rozbalování balíků a řešení závislostí, co mě čeká. Naštěstí jsem narazil na zápisek na Ubuntu Geek. Marius Grannæs si dal tu práci a vytvořil balík s 32 bitovým mplayerem a mencoderem pro amd64.

Postup instalace

  • Nejdříve je zapotřebí mít nainstalovány balíky pro podporu 32 bitových aplikacích. Konkrétně ia32-libs, lib32asound2, lib32ncurses5, ia32-libs-sdl, ia32-libs-gtk, lib32stdc++6, ia32-libs-openoffice.org2.
  • Poté nainstalovat 32 bitový mplayer
    wget http://folk.ntnu.no/grannas/debs/mplayer32_20070130-1_amd64.deb
    sudo dpkg -i --force-all mplayer32_20070130-1_amd64.deb
  • A nakonec nainstalovat kodeky
    wget http://debian-multimedia.org/pool/main/w/w32codecs/w32codecs_20071007-0.1_i386.deb
    sudo dpkg -i --force-all w32codecs_20071007-0.1_i386.deb

Funguje to krásně. Pro přehrávání lze použít příkaz mplayer32, pokud si chci video pustit v jiném přerávači, stačí jej pomocí mencoder32 převést třeba do Xvidu.

Pár příkazů na závěr

  • Přehrávání Óčka ve vysoké kvalitě pomocí mplayeru:
    mimms "mms://stream2.idnes.cz/ocko-tv-hq?idostrova=ocko&MSWMExt=.asf" - |\
         mplayer32 -ao alsa -framedrop -cache 8192 - 
  • Ukládání streamu na disk ve formátu asf (zvuk wma9):
    mimms "mms://stream2.idnes.cz/ocko-tv-hq?idostrova=ocko&MSWMExt=.asf" OutputFile.asf
  • Přímé ukládání streamu do mpeg:
    mimms "mms://stream2.idnes.cz/ocko-tv-hq?idostrova=ocko&MSWMExt=.asf" - |\
        mencoder32 -cache 8192 -oac lavc -ovc lavc -of mpeg -delay 0.5 \
        -mpegopts format=dvd -vf scale=720:540,harddup -srate 48000 \
        -af lavcresample=48000
        -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
        vbitrate=5000:keyint=18:acodec=ac3:abitrate=192 \
        -ofps 30000/1001 -o OutputFile.mpeg -
    …to se hodí pro pozdější zpracování například v 64 bitovém Avidemuxu. Pro encoding „za běhu“ je nutné mít výkonější procesor.
    Nevím proč ale s avi soubory encodovanými z tohoto streamu měl Avidemux problémy, proto používám mpeg.
    Hodnotu parametru -delay určující zpožďování videa oproti zvuku je nutné vyzkoušet…