HTPC del 2

Jeg skrev her om dagen at jeg tenkte å vente med bestilling av resten av HTPC-en til etter at jeg hadde mottatt mitt utkårede TV-kort, men den planen måtte i dag forkastes. Min tankegang er at jeg uansett snart blir nødt til å bytte ut Asrocken, og at et helt vifteløst system uansett ikke er å forakte. Dessuten, når jeg mottar TV-kortet må jeg jo ha en egnet maskin å teste det i …

Så da ble følgende deler i dag bestilt:

Kabinettet er sånn ca. i 1U-størrelse, med étt utvidelsesspor for PCIe/PCI-kort i full høyde. Dette er tildels viktig, da det er der jeg skal stappe TV-kortet jeg har bestilt fra før. Siden PCIe-kortet blir liggende i 180° vinkel mot hovedkortet mot normalt 90° må man ha et fleksibelt PCIe riser-card, og det bestilte jeg fra eBay i helgen. Jeg fant et for PCIe 1x, som greier seg for mitt bruk, og det kostet bare $ 2.

Til kabinettet må man også ha strømforsyning, og der var det ikke akkurat noe utvalg, jeg måtte pent finne meg i å bruke 750,- på den tilhørende strømforsyningen. Spør ikke meg hvorfor de har valgt å selge dette separat, da det er eneste tilgjengelige alternativ. Samtidig tok jeg med IR-modulen som er spesiallaget til kabinettet, den har listet opp Linux som et støttet operativsystem, så der ble jeg positivt overrasket.

Så til hovedkortet. Der gikk jeg for et mATX-kort, da jeg vet av erfaring at Mini-ITX-hovedkortene har en kjøleribbe akkurat der hvor heatpipes-ene til kabinettet må gå fra CPU-en og bort til kabinettets yttervegg. Jeg har ikke lykkes i å finne et Mini-ITX-hovedkort uten denne lille skavanken. Men det spiller ingen rolle, det er god plass til et mATX-hovedkort. Kortet jeg valgte er rett og slett det billigste jeg fant på Komplett som oppfylte fire kriterier: Billig,på lager,  ingen kjøleribber eller andre elementer i veien for der heatpipes må gå, og det hadde TOS-link for optisk lyd. Jeg er enn så lenge avhengig av dette for å få digital lyd til receiveren min, som mangler HDMI.

Til hovedkortet valgte jeg bare ut litt RAM som lå linket opp som tilbehør for hovedkortet, mest fordi jeg er lat. RAM er billig, og ytelsen på RAM-en er ikke noe jeg trenger å bry meg om i dette prosjektet. Jeg ser imidlertid på bilder i etterkant at de er unormalt høye på grunn av noen rare kjøleribber, så det blir spennende å se om de passer.

Prosessoren er derimot et mer gjennomtenkt valg: Jeg vil ha nok kraft til å kunne kjøre de mer effektdrevne temaene til XBMC, samtidig som jeg vil ha lavt strømforbruk både for varmeutviklingens og strømregningens del. Core i3 finnes i 35W, 55W og 65W, jeg landet på 3225-varianten fordi den hadde den greie kombinasjonen av 55W og nyeste versjon av Intels on-chip GPU: HD4000. Dette burde gi meg mer enn nok kraft til å både dra grensesnittet og spille av filmer i full HD, kanskje til og med med litt etterprosessering. Det er også viktig å huske at jeg skal kjøre PVR på denne maskinen, så jeg trenger litt kraft til videohåndtering.

Til sist må man jo også ha en harddisk å kjøre det hele på. Her gikk jeg rett og slett for kriteriene: «billig» og «på lager». Ytelsen er igjen ikke noe stort problem, jeg går for SSD mest på grunn av at det er fullstendig støyløst.

Det hele kom på den nette sum av 5.851,00 med frakt. Det koster å være kar. Dessverre var ikke strømforsyningen på lager, så jeg må smøre meg med tålmodighet til de får den inn, «ubekreftet dato» lover aldri godt.

How to fix blue tint in Flash videos on Linux without disabling hardware acceleration

So, I’ve been having this problem for a while now, where Youtube videos and some other videos will mess up the color channels for a video, and you get a blue tint on all videos, also known as the smurf effect. An example can be seen below:

Most of the solutions posted online for this problem involves disabling hardware acceleration, which is wildly undesirable, since, you know, this makes videos slow and sluggish, especially in fullscreen. Removing the faulty library, libvdpau, is also undesirable, since it is used in other video players than Flash.

But there is one solution, posted here, that lets you keep your hardware acceleration enabled, and fixes the smurfy colors. I keep forgetting the solution, though, hence this blog post. Hopefully, some other poor bugger (you?) is able to find it as well. Here’s the solution for Fedora 17 64-bit:

cd /usr/lib64/flash-plugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so

The directory where libflashplayer.so is stored may vary, you can find out where it is by doing something like this:

cd /usr
find . -name libflashplayer.so

What the command does is to change the string «libvdpau» to «lixvdpau» in libflashplayer.so, making it impossible to load that library. The performance will take a little hit, but not as much as disabling acceleration altogether.

Note: after each flash-update, you need to apply this fix again, as the file gets overwritten by the update. Hopefully libvdpau (or preferably flash itself, but don’t count on it) will get patched with a workaround for this annoying bug soon.

Nettfri dag

På årets siste dag så skal jeg prøve å holde meg helt unna nettet, om ikke annet fordi nettet går så sørgelig tregt her på Åsta (Ice.no mobilt «bredbånd»). Derfor (jeg tar ikke ansvar for et knukket system):

sudo apt-get install lighttpd dnsmasq
sudo sh -c 'echo "Nope!" > /var/www/index.html'
sudo sh -c 'echo "address=/#/127.0.0.1" > /etc/dnsmasq.d/catchall.conf'
sudo sh -c 'echo "prepend domain-name-servers 127.0.0.1;" >> /etc/dhcp/dhclient.conf'
sudo service network-manager restart
sudo service dnsmasq restart

Godt nyttår!

Adding time stamp overlay to video stream using ffmpeg

I’ve been playing around with live streaming from ffmpeg recently, and my latest adventure was to try adding a time stamp to the feed. I searched Google for a solution, but couldn’t find a complete howto, so this is pieced together from information I found found all over the net.

Turns out, all the information you really need to get this working is already in the libavfilter documentation, I just didn’t read it carefully enough.

First of all you need to have a recent build of ffmpeg, with the --enable-libfreetype flag enabled. Just use this excellent howto, and add the flag yourself in the configure-step. You must also make sure to have the libfreetype-dev package installed. This is all provided you use a Debian or Ubuntu based distro, of course.

Once you have built ffmpeg you can check if you have the necessary filter installed with this command:

ffmpeg -filters | grep drawtext

That should print out the following line:

drawtext         Draw text on top of video frames using libfreetype library.

Now you should be able to do something like this:

ffmpeg -f video4linux2 -i /dev/video0 -s 640x480 -r 30 -vf \
"drawtext=fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf: \
text='\%T': fontcolor=white@0.8: x=7: y=460" -vcodec libx264 -vb 2000k \
-preset ultrafast -f mp4 output.mp4

In short, this sets up capture from v4l2-device /dev/video0 with a framesize of 640×480 in 30 fps (pretty common for older webcams). The -vf is where the filter gets applied. fontfile gives the path to a TTF font, text contains the text we want, in this case we want to expand a strftime() sequence (see man strftime for a full list of parameters). Note the escaping slash in front of the %. Then we set the font color to white, with a 80% opacity. There are many other options, such as fontsize, but I haven’t tried them.

Hope this is useful for someone out there.

Addendum, February 21, 2016

Turns out, this blog post has been dug up by people from time to time, judging from the number of pingbacks it has accumulated over the years. So in case you’re here now: ffmpeg made some changes to how they do text expansion (go figure), and the link to the documentation changed too. Here’s a revised example, using a more modern camera with mjpeg for good measure:

ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 \
-vf "drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
text='%{localtime\:%T}': fontcolor=white@0.8: x=7: y=700" -vcodec libx264 \
-preset veryfast -f mp4 -pix_fmt yuv420p -y output.mp4

How to get Spotify URLs working again in Ubuntu 11.04

I’m using the native Spotify client for Linux (available here), which is only available to paying subscribers at the moment, apparently due to some problems in getting commercials to work reliably or something like that, but that’s not the topic of this post.

Ever since I upgraded to Natty I haven’t been able to get Spotify-URIs to work. That is, links that look like this:
spotify:user:einarjh:playlist:7iWZ9zuOOILXU5hbzruuxE. Today I found the corresponding bug: Bug #788673 in xdg-utils.

This is how you fix it:

Create the file /usr/share/applications/spotify-url.desktop and add the following content:

[Desktop Entry]
Name=Spotify
GenericName=Spotify
Comment=Listen to music using Spotify
Icon=spotify-linux-512x512
TryExec=spotify
Exec=spotify -uri %u
Terminal=false
Type=Application
Categories=Qt;AudioVideo
MimeType=x-scheme-handler/spotify
NoDisplay=true

That’s it! Enjoy your working Spotify URIs!