|
|
|
|
||
Strong Sell
Re: Playing with Raspberry Pi 2>> I want to be able to stream to my Rokus, and maybe other devices in my house. I think that's where you're going wrong. The Pi and Pi2 are not good server devices -- they're far too constrained to do a decent job of it, and there are certain design decisions (for example, the combi Ethernet controller and USB hub chip used to provide the 2 / 4 USB ports and the ethernet controller on the B models) which make it inherently poor at this sort of thing. What the Pi2 *is* good at is as a very thin client. It works nicely when strapped behind the telly, plugged into the TV's USB port (for power) and my house ethernet network (for data), and running OpenELEC.tv. I stream recorded broadcast content from an x86 with a couple of TV cards via HTS Tvheadend in TS passthrough mode, and pre-recorded content from another x86 (with more disc space than can possibly be sensible) in a variety of formats over NFS. The Pi(-2) has several macroblocks on the die for video decoding: there are MPEG 2 and VC1 blocks which require licence keys from the Foundation to enable, and the H.264 decoder which doesn't. Without those keys, the Pi1 won't decode even SD MPEG 2 or VC1; the Pi2 will certainly do SD MPEG 2 in software (I haven't tested VC1). Forget HD. Streaming video is fraught with problems at the best of times, not least that not all container formats actually support it. Matroska (.mkv), for example, doesn't actually support streaming: there's an 'atom' at the beginning of the file that is only written to at the end of the multiplexing process. You will find that some mkv files *will* stream, but that's due to a Microsoft extension (which everybody supports, but not all files are muxed with) where the actual content is split into logically distinct small mkv files internally, and bolted together to make one whole file. What happens there is that the late-written atom is still late-written, but as the file is logically chunked into small chunks, you don't need to fetch too much of it to find that data, thus giving the illusion of it being a streamable format. ffmpeg needs a few flags to enable this; I forget what they are. IME, the only sensible streaming format is the MPEG 2 Transport Stream (.ts, .m2ts). This is what is broadcast by DVB and ATSC (which is the US equivalent of DVB, and subtly incompatible for no readily apparent reason), which requires mid-stream access by definition. TL;DR: Use a Pi as a client running OpenELEC.tv or similar, use a beefy x86 as a server with Tvheadend for broadcast, and a beefy x86 with NFS or SMB for DVD rips etc. Right tools for the right job. |
return to message board, top of board |