Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2015, 09:34
atom_blossom
 
Fecha de Ingreso: junio-2015
Ubicación: León, Guanajuato
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 1
Sonrisa Conversion de videos MP4 con ffmpeg desde linux suse con php!

Bueno llevo ya varias semanas tratando de resolver un problema que se me presento con ffmpeg , el problema es que al momento de realizar la conversion de un video de cualquier formato a MP4,OGG y WEBM, el MP4 no se visualiza en ningun navegador , y pues es necesario ya que IE solo acepta videos en formato MP4. Al principio ffmpeg creaba archivos vacios , ahora si tienen contenido, ya que se pueden visualizar con cualquier reproductor de videos. El servidor desde el cual se realiza la conversion esta en Linux SUSE, pero el sistema estaen windows 7, no se si exista algun problema al momento de traer los archivos desde el servidor para mostrarlos por medio de codigo PHP y HTML.

Código en php que ejecuta ffmpeg para la conversión de vídeos a los formatos OGG, WEBM y MP4 y realiza la inserción de las rutas a una tabla de una base de datos en oracle.

Código PHP:
/*esta funcion realiza la conversion  de los videos a los 3 formatos (OGG,WEBM,MP4) recibiendo como parametro la ruta origen y la ruta final
y el formato al que se debe convertit*/
function convertirVideo($rutaConvertir,$rutaFinal,$formato){    
    echo 
shell_exec("ffmpeg -y -i $rutaConvertir -s 720x480 $rutaFinal{$formato} >/dev/null 2>/dev/null &");    
        return 
$bandera=true;
}
/*Esta funcion inserta la ruta final de un video ya convertido dependiendo del tipo de video*/
function insertar($idNuevo,$rutaConvertirSinPuntos,$columna,$ruta,$newIdArchivo){
    if(
$columna==" "){
    
$query_sql "insert into FO04(FO04_ID,FO04_RUTACONVERTIR,FO04_ID_ARCHIVO)VALUES($idNuevo,'$rutaConvertirSinPuntos',$newIdArchivo)";
     }
    else{
    
$query_sql "insert into FO04(FO04_ID,FO04_RUTACONVERTIR,$columna,FO04_ID_ARCHIVO)VALUES($idNuevo,'$rutaConvertirSinPuntos','$ruta',$newIdArchivo)";        
    }
    echo 
$query_sql;
    
query_bd($query_sql);        
}
/*Arreglos que contienen los formatos en los que se convertira el video*/
$formatos= Array (".ogg",".webm",".mp4");
$formatosConvertirMP4= Array (".ogg",".webm");
$formatosConvertirOGG= Array (".webm",".mp4");
$formatosConvertirWEBM= Array (".ogg",".mp4");
//compara si el video es admitido o no    
if (in_array($extension$extensionesVIDEOS))
{   
/*COMIENZAN LAS COMPARACIONES DE VIDEOS*/        
    
if ($tipoVideo != "mp4" && $tipoVideo != "ogg" && $tipoVideo != "webm"
    {  if (
move_uploaded_file($_FILES["archivo"]["tmp_name"], $rutaConvertir))
        {   
$rutaConvertirSinPuntos substr("$rutaConvertir"3);
            
insertar($idNuevo,$rutaConvertirSinPuntos," "," ",$newIdArchivo);
            
ocicommit($conexion);
            echo 
"El archivo " $nombreCompleto " se ha subido.";
            
$rutaFinal "../subidas/$nombre";//esta es la ruta final en el servidor
            
$rutaFinal22 "subidas/$nombre";//esta es la ruta final en el servidor          
            
$columnasParaTODOS=Array("FO04_RUTASERVIDOR_OGG","FO04_RUTASERVIDOR_WEBM","FO04_RUTASERVIDOR_MP4");
            for(
$i 0$i count($formatos); ++$i){
                
$bandera=convertirVideo($rutaConvertir,$rutaFinal,$formatos[$i]);                
                if(
$bandera==true){
                    
$rt substr("$rutaFinal{$formatos[$i]}"3);
                    
updateRuta($columnasParaTODOS[$i],$rt,$idNuevo);
                    
ocicommit($conexion);}
                else 
                {
                echo 
"Error al convertir el video";
                }
            }
        } 
        else{echo 
"Ocurrió un error al subir el video!!.";}
    } 
    else 
    {
    if (
$tipoVideo == "mp4")
        {   
            if (
move_uploaded_file($_FILES["archivo"]["tmp_name"], $target_file))
            {
                
$rutaFinalServidorSinPuntos substr("$target_file"3);
                
insertar($idNuevo,$rutaFinalServidorSinPuntos,"FO04_RUTASERVIDOR_MP4",$rutaFinalServidorSinPuntos,$newIdArchivo);
                
ocicommit($conexion);

                echo 
"El archivo " $nombreCompleto " se ha subido.";
                
$rutaFinal2 "../subidas/$nombre";//esta es la ruta final en el servidor
                
$columnasParaMP4=Array("FO04_RUTASERVIDOR_OGG","FO04_RUTASERVIDOR_WEBM");

                for(
$i 0$i count($formatosConvertirMP4); ++$i)
                {
                    
$bandera=convertirVideo($target_file,$rutaFinal2,$formatosConvertirMP4[$i]);
                    if(
$bandera==true)
                    {
                        
$rt2 substr("$rutaFinal2{$formatosConvertirMP4[$i]}"3);
                        
updateRuta($columnasParaMP4[$i],$rt2$idNuevo);
                        
ocicommit($conexion);
                    }
                    else
                    {
                        echo 
"Error al convertir el video";
                    }
                }
            } 
            else 
            {
                echo 
"Ocurrió un error al subir el video!!.";
            }
        } 
        else
        {
        if (
$tipoVideo == "ogg" || $tipoVideo == "webm")
        {
            if (
$tipoVideo == "ogg")
            {
                if (
move_uploaded_file($_FILES["archivo"]["tmp_name"], $target_file))
                {
                    
$rutaFinalServidorSinPuntos2 substr("$target_file"3);
                    
insertar($idNuevo,$rutaFinalServidorSinPuntos2,"FO04_RUTASERVIDOR_OGG",$rutaFinalServidorSinPuntos2,$newIdArchivo);
                    
ocicommit($conexion);

                    echo 
"El archivo " $nombreCompleto " se ha subido.";

                    
$rutaFinal3 "../subidas/$nombre";//esta es la ruta final en el servidor
                    
$columnasParaOGG=Array("FO04_RUTASERVIDOR_WEBM","FO04_RUTASERVIDOR_MP4");
                    
                    for(
$i 0$i count($formatosConvertirOGG); ++$i)
                    {
                        
$bandera=convertirVideo($target_file,$rutaFinal3,$formatosConvertirOGG[$i]);
                        if(
$bandera==true)
                        {
                            
$rt3 substr("$rutaFinal3{$formatosConvertirOGG[$i]}"3);
                            
updateRuta($columnasParaOGG[$i],$rt3$idNuevo);
                            
ocicommit($conexion);
                        }
                        else
                        {
                            echo 
"Error al convertir el video";
                        }
                    }
                }
                else
                {
                    echo 
"Error al convertir el video";
                }
            }
            else
            {
               if (
$tipoVideo == "webm")
                {
                    if (
move_uploaded_file($_FILES["archivo"]["tmp_name"], $target_file))
                    {
                        
$rutaFinalServidorSinPuntos3 substr("$target_file"3);
                        
insertar($idNuevo,$rutaFinalServidorSinPuntos3,"FO04_RUTASERVIDOR_WEBM",$rutaFinalServidorSinPuntos3,$newIdArchivo);
                        
ocicommit($conexion);

                        echo 
"El archivo " $nombreCompleto " se ha subido.";
                        
$rutaFinal4 "../subidas/$nombre";//esta es la ruta final en el servidor
                        
$columnasParaWEBM=Array("FO04_RUTASERVIDOR_OGG","FO04_RUTASERVIDOR_MP4");

                        for(
$i 0$i count($formatosConvertirWEBM); ++$i)
                        {
                            
$bandera=convertirVideo($target_file,$rutaFinal4,$formatosConvertirWEBM[$i]);
                            if(
$bandera==true)
                            {
                                
$rt4 substr("$rutaFinal4{$formatosConvertirWEBM[$i]}"3);
                                
updateRuta($columnasParaWEBM[$i],$rt4$idNuevo);
                                
ocicommit($conexion);
                            }
                            else
                            {
                                echo 
"Error al convertir el video";
                            }
                        }
                    } 
                    else 
                    {
                        echo 
"Ocurrió un error al subir el video!!.";
                    }    
                }                                 
            }
            }
        }
    }
}
?> 
Parte del código en PHP que extrae las rutas de los videos de una tabla de BD y los muestra a través de la etiqueta vídeo de html.

Código PHP:
if ($TIPO_EXTENSION == "video") {
                
$query_sql2 " SELECT FO04_RUTASERVIDOR_MP4, FO04_RUTASERVIDOR_OGG, FO04_RUTASERVIDOR_WEBM FROM FO04 WHERE FO04_ID_ARCHIVO = $ID_ARCHIVO";
                
$resultado2 query_bd($query_sql2);
                if (
$resultado2) {
                    while ((
$row2 oci_fetch_array($resultado2OCI_ASSOC)) != false) {
                        
$RUTA_VIDEO $row2["FO04_RUTASERVIDOR_MP4"];
                        
$RUTA_OGG $row2["FO04_RUTASERVIDOR_OGG"];
                        
$RUTA_WEBM $row2["FO04_RUTASERVIDOR_WEBM"];
                        echo 
"<center><video id='imgTemaDesplegado' controls>";
                        if(
$RUTA_VIDEO!=null){
                            echo 
"<source src='$RUTA_VIDEO' type=\"video/mp4\">";
                        }
                        if(
$RUTA_OGG!=null){
                            echo 
"<source src='$RUTA_OGG' type=\"video/ogg\">";
                        }
                        if(
$RUTA_WEBM!=null){
                            echo 
"<source src='$RUTA_WEBM' type=\"video/webm\">";
                        }
                        echo 
"Your browser does not support the video tag.</video></center>";
                    }
                }
            } 
Para terminar debo mencionar que con los formatos OGG y WEBM no existen problemas de visualizacion solo es con el MP4.

De antemano gracias y espero que puedan ayudarme resolviendo las dudas que tengo y o proporcionando informacion que sea de mi ayuda