broadcast a ustream

broadcast simple
ffmpeg -i videoparaenviar.formato -acodec libmp3lame -ab 40k -ar 44100 -r 29 -s 320x240 -f flv 'direccionustream/codigo flashver=FMLE/3.0\20(compatible;\20FMSc/1.0)'

capa de imagen (50x50 en esquina inferior derecha) encimada sobre un video 480x320

ffmpeg -i ./video.formato -acodec libmp3lame -ab 40k -ar 44100 -r 15 -s 480x320 -vf 'movie=./imagen.png [logo]; [in][logo] overlay=440:280 [out]' -f flv 'direccionustream/codigo flashver=FMLE/3.0\20(compatible;\20FMSc/1.0)'

como hace
en un directorio crear dos archivos trasmitir y listavideos, y un directorio lvids; y recordar cambiar los permisos de los archivos a 777 para ejecutar
esta pensado para usar con ustream
ahh recodificar correctamente el video

bash y ffmpeg

ARCHIVO DE LISTA listavideos

vi[0]="video1.avi";
su[0]="";
im[0]="";
 
vi[1]="video2.avi";
su[1]="";
im[1]="";
 
vi[2]="video3.avi";
su[2]="";
im[2]="";

ARCHIVO QUE EMITE LA LISTA DE VIDEOS trasmitir

#!/bin/bash
./listavideos
spth="./lvids/";
cont=0;
while true; do
  source ./listavideos
  subtitle="$spth""${su[$cont]}";
  video="$spth""${vi[$cont]}";
  imagen="$spth""${im[$cont]}";
  if [ "$video" == "" ]; then  video="inter.avi";  fi
  if [ "$subtitle" != "$spth" ]; then subtitle=" -newsubtitle "$subtitle;
  else subtitle=""; fi
  videos=$video""$subtitle;
  echo "dasa"$videos"dsdasd";
  if [ "$imagen" == "$spth" ]; then  imagen=$spth"over.png";  fi
 
  ffmpeg -i $videos -acodec libmp3lame -ab 40k -ar 44100 -r 15 -s 480x320 \
-vf 'movie=./over.png [logo]; [in][logo] overlay=440:280 [out]' \
-f flv 'rtmp://uriustream/codigoacceso flashver=FMLE/3.0\20(compatible;\20FMSc/1.0)'
 
  cont=`expr $cont + 1`;
  if [ "$cont" == "${#vi[@]}" ]; then cont=0; fi
done


php, vlc y ffmpeg en linea de comandos

archivo 1: lista

"00","noimg","nosub","video0.avi"
"01","noimg","nosub","video1.avi"

archivo main: loop

<?
$GLOBALS["EPATH"] = "./";
$GLOBALS["VFILES"] = $_SERVER["PWD"].""; # $GLOBALS["EPATH"]."";
function leerlista () {
  $nombre_fichero = $GLOBALS["EPATH"]."listavideos0";
  if (!file_exists ($nombre_fichero)) {
    echo "\nNO EXISTE \"$nombre_fichero\" (ARCHIVO DE LISTAS)\n\n";
    exit ();
  }
  else {
  $gestor = fopen ($nombre_fichero, "r");
  $contenido = fread ($gestor, filesize ($nombre_fichero));
  fclose ($gestor);
  if (strlen ($contenido) < 1) { $contenido = ""; }
  else { $contenido = $contenido.""; }
  return $contenido;
  }
}
 
function cnvtime ($e) {
/* * /
  switch ($e) {
    0,1,2,3,4,5,6,7,8,9:
    default:
    ;;
  }
  return $v;
/* */
}
function cnvstime ($tm) {
 
  // return $tv;
}
$continuar = true;
while ($continuar) {
  #echo "comienza\n";
  include ($GLOBALS["EPATH"]."ejecutando.php");
  #echo cnvtime (71);
  echo "\n";
}
 
?>

archivo 2: ejecutador

<?
#echo phpinfo();
  $lista = leerlista ();
  $lstx = split ("\n", $lista);
  $lstt = count ($lstx);
  $lstc = 0;
  $vdph = $GLOBALS["VFILES"]="direcciondelacarpetaconlosvideos"; ### o simplemente "./"
  while ($lstc < $lstt) {
    $lista = leerlista ();
    $lstx = split ("\n", $lista);
    $lstt = count ($lstx);
    $lstl = $lstx[$lstc];
    $vdxt = split (",", $lstl);
    if ($lstx[$lstc] != "") {
      $vdnm = str_replace ("\"", "", $vdxt[3]);
      $vdnm = str_replace ("\ ", "\\ ", $vdnm);
      $vdph = $GLOBALS["VFILES"]."/".$vdnm;
echo $vdph." <-- resultado continuo\n";
      if (file_exists ($vdph) == true) {
        $vsubf = strrev (substr (strrev ($vdph), 0, 3));
        $vsubs = "";
        if (file_exists ($vsubf."sub") == true) { $vsubs = "--sub-file=".$vsubf."sub "; }
        if (file_exists ($vsubf."str") == true) { $vsubs = "--sub-file=".$vsubf."str "; }
        #echo "".$vx[0]."--".$vx[1]."--".$vx[2]."--".$vx[3]."";
        echo "\n";
        sleep (2);
 
        $vdif = "";
        $vddu = exec ("ffprobe -loglevel error -show_streams ".$vdph." | grep duration | cut -f2 -d=");
        $vddu = round ($vddu);
        $vdst = date ("U");
        $vdep = ($vdst + $vddu);
        $vdif = $vdif." Nombre  : ".$vdnm."\n";
        $vdif = $vdif." Duracion: ".$vddu."\n";
        $vdif = $vdif." Inicio  : ".$vdst."(".date ("H:i:s").")\n";
        $vdif = $vdif." FinPrn  : ".$vdep."\n";
        echo "\n";
        echo $vdif;
 
        $flver = "flashver=FMLE/3.0\\20(compatible;\\20FMSc/1.0)";
        #ejemplos de uri y codigo del canal
        $uuri = "rtmp://1.123456.fme.ustream.tv/ustreamVideo/17655076";
        $vcod = "XLkJLfw4CV2ZBbYYWVWpV9BubuHUsDEF";
        ####################
        $vuri = $uuri."/".$vcod;
        $vbrct = " -f flv '".$vuri." ".$flver."' ";
        #r = 29.97
        $vaudi = "-preset ultrafast -acodec libmp3lame -ab 40k -ar 44100 -aspect 16:9 -r 29.97 ";
       ### resoluciones de video utilizar dependiendo del ancho de banda
        # 360x202 480x270 640x360 800x450 1024×576
        # 1152×648 1280×720 1366×768 1600×900 1920×1080
        # 2560×1440 3840×2160
        $vvres = "360x202";
        #$vvres = "480x270";
        #@$vvres = "640x360";
 
        $vtime = ($vddu * 2);
        $vtime = "-t ".$vtime." ";
 
        $plogo = "440:280";
        if ($vvres == "640x360") { $plogo = "600:320"; }
        if ($vvres == "480x270") { $plogo = "440:230"; }
        if ($vvres == "360x202") { $plogo = "320:162"; }
 
        $vlogo = "./over.png";
        $vover = "-vf 'movie=".$vlogo." [logo]; [in][logo] overlay=".$plogo." [out]'";
 
        $vreso = "-s ".$vvres." ";
        $vorig = "-i ".$vdph." ".$vtime.$vaudi." ".$vreso." ";
 
        $tout = $vddu + 10;
        $c_cvlc = "cvlc ".$vdph." ".$vsubs." :sout='#transcode{vcodec=mp2v,vb=800,scale=1,soverlay,acodec=mp3,ab=40,channels=2,samplerate=44100}:std{access=udp{ttl=1},mux=ts,dst=127.0.0.1:1234}' :sout-keep";
        $vs_input = "-i udp://127.0.0.1:1234/";
        $vo_audio = "-acodec libmp3lame -ab 40k -ar 44100";
        $vo_reso = $vreso;
        $vo_vopts = "-r 15 -async 5";
        $vo_logo = $vover;
        $vo_post = $vbrct;
        $c_ffmpeg = "ffmpeg ".$vs_input." ".$vo_audio." ".$vo_vopts." ".$vo_reso." ".$vo_logo." ".$vo_post."";
        $jec = $c_cvlc." & ".$c_ffmpeg." & sleep ".$tout."; kill $(ps aux | grep '".$vdph."' | grep -v grep | awk '{print $2}'); kill -9 $(ps aux | grep '".$vcod."' | grep -v grep | awk '{print $2}'); ";
 
        echo "\n";
        echo " ".$jec."\n";
 
        exec ($jec);
 
       echo "\n";
       echo "\n";
       echo "FIN DE VIDEO\n";
       echo "\n";
       echo "\n";
       echo "\n";
       echo "\n";
       $continuar = true;
 
      }
    }
    $lista = leerlista ();
    $lstx = split ("\n", $lista);
    $lstt = count ($lstx);
    $lstc++;
  }
/* */
 
?>
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.