Arkisto: 17. Helmikuuta 2008

Video pyörii Totemissa nykien

Lähtökohta
Minulla on matroska-säiliöön kääritty videotiedosto, testi.mkv, joka sisältää x264:llä pakatun kuvasignaalin eikä mitään äänisignaalia. Pakettienhallinnassa gstreamer0.10-ffmpeg on asennettuna. Avaan videotiedoston sen oletustoistimella, Totem-elokuvasoittimella. Totemin ikkuna avautuu ja video alkaa pyöriä.
Ongelma
Videon toisto on nykivää tai hidastetun näköistä. Videon tapahtumat pysyvät oikeassa ajassa, mutta on kuin joka toinen tai sitäkin useampi kuva jätettäisiin näyttämättä niin että videon näkyvä kuvataajuus on melkein puolet oikeasta.
Ongelman syy
Gstreamer-ffmpegissä on ohjelmavirhe, jonka takia H264-pakkausmenetelmää käyttävien videoiden toisto on nykivää.
Ratkaisu

Ratkaisua ei vielä ole. Gstreamer-ffmpegiin on tehty päivitys, jossa ongelma on ainakin osittain korjattu, mutta päivityksen sisältävää versiota ei vielä löydy pakettivarastosta.

Ongelman voi kiertää osittain asentamalla vlc-paketin ja käyttämällä sen jälkeen H264:llä pakattujen videoiden katseluun Sovellukset → Ääni & video -valikosta löytyvää VLC media playeria. Sen jälkeen videoiden toisto hidastelee ainoastaan leikkauskohdissa.

[Ratkaisu] Rivinvaihtomerkkien korvaaminen välilyönneillä syötetiedostossa

Lähtökohta

Minulla on testi.txt -niminen tiedosto, joka sisältö on seuraavassa:

Yksi
kaksi
kolme

Aion tulostaa tiedoston sisällön komentorivitulkissa.

Ongelma

Haluan, että tulosteessa rivinvaihtomerkkien paikalla on välilyöntimerkit, eli tuloste näyttää seuraavalta:

Yksi kaksi kolme
Ratkaisu

Tulostan tiedoston sisällön cat-komennolla ohjaten sen putkeen, ja putken toiseen päähän kytken tr-komennon parametreilla, jotka korvaavat rivinvaihtomerkit välilyöntimerkeillä tulosteessa:

cat testi.txt | tr "\n" " "

Tällöin tiedostoni sisältö tulostuu haluamallani tavalla.

[Ratkaisu] Kuvakoon korkeusulottuvuuden automaattinen määrääminen Mencoderia käytettäessä

Lähtökohta
Pakettienhallinnassa mencoder on asennettuna. Minulla on videotiedosto, jonka haluan uudelleenpakata Mencoderilla. Olen antanut Mencoderille muiden parametrien lisäksi joukon kuvankäsittelysuotimia, muiden muassa rajauksen (crop). Lisäksi suodinten joukossa on scale, jolla käsken Mencoderia muuttamaan videon kuvakokoa niin, että se on 640 pikselin levyinen. Korkeuden tulee olla jaollinen 16:lla, ja sellainen, että kuvasuhde on mahdollisimman lähellä alkuperäisen kuvan kuvasuhdetta rajauksen jälkeen.
Ongelma
Sopivan kuvakorkeuden laskeminen on turhan monimutkaista. Haluan, että Mencoder laskee korkeudelle sopivan lukuarvon automaattisesti.
Ratkaisu

Mencoder-komento, jonka avulla saan pakatun kuvan automaattisesti haluamaani kuvakokoon, on seuraavassa:

mencoder testi.m2v \
-vf pullup,softskip,crop=704:560:8:10,scale=640:-10 -nosound \
-ovc x264 -x264encopts bitrate=1000 -of rawvideo -o testi.264

Kuvankäsittelysuotimista scale=640:-10 -asetuksen jälkimmäinen arvo, -10 käskee Mencoderia laskemaan pystysuuntaisen resoluution siten, että lähtökohtana käytetään alkuperäisesestä rajatun kuvan kuvasuhdetta, ja että lopullinen arvo on 16:n monikerta. Tässä tapauksessa Mencoder laskee suoritettaessa sen arvoksi 352.

[Ratkaisu] Listaa kaikki libavcodecin tukemat pakkausmuodot

Lähtökohta
Pakettienhallinnassa ffmpeg on asennettuna. Haluan tietää mitä libavcodecin tukemia videon- ja äänenpakkausmuotoja voin käyttää pakkaamisessa.
Ongelma
En tiedä miten libavcodecin tukemat pakkausmuodot voisi selvittää.
Ratkaisu

Libavcodecin tukemat pakkausmuodot voi listata seuraavalla komennolla:

ffmpeg -formats | less

[Ratkaisu] Kuva- ja äänisignaalin erottelu MPEG-tiedostosta

Lähtökohta
Minulla on testi.mpg -niminen videotiedosto. Olen ottanut selville, että video on MPEG-2 -muotoinen, ja että se sisältää M2V-muotoisen kuvasignaalin ja MP2-muotoisen äänisignaalin. Pakettienhallinnassa mplayer on asennettuna. Haluan erotella videon kuvasignaalin erilliseen M2V-muotoiseen tiedostoon, ja äänisignaalin erilliseen MP2-muotoiseen tiedostoon.
Ongelma
En tiedä miten MPEG-2 -muotoisen videotiedoston sisältämät signaalit voisi erotella alkuperäisestä tiedostosta erillisiin tiedostoihin.
Ratkaisu

M2V-signaalin voi erottaa MPEG-2 -muotoisesta, testi.mpg -nimisestä videosta seuraavalla komennolla:

mplayer -dumpfile testi.m2v -dumpvideo testi.mpg

Tämän komennon suorittamisen jälkeen minulla on alkuperäisen videotiedoston kanssa samassa hakemistossa uusi, testi.m2v -niminen tiedosto, joka sisältää pelkän kuvasignaalin alkuperäisestä videosta.

MP2-signaalin voi erottaa MPEG-2 -muotoisesta, testi.mpg -nimisestä videosta seuraavalla komennolla:

mplayer -dumpfile testi.mp2 -dumpaudio testi.mpg

Tämän komennon suorittamisen jälkeen minulla on alkuperäisen videotiedoston kanssa samassa hakemistossa uusi, testi.mp2 -niminen tiedosto, joka sisältää pelkän äänisignaalin alkuperäisestä videosta.

[Ratkaisu] Kuinka MPEG-tiedoston sisältämät signaalityypit selvitetään?

Lähtökohta
Minulla on .mpg -päätteinen videotiedosto, testi.mpg. Pakettienhallinnassa ffmpeg on asennettuna. Haluan tietää mitä muotoa videotiedoston sisältämä kuva- ja äänivirta ovat.
Ongelma
En tiedä miten videotiedostoni sisältämän kuva- ja äänisignaalin muodon voisi selvittää.
Ratkaisu

Saan videotiedoston sisällöstä tietoja seuraavalla komennolla:

ffmpeg -i testi.mpg

Komennon antama tuloste kertoo muun muassa myös videotiedostoni kuvan ja äänen pakkausmuodon:

  Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576, 8400 kb/s, 25.00 fps(r)
  Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, 160 kb/s

Videotiedostoni sisältää siis MPEG-2 PES -muotoisen kuvasignaalin ja MPEG-1 Audio Layer II -muotoisen äänisignaalin.

[Ratkaisu] Mihin MythTV:n tallennustiedostot menevät?

Lähtökohta
Olen asentanut MythTV:n onnistuneesti ja tallentanut sillä ohjelman. Haluan käsitellä tallennustiedostoa toisessa sovelluksessa.
Ongelma
En tiedä mihin MythTV on sijoittanut tallentamansa videotiedoston.
Ratkaisu
Oletusarvoisesti MythTV sijoittaa tallennustiedostot /var/lib/mythtv/recordings -hakemistoon.

[Ratkaisu] Listaa kaikki Mencoderin pakkauksen tukemat pakkausmuodot

Lähtökohta
Pakettienhallinnassa mencoder on asennettuna. Haluan tietää mitä videon- ja äänenpakkausmuotoja asennettu Mencoder pystyy käyttämään videoiden pakkaamiseen.
Ongelma
En tiedä miten Mencoderin tukemat pakkausmuodot voisi selvittää.
Ratkaisu

Äänenpakkauksessa käytettävissä olevat muodot saa selville seuraavalla komennolla:

mencoder -oac help

Videonpakkauksessa käytettävissä olevat muodot saa selville seuraavalla komennolla:

mencoder -ovc help

Näiden lisäksi käytettävissä olevat kuvan ja äänen säiliömuodot saa selville seuraavalla komennolla:

mencoder -of help
Huomautuksia
  • Mikäli tuettujen pakkausmuotojen joukossa on listattu lavc, tässä ratkaisussa annettujen komentojen antamien muiden muotojen lisäksi tuettuja ovat myös kaikki libavcodecin tukemat pakkausmuodot.
  • Niinkin suoraviivainen kuin tämä ratkaisu on, videonpakkausmuotojen listausparametrin löytäminen Googlella oli yllättävän vaikeaa, ja koska Mencoderin valtavan pitkällä ohjesivullakin se on listattu vasta rivillä 5187, sen löytäminen sieltäkään ei ole ihan triviaali tehtävä.