Die Flexperten Herrlich & Ramuschkat

Archive for Juli, 2011

RTMFP Protokoll – welche Ports

Hier ein Auszug aus einem Chat mit Adobe Ingenieuren zum Thema UDP Ports:

Question: Companies often ask me what they need to do to their firewall to allow Peer-Assist to work from our Cloud-based service through their firewall. I usually say they need to open port 1935 for UDP and ports 19350-65535 for UDP. Is this correct?

Answer: They need to allow UDP outbound on any port for P2P to work. When clients open direct connections to neighbors in the Group, these will happen over random UDP ports (whatever port number the kernel doles out when the client opened its socket).

Read more »

FFmpeg mit RTMP Anbindung

FFmeg ist eine Opensource Video Konvertierungsengine, über die man Kommandozeilen basiert Video Dateien von einem Format in ein anderen konvertieren kann. http://www.ffmpeg.org/

Relativ neu ist, dass man mittels einer externen Library LibRTMP Video-Dateien beliebiger Formate auch direkt als LiveStream an den Flash Media Server einspeisen kann.

Um an die LibRTMP Datei zu gelangen, muss man zunächst das RTMPDump Projekt herunterladen. http://rtmpdump.mplayerhq.hu/download/ Am besten dort die neueste Version für z.B. Windows (rtmpdump-2.3-windows.zip) nehmen. Aus dem ZIP die Datei librtmp.dll herauskopieren und in das FFmpeg Bin Verzeichnis kopieren.

Read more »

Flash Media Live Encoder AAC Audio Encoding

Der Flash Media Live Encoder 3.2 unterstützt unter Mac OSX MP3 und AAC Audio Encoding, die Windows Version des Flash Media Live Encoder 3.2 hingegen unterstützt nur MP3 Audio Encoding. Möchte man bei der Windows Version auch AAC Audio Encoding verwenden, so muss man von der Firma MainConcept für 140,00 EUR den AAC Encoder als PlugIn für die Windows Version des Flash Media Live Encoders kaufen.

Audio AAC Encoding ist wichtig, wenn man Live Publishing auch für IOS Geräte anbieten möchte (kommt ja mit Flash Media Server 4.5), da IOS dort zwingend den AAC Audio Codec benötigt.

Flash Media Server HTTP Streaming … auch für IOS

Seit dem Flash Media Server 3.5 ist HTTP Streaming und Flash Player 10.1 wird auch HTTP Streamingvon dem Flash Media Server unterstützt. Dieses wird von Adobe als HDS (HTTP Dynamic Streaming) bezeichnet und hat nichts mit dem HTTP Streaming zu tun, dass man für Apple IOS Geräte benötigt, dieses wird von Apple als HLS (HTTP Live Streaming) bezeichnet.

HLS für IOS Devices wird mit dem kommenden Flash Media Server 4.5 erstmals unterstützt werden. Siehe diese Ankündigung von Adobe.

Der Vorteil von HTTP Streaming (HDS oder HLS) liegt darin, dass insbesondere die CDNs ihre HTTP Caching Infrastruktur nutzen können und dass alles über Port 80 und HTTP läuft, also Firewalls prinzipiell kein Problem mehr darstellen. Einen sehr guten Vortrag über die Vor- und Nachteile von HTTP Streaming findet man in diesem Vortrag: HD Streaming with HTTP Dynamic Streaming.

Ein sehr grosser Nachteil von HTTP Streaming (HDS oder HLS) insbesondere bei Live Streaming ist die doch sehr grosse Latenzzeit: For Apple HLS (HTTP Live Streaming), they require having at least 3 ts files before playback starts, and their recommended ts file duration is 10 secs. That means you can expect about a 30 sec latency in HLS. That’s per Apple specs and recommendations and not due to implementation. For Adobe HDS (HTTP Dynamic Streaming), you can expect a latency in the range of 1-2 F4F fragments; I believe we recommend a fragment duration of 4 seconds. So you can expect latency in the range of about 4-8 seconds. For the lowest latency possible, RTMP beats them all.

Endlich … H.264 Live Encoding im Flash Player 11

Seit Flash Player 6 können Videos von der Webcam direkt encodiert und zum Flash Media Server gesendet werden. Allerdings wurde dazu immer nur der Sorenson Spark H.263 Video Codec und der Nelly Moser Audio Codec verwendet. Diese sind doch stark in die Jahre gekommen und nicht sehr effizient, was man inbesondere an den grossen Pixeln bei bewegten Bildern merkt.

Wollte man Live Videos mit dem neuen H.264 Codec encodieren, musste man bisher immer auf den Flash Media Live Encoder ausweichen, der zwar kostenlos ist, aber natürlich nicht so nahtlos in einer z.B. Video Chat Anwendung zu integrieren ist.

Mit dem Flash Player 11 ändert sich nun alles … denn nun können Live Videos mit dem H.264 Codec encodiert werden.

Siehe dazu auch: A dream comes true: H.264 encoding into Flash Player 11.

Eine erste Flash Player 11 basierender LiveEncoder existiert auch bereits: H.264 WebEncoder basierend auf FP11