Date: Sat, 26 Mar 2011 20:28:38 +0100 From: Juergen Lock <nox@jelal.kn-bremen.de> To: freebsd-multimedia@FreeBSD.org Cc: lme@FreeBSD.org, Alexander Leidinger <Alexander@Leidinger.net>, freebsd-ports@FreeBSD.org Subject: some vdr intro/installation notes (watch/record/stream tv) Message-ID: <20110326192838.GA68179@triton8.kn-bremen.de>
next in thread | raw e-mail | index | archive | help
Hi, now that the vdr ports are finally committed here are some updated notes: So what is vdr? It's something like a luxury settop box/pvr on a pc to receive/watch/record/stream digital tv channels with epg (electronic program guide), timers, client/server networking, webinterface etc pp. So if you have a FreeBSD (or Linux, but that's not covered here :) server you can add one or more dvb/atsc tuner(s) connected to a satellite dish, cable tv or just a dvb-t antenna (or receive iptv streams without a tuner if your isp provides those tho I don't know if anyone tested `real' iptv on FreeBSD yet), browse/search epg, set timers for automated or manual recordings, and watch the streams/recordings elsewhere on your lan. Or if you have a FreeBSD desktop you can also connect a tuner there and do it all on one box - or just run a vdr client like vdr-sxfe (installed by the multimedia/vdr-plugin-xineliboutput port) or a client vdr instance using the streamdev-client plugin connected to a (possibly Linux) vdr server elsewhere on your lan. So if your isp doesn't provide iptv, https://secure.wikimedia.org/wikipedia/en/wiki/IPTV (german info page: http://www.iptv-anbieter.info/ ) then you'll need a dvb tuner (or atsc, tho I have no idea if anyone tested that with vdr on FreeBSD yet) with corresponding v4l/dvb (`v4b') drivers, in most cases that means an usb tuner supported by the webcamd port: http://www.freshports.org/multimedia/webcamd And finally, if you want to compare vdr to other existing ports, it's a bit like mythtv - only most Linux users _I_ know prefer vdr over mythtv. :) (and vdr also doesn't use a rdbms so you don't have to worry about mysql etc.) ----snip---previous-notes-with-minor-updates:------- I started with jpulz' vdr 1.7.14 patches: (now updated to 1.7.17) ftp://ftp.frm2.tum.de/pub/jpulz/VDR/ ftp://ftp.frm2.tum.de/pub/jpulz/pictures/ and made q&d ports of those and of a few more plugins and two webinterfaces so I can now use FreeBSD as a pc hdtv dvb-s2 and also dvb-t dvr. Note: vdr 1.7.17 is the development branch so expect bugs! (I mostly used it because the stable branch (1.6) doesn't support dvb-s2 and h264...) FreeBSD notes: 0. See my earlier threads on the freebsd-multimedia list about webcamd and the usb dvb-s2 and dvb-t tuners I tested; the relevant webcamd ports and frieds have been updated now so you _should_ be able to just use those. (dvb-c or atsc(?) tuners should also work as long as webcamd supports them and there aren't other bugs.) Links to the more important posts are also here: http://people.freebsd.org/~nox/dvb/ 1. Before you start installing these ports either mount an extra fs with enough space for the recordings on /video or create a video dir elsewhere where there is space, symlink it to /video and make it writable for the vdr user. (or if you do have one big / then you can create the dir on there too of course, I just disabled the mkdir in the port to avoid inadvertently filling up ppl's small / fs.) Or if you don't like a symlink you can also add your video dir as -v <dir> to vdr's startup args, see below. 2. There is a multimedia/vdr-plugins metaport that allows you to select and install the plugins you want (and vdr itself as a dependency), so you don't have to install numerous vdr/plugin ports individually. 3. I have rc.d scripts for vdr and vdradmin-am but even if you use those you still need to add plugins and their options similar to this to your /etc/rc.conf: ---snip---- # vdr vdr_flags="'-Pxineliboutput --local=none --remote=127.1:37890' \ -Pskinenigmang -Pfemon -Posdpip \ '-Posdteletext --cache-system=packed --max-cache=128' \ -Pstreamdev-server '-Plive -i127.1' -Pepgsearch -Pcontrol \ -Pinfosatepg -Piptv '-Pupnp -i lo0'" ---snip---- look in the README.s of the individual plugin ports for any needed options. (should get installed below /usr/local/share/doc/vdr*) And if you want vdr to start at boot (instead of just manually by doing: /usr/local/etc/rc.d/vdr onestart ) you need to set: vdr_enable="YES" too of course. And for vdradmin_am its: vdradmind_enable="YES" If you want to start vdr manually in the foreground instead you need to be root (or the vdr user but vdr also drops to the vdr uid itself if started as root), and then run it like: vdr '-Pxineliboutput --local=none --remote=127.1:37890' -Pskinenigmang -Pfemon -Posdpip '-Posdteletext --cache-system=packed --max-cache=128' -Pstreamdev-server '-Plive -i127.1' -Pepgsearch -Pcontrol -Pinfosatepg -Piptv '-Pupnp -i lo0' 4. Of all the video output methods only xineliboutput and streamdev seem to work (and the vdr-live webinterface browser streaming which also uses streamdev), jpulz also has patches for softdevice so I made a port for that too but it only gave me a black screen... streamdev doesn't have an osd so you probably want xineliboutput at least for the first setup. I only very recently was able to test xineliboutput's vdpau/vaapi support and it turned out I had to add patches to the libxine port, so if you want to use that make sure it and ffmpeg are up to date and built with the VDPAU and VAAPI knobs on. To test vdpau you can try something like: (vdr-sxfe gets installed by the xineliboutput plugin port) vdr-sxfe --hotkeys --video=vdpau --post tvtime:method=use_vo_driver,use_progressive_frame_flag=1 --audio=oss --reconnect xvdr+tcp://127.1 if that looks jerky or doesn't work with hd material maybe your card cannot handle the default vdpau deinterlacing method, you can change that in ~/.xine/config_xineliboutput, for an `old' ION I use: video.output.vdpau_deinterlace_method:half temporal And vaapi is used via xv, just for nvidia this needs the multimedia/vdpau-video port installed (other cards I think we don't have support for yet), and in ~/.xine/config_xineliboutput video.processing.ffmpeg_enable_vaapi should not be set to 0: vdr-sxfe --hotkeys --video=xv --post=tvtime:method=Linear,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1 --audio=oss --reconnect xvdr+tcp://127.1:37890 An overview of which nvidia cards support which vdpau feature is here: http://www.mythtv.org/wiki/VDPAU On the radeon here using xorg 7.4's video-ati driver with the same xineliboutput xv settings but without vaapi vdr-sxfe as well as all other players I tested that knew the xvdr protocol (xineliboutput with osd) can also play h264 hd channels on this PhenomII box after the ffmpeg updates last year(?), with the only exception of kaffeine that still has issues with h264 1080i streams when deinterlacing is enabled: xine "xvdr://127.0.0.1#nocache" kaffeine "xvdr+tcp://127.0.0.1:37890" /usr/local/kde4/bin/kaffeine "xvdr+tcp://127.0.0.1:37890" (kaffeine also has no provision for vdr keyboard control...) If you don't use vdpau (I think that conflicts with compositing) you can now also try compositing and running vdr-sxfe with --hud for a somewhat nicer rendered osd, --video opengl (and vdpau as mentioned) support is now also in the build. Btw I use software volume control with xineliboutput (Setup -> Plugins -> xineliboutput -> Volume control in the osd) because selecting `hardware' there doesn't work so well with snd(4)'s volume-per-channel feature (hint.pcm.X.vpc, which also in fact is software) that I want to keep enabled for other apps... And in case you didn't know about this snd(4) feature you can read more here: http://people.freebsd.org/~ariff/SOUND_4.TXT.html You can also use other players like mplayer or totem/gstreamer (incluing the totem browser plugin invoked by the vdr-live webinterface), only those don't know the xvdr protocol and thus wont display an osd: mplayer -mc 10 -cache 8192 -demuxer lavf http://127.0.0.1:37890/ totem http://127.0.0.1:37890/ (or using streamdev: mplayer -mc 10 -cache 8192 -demuxer lavf http://127.0.0.1:3000/302 totem http://127.0.0.1:3000/302 - channel 302 is arte hd in my channels.conf.) 5. And if you want to try out the xbmc port that recently has been committed with live tv via vdr you can do that too even tho it is not the pvr-testing2 branch, you just won't get the fast channel switching etc you'd get via the vnsi protocol (that I also ported the plugin for but couldn't test it) - watching live channels and recordings done by vdr (possibly scheduled via webinterface) is still possible. Just make sure you run vdr with the streamdev-server plugin enabled and that it is listening on the vdr-to-vdr server port (thats 2004 and may be disabled by default, see in the osd under Setup -> Plugins -> streamdev-server.) Then in xbmc you can add vdr streamdev as a video source either via the gui or manually by putting something like this in ~/.xbmc/userdata/mediasources.xml: <mediasources> <network> <location id="0">vtp://127.0.0.1:2004/</location> </network> </mediasources> Note you'll have to add the /video dir to xbmc seperately via the filesystem (possibly using nfs when remote) if you want to be able to play recordings from xbmc (or test the upnp plugin with xbmc but that is still alpha and at least atm also cannot stream h264 recordings.) 6. Unless you want to get lirc or the (experimental) FreeBSD uhid(4) patches in the vdr remote plugin working first (and your remote has enough buttons for vdr, some of those coming with dvb tuners are really quite `minimal', see below), you probably will at least initially want to use keyboard control. I have included an example remote.conf for vdr-sxfe and the multimedia/vdr-plugin-control plugin that you can access by telnet (default port is 2002), I have put the menu button on the tab and insert keys and OK on the return key, see /usr/local/etc/vdr/remote.conf for the full keybindings list. (If you start vdr in the foreground and keep that shell open you should be able to use that for keyboard control also, the control plugin just gives you an osd too over telnet.) And if you use xine xine "xvdr://127.0.0.1#nocache" instead of vdr-sxfe vdr-sxfe --video=xv --hotkeys --audio=oss xvdr+tcp://127.0.0.1:37890 you probably want to use a ~/.xine/keymap that includes vdr controls, I've put mine here: http://people.freebsd.org/~nox/dvb/xine/keymap and the xineliboutput plugin port now also installs it under: /usr/local/share/examples/vdr-plugin-xineliboutput/xine/keymap Oh and the webinterfaces have point-and-click remotes too but those are pretty clunky to use... 7. And for those that want to use lirc: See the comms/lirc port's pkg-message for its setup notes, they can be shown like this: pkg_info -D lirc\* |less Once you have verified that irw correctly reports buttons pressed on the remote you can start vdr with --lirc, if the osd then doesn't prompt you to assign buttons on the remote stop vdr and do: touch /usr/local/etc/vdr/channels.conf and/or remove previous lirc-related entries out of /usr/local/etc/vdr/remote.conf . I think the minimal buttons you need to assign for vdr are menu, back, ok, the cursor buttons (up, down, left, right), the digits (0-9), and the colours (red, green, yellow, blue) - and you probably also want at least volume up/down/mute and buttons to invoke the audio channel and subtitle submenus. (and next on the list are record, play, pause, stop, fast forward, rewind.) See /usr/local/share/doc/vdr/MANUAL for more info. Once the remote.conf is setup for lirc you can also start vdr-sxfe with --lirc instead of passing --lirc to vdr itself so you can use the remote to control other apps when vdr-sxfe isn't running (like xbmc), otherwise vdr would be interpreting the buttons all the time. Or you can disable lirc control temporarily in vdr by invoking: svdrpsend.pl remo off and enable it again by: svdrpsend.pl remo on - see here for some other things you can control that way: http://www.linuxtv.org/vdrwiki/index.php/SVDRP 8. The example /usr/local/etc/vdr/channels.conf is the one that comes with the vdr sources, its for Astra 19.2E and a little outdated (also doesn't have hd channels yet), if you receive something else and don't want to go hunting for a suitable channels.conf on the web you can use the multimedia/w_scan port. Remember to use -o7 for vdr 1.7.x, see the w_scan(1) manpage and its homepage for options and examples: http://wirbel.htpc-forum.de/w_scan/index_en.html (the w_scan start script hasn't been ported to FreeBSD yet.) Also note you probably will only need to use w_scan once initially, this vdr version by default should look for new transponders itself when it does its epg scan during idle times unles you disable that feature. And if you install the iptv plugin and want to test it with some internet streams if your isp dosn't provide `real' iptv (or you just want to be able to press `r'ecord while watching web streams like nasatv), you can merge example /usr/local/etc/vdr/channels.conf entries from here: /usr/local/share/examples/vdr-plugin-iptv/channels.conf.iptv (I don't have `real' iptv here so that's all I can test. Also don't expect 100% performance with these examples, live transcoding streams to mpeg-ts that vdr expects still is kinda fragile and sometimes needs to be manually restarted by e.g. hitting OK (return) in the channel list (c) before it works, and startup is usually slow too... Transcoding uses vlc with those examples, you can see vlc's messages if you start vdr in the foreground instead of via the rc.d script as explained above. Also see /usr/local/etc/vdr/plugins/iptv and /usr/local/etc/vdr/plugins/iptv/vlcinput and the plugin homepage: http://www.saunalahti.fi/~rahrenbe/vdr/iptv/ for configurations. And there seems to be a `feature' that sometimes causes vdr to start receiving streams without anyone watching/recording just because the iptv plugin is enabled, the `fix' for that is the IPTVPATCH option in the vdr port.) 9. I ported two webinterfaces because I only learned about vdr-live later which seems to be faster and uses fewer resources meaning you could probably turn a pretty wimpy box into a vdr server as long as you keep the actual watching (especially of h264 hd) to a faster box connected over the network. (or use something like vdpau.) The vdr-plugin-live webinterface by default listens on port 8008: http://127.1:8008/ Default login/pw is admin/live as also mentioned in: /usr/local/share/doc/vdr-plugin-live/README vdradmin_am listens on 8001: http://127.1:8001/ Default login/pw for that is vdr/vdr. And the streamdev-server plugin has a (simple) webinterface too if you point a browser at it: (instead of a player) http://127.1:3000/ 10.I may have forgot some other manual installation steps, if you notice something just post a followup... Most of vdr's own configuration including plugins should be available in the osd under `Setup', some things like allowed hosts/subnets for network plugins need to be manually configured under /usr/local/etc/vdr/plugins tho. And here are some links about vdr and the plugins and webinterfaces I made ports for: 0. vdr 1.7.17: http://www.tvdr.de/ http://www.linuxtv.org/vdrwiki/index.php/Main_Page See also /usr/local/share/doc/vdr/MANUAL and the vdr(1) manpage. 1. xineliboutput-1.0.90s20110308.2305 cvs snapshot: http://sourceforge.net/projects/xineliboutput/ http://www.linuxtv.org/vdrwiki/index.php/Xineliboutput-plugin /usr/local/share/doc/vdr-plugin-xineliboutput/README 2. streamdev-0.5.1: http://streamdev.vdr-developer.org/ http://www.linuxtv.org/vdrwiki/index.php/Streamdev-plugin /usr/local/share/doc/vdr-plugin-streamdev/README 3. live-0.2.0s20110303 git snapshot: http://live.vdr-developer.org/ /usr/local/share/doc/vdr-plugin-live/README 4. live also depends on cxxtools and tntnet which I also had to port: http://www.tntnet.org/cxxtools.html http://www.tntnet.org/index.html 5. epgsearch-0.9.25b20s20110221 git snapshot: http://winni.vdr-developer.org/epgsearch/index_eng.html http://www.linuxtv.org/vdrwiki/index.php/Epgsearch-plugin 6. femon-1.7.7: http://www.saunalahti.fi/~rahrenbe/vdr/femon/ http://www.linuxtv.org/vdrwiki/index.php/Femon-plugin /usr/local/share/doc/vdr-plugin-femon/README 7. osdpip-0.1.0: http://projects.vdr-developer.org/projects/show/plg-osdpip http://www.linuxtv.org/vdrwiki/index.php/Osdpip-plugin /usr/local/share/doc/vdr-plugin-osdpip/README 8. osdteletext-0.9.0: http://projects.vdr-developer.org/projects/show/plg-osdteletext http://www.linuxtv.org/vdrwiki/index.php/Osdteletext-plugin /usr/local/share/doc/vdr-plugin-osdteletext/README 9. skinenigmang-0.1.1: http://andreas.vdr-developer.org/enigmang/index.html http://www.vdr-wiki.de/wiki/index.php/Skinenigmang-plugin (sorry for de in the second link but at least there are pics...) /usr/local/share/doc/vdr-plugin-skinenigmang/README 10. softdevice 0.5.0 cvs snapshot from 20100414: http://softdevice.berlios.de/ http://www.linuxtv.org/vdrwiki/index.php/Softdevice-plugin /usr/local/share/doc/vdr-plugin-softdevice/README 11. control-0.0.2a-45yavdr1 with ubuntu yavdr patches: (and a patch by me to fix a segfault on vdr exit) http://ricomp.de/vdr/down_en.html http://www.linuxtv.org/vdrwiki/index.php/Control-plugin /usr/local/share/doc/vdr-plugin-control/README 12. vdradmin_am-3.6.7: http://andreas.vdr-developer.org/vdradmin-am/ /usr/local/share/doc/vdradmin-am/README 13. infosatepg-0.0.11: http://projects.vdr-developer.org/projects/show/plg-infosatepg http://vdr-wiki.de/wiki/index.php/Infosatepg-plugin My post including notes about how I got it receiving and using the infosat epg data quickly: http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-July/011158.html 14. remote-0.4.0: (with experimental FreeBSD uhid(4) support, some notes are in the port's pkg-descr) http://escape-edv.de/endriss/vdr http://www.linuxtv.org/vdrwiki/index.php/Remote-plugin /usr/local/share/doc/vdr-plugin-remote/README 15. iptv-0.4.2: http://www.saunalahti.fi/~rahrenbe/vdr/iptv/ /usr/local/share/doc/vdr-plugin-iptv/README 16. vnsiserver-0.0.2s20100808.0952: http://www.vdr-wiki.de/wiki/index.php/Vnsi-server-plugin http://www.vdr-portal.de/board/thread.php?threadid=95292 (sorry about the german but as I said this is only useful with the xbmc pvr-testing2 branch anyway and its untested too.) /usr/local/share/doc/vdr-plugin-vnsiserver/README 17. upnp-0.0.2a2 (alpha!) with a few bugfixes done by me: http://upnp.vdr-developer.org/ http://lists.freebsd.org/pipermail/freebsd-multimedia/2011-January/011531.html /usr/local/share/doc/vdr-plugin-upnp/README TROUBLESHOOTING: - If vdr behaves strangely check syslog (/var/log/messages) for hints as to what might be the problem. - If vdr crashes/exits at start check permissions of files/dirs it needs write access to (below /usr/local/etc/vdr, /var/cache/vdr, /video) - If you want to stop vdr exiting when e.g. it can't tune a channel scheduled for recording change the osd setting `Setup -> Miscellaneous -> Emergency exit'. - Small bug: if playback of a recording doesn't start try pressing Green. (or F6 with my example remote.conf keyboard mapping.) - More help is available e.g. at the vdr wiki: http://www.linuxtv.org/vdrwiki/ the vdr mailinglist: http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr (I think you need to be subscribed to be able to post) and a (nicer) archive of it: http://dir.gmane.org/gmane.linux.vdr And there also is the mostly german-language vdr portal: http://vdr-portal.de/ and I think I saw at least a russian-language vdr webforum too. (tho I don't speak russian.) TODO: (Help highly welcome!) - The ports still could use quite some cleanup work, also to make upgrading them or adding new plugins easier. (I just didn't want to delay committing them any longer...) - Submit the rest of the non-hacky FreeBSD patches back to the individual upstream maintainers (that should be pretty much all of the patches for *.[ch] source files, only Makefile/configure scripts patches less so.) - Someone(tm) may want to write a `real' step-by-step guide how to get a FreeBSD vdr going... (preferably someone who has never used vdr before to make sure important stuff I never think about isn't left out.) - Port more plugins that people might want to use... Enjoy, :) Juergen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110326192838.GA68179>