Streaming video avec netcat et mencoder

netcat & mencoder

Serveur Side

open_streaming.sh

#!/bin/bash

# 500 is acceptable for bitrate, 1000 gives very nice quality

BITRATE=500

MAX_XRES=640

MAX_YRES=480

LISTEN_PORT=443

# oac copy should work fine most of the time

#AUDIO="-oac mp3lame -lameopts preset=192"

AUDIO="-oac copy"

mkfifo "/tmp/maemo_stream-$$"

{ nc -q 0 -l -p $LISTEN_PORT < "/tmp/maemo_stream-$$"; killall -9 mencoder; rm -f "/tmp/maemo_stream-$$"; } &

mencoder -o "/tmp/maemo_stream-$$" $AUDIO -ovc lavc \

-lavcopts vcodec=mpeg4:vbitrate=${BITRATE}:aspect=${MAX_XRES}/${MAX_YRES}:mbd=2:trell:threads=2 \

-idx -zoom -vf-add dsize=${MAX_XRES}:${MAX_YRES}:2,scale \

-vf-add expand=${MAX_XRES}:${MAX_YRES}::::${MAX_XRES}/${MAX_YRES} -vf-add crop=${MAX_XRES}:${MAX_YRES} \

-ffourcc FMP4 "$1"

rm -f "/tmp/maemo_stream-$$"

Client Side

nc -q 0 hostname 443 | mplayer -fs -vo sdl -hardframedrop -cache 512 -cache-min 80 -

App

Streaming audio/vidéo avec cat & mplayer over SSH 1 sans chiffrement

Voici comment streamer tout types de fichiers, audio comme vidéo, contenus sur un serveur distant.

Nous utiliserons pour cela ssh(client/serveur), cat et mplayer.

Configuration du serveur SSH

/etc/ssh/sshd_config
Protocol 2,1

Créer un certificat RSA1
ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""

invoke-rc.d ssh restart
Restarting OpenBSD Secure Shell server: sshd.

Si le démon sshd ne redémarre pas:
mkdir /var/empty
chown root:sys /var/empty
chmod 755 /var/empty

Recompiler ssh avec l’option –with-none

sshd-compilation

Client (poste bureautique sous Linux par exemple)

ssh -oCypher=none user@serveur -- cat ~/video.avi | mplayer -

Quelques explications pour finir

  1. Le client se connect en ssh(port:22) -> sur le serveur distant
  2. Une connexion ssh est ouverte entre le client et le serveur utilisant le protocol SSH1 (clef RSA1)
  3. Le client lance la commande cat à travers le tunnel ssh (créé avec l’option -oCypher=none), le flux de donnée transite en clair sans encryption sur le réseau allégeant le CPU sur le serveur et optimisant la BP.
  4. mplayer avec l’option –hard-framedrop améliore encore « le rendu » de la vidéo

Attention cependant certaines vidéos encoder en HD nécessite une BP > 100ko/sec en Up.

Recent Tweets

Catégories