Topic Exploration
I did some exhaustive web research after my initial experiments.
First conclusions
Moderne video camera's voor de consumentenmarkt zijn in het algemeen voorzien van een HDMI-output (digitaal); moderne camera's voor de professionele markt zijn in het algemeen voorzien van een digitale IEEE 1394/FireWire/iLink interface.
Daarnaast kunnen camera's voorzien zijn van analoge interfaces (in het algemeen S-Video en/of composite video resp. component video (YPbPr)).
Voor de meeste van deze interfaces zijn diverse pluggen gangbaar.
- Andere aansluitingvideo- en/of audiosources die we tegenkomen, zijn:
- S/PDIF (TosLink, BNC of RCA)
- stereo analog line in
- USB 2.0 (toekomst ook USB 3.0 en Thunderbolt)
- HD-SPI
- DisplayPort
HD-kwaliteit video vergt een digitale interface, hoewel de beschikbaarheid van de LI-HDI365 van Leopard Imaging - een HD video component input board - anders doet vermoeden.
Camera's kunnen in het algemeen een aantal video-formaten aan, waaronder MPEG-TS.
Voor unencoded video in HD-kwaliteit is een DualLink HD-SPI interface nodig. Deze optie is daarmee in dit geval niet interessant.
1080p (min. 1920×1080 pixels 30 fps) is de tegenwoordig nagestreefde kwaliteit, zowel voor de verwende consument als voor gangbare professionele toepassingen als video presentaties.
De prestatie-vereisten aan het systeem dat zorgt draagt voor de video encoding neemt zeer sterk toe met een hogere kwaliteit van het video formaat.
- Voor het encoderen van 1080p video in real-time zijn feitelijk de enige oplossingen die in aanmerking komen:
- hardware encodering door specifieke media processoren (als de Texas Instruments DaVinci serie);
- hardware encodering door middel van FPGA's;
- krachtige generieke CPU's.
De hardware-vereisten zijn natuurlijk veel minder indien de video source reeds een output in de vereiste encodering levert, zodat transcodering niet nodig is.
Door gebrek aan inzicht in het toekomstige gebruik en het ontbreken van ervaring in deze is mij niet duidelijk, wat in de praktijk nodig is.
vanwege anti-piraterijbeperkingen is HDMI-input 'rare'.
Transport van HD Video via FireWire lijkt daarmee eenvoudiger te zijn, maar de gebruiksmogelijkheden kunnen ook dan door het gebruik van encryptie beperkt zijn.
Multimedia processoren
Er zijn diverse low-cost ontwikkelboards beschikbaar op basis van een SoC met zo'n media processor die Linux kunnen draaien, zoals het Pandaboard (gebaseerd op de OMAP4). Geen van deze platformen zijn voorzien van of kunnen eenvoudig voorzien worden van een breedbandige digitale input, zoals nodig is voor hoge kwaliteit video (behoudens USB 2.0 en ethernet). De onderhavige toepassing is atypisch voor de markt die is voorzien voor deze processoren. Bijna nooit is er vanuit de leveranciers of open source communities ondersteuning van BSD voor processors en systemen in deze categorie.
Erg interessant voor de toepassing lijkt de Raspberry Pi te zijn:
- Pro
- extreem goedkoop (USB 35)
- USB powered
- Contra
- nog niet beschikbaar (na verwachting leverbaar vanaf februari 2012)
- slechts 1 USB en 1 ethernet interface
- weinig informatie beschikbaar over de SoC (Broadcom BCM2835) aan boord vanwege beleid van de fabrikant
Meer gespecialiseerde ontwikkelplatforms zijn ook verkrijgbaar (bijv. de DM6467 EVM), maar bijna altijd erg duur. Prijstechnisch wel interessant zijn de Leopardboard 365 en de Leopardboard 368 van Leopard Imaging Inc.. Deze boardjes zijn in de eerste plaats bedoeld voor de camera boardjes van dezelfde fabrikant, maar er is een bescheiden keuze aan boardjes met andere video input mogelijkheden.
- Pro
- goedkoop
- krachtig
- klein
- energiezuinig
- Contra
- Veel open source software is nog niet geport. Zelf doen vergt veel tijd.
- beperkte keuze in COTS uitbreidingen en interface mogelijkheden.
- geen boardjes gevonden die voorzien zijn van 2 ethernet interfaces.
Encodering in hardware (FPGA)
Implementaties zijn duur (>EUR 1000) en bijna altijd gesloten.
Interessant is Epiphan Lecture Recorder (USD 1999). De hardware lijkt volledig te voldoen en is ready-to-use (handzaam kastje). De software maakt ook streamen over HTTP en RSTP mogelijk. Het apparaat is opgebouwd rondom een Motorola PowerPC processor en een FPGA (video-processing) en draait op Linux. De software is volledig open source.
Alternatieven zijn Epiphan VGA Recorder Lite (USD 1999) en de miniCASTER (EUR 1400-2700)
Generieke CPUs
Een mini-ITX-boardje met een Core i3 processor, bij voorkeur 2 ethernet interfaces en FireWire, en een PCI Express-bus voor een eventuele video grabber lijkt in dit geval een goede basis.
- Pro
Ruime keuze in uitbreidingsmogelijkheden
Low-cost
Ontwikkeling kan starten op gewone PC (geen instapkosten), met daarna kleine investering ten behoeve van een analoog videosignaal of een FireWire-input en pas een grotere investering ((HD) video grabber van ca. EUR 200) indien opportuun. Resultaat kan gemakkelijk naar andere systemen gepord worden (als Raspberry Pi), bijvoorbeeld indien slechts behoefte aan audio of low-quality video of batterijvoeding.
- Contra
- zwaar
- log
- niet energiezuinig
Een uitvoering als een MacMini of een mini HTPC lijkt het meest praktisch. Nadeel van specifiek een MacMini is dat deze niet voorzien kan worden van een interne HDMI-in/video grabber kaart. Ook kan een tweede ethernet-interface voor de toepassing nuttig zijn.
Geschikte video grabbers worden o.a. gemaakt door BlackMagic Design.
Next Actions
Op basis hiervan kom ik tot de volgende acties ten behoeve van het vervolg:
Start ontwikkeling 'streamer' op gewone PC en onder Linux.
Start met streaming audio en low quality video (via FireWire of USB).
Test kwaliteit van audio en encoding power van Raspberry Pi, zodra board beschikbaar. Eventueel ook van Pandaboard (beschikbaar), en van Leopardboard 368.
Test - om een end-to-end oplossing te kunnen bieden - ook de Raspberry Pi als een streaming client met HDMI-output.
Bepaal rest ontwikkeling aan de hand van behoefte gebruikers.
- Relevante criteria:
- aansluitmogelijkheden video sources;
- kwaliteitsvereisten video;
- draagbaarheid.
Documentatie in het bijzonder in de vorm van een handzame HowTo is zeker zo belangrijk als een implementatie in de vorm van een systeem.
Het uiteindelijke resultaat zowel in kwaliteit van het output signaal als wat betreft de benodigde processing power hangt erg af van de gekozen videoformaten. Transcoding moet voorkomen of goed gepland worden: encoding van video is alleen 'doable' in hardware of in software op zware machines en het cascaderen van lossy algoritmes leidt tot kwaliteitsverlies.