Comunidad de diseño web y desarrollo en internet online

Convertir un video a binario =)

Citar            
MensajeEscrito el 14 May 2008 12:12 am
Os dejo el codigo entero de la aplicacion AIR que estoy usando para comprobar los archivos y leerlos. Si uso FileSteam.Open, no me lee nada (por que???) o solo la primera cadena de 4 caracteres, asiq estoy usando OpenAsync... Que cada vez que abre un archivo, aunq sea el mismo, le da por leer una cantidad de bytes de éste (pero rara vez la cantidad es la total)

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="660" height="500">
<mx:Script>
<![CDATA[

/*Obtenemos el codigo binario del archivo*/
public var str:String = "";
         import flash.filesystem.FileStream;
         import flash.filesystem.File;
         import mx.controls.Alert;
         import flash.filesystem.*;
         import flash.utils.ByteArray;
         import flash.events.*;
         import flash.desktop.ClipboardFormats; 
         import mx.rpc.events.*;
         import flash.net.*;  
         private var file:File = new File();

         private function browse():void {
            var fileFilters:Array = new Array();
            fileFilters.push(new FileFilter("Videos", "*.avi;*.mpg;*.3gp;*.mp4"));
            fileFilters.push(new FileFilter("Imagenes", "*.jpg;*.gif"));            
            file.addEventListener(Event.SELECT, selectHandler);
            file.browse(fileFilters);
         }
         
         private function selectHandler(event:Event):void {
     
         var bytes:ByteArray = new ByteArray();
         var myFileStream:FileStream = null;
         myFileStream = new FileStream();
         myFileStream.addEventListener(ProgressEvent.PROGRESS, progresssHandler);
         myFileStream.addEventListener(Event.COMPLETE, completed);
         myFileStream.openAsync(file, FileMode.READ);
         myFileStream.position = 0;

         var brss:String = "";
         var brs:int = 0;

         function progresssHandler(event:Event):void 
         {
            //examinar.enabled = false;
            video.text = "Leyendo...Se paciente";
         
             if (myFileStream.bytesAvailable >= 0)
             {
             uploadProgress.setProgress(str.length, file.size);
             b1.text = "Cargados " + str.length + " de " + file.size+ "bytes";
             str += myFileStream.readMultiByte(myFileStream.bytesAvailable, File.systemCharset);
             }
         }
         function completed(event:Event):void 
         {
         b1.text = "Video cargado. ("+str.length +"/"+ file.size+"bytes)";
         startUpload.enabled = false;
         video.text = file.name;
          taaataaa.text = String(str);         
         }
      }

      ]]>
      </mx:Script>
<mx:Form width="100%" height="100%" horizontalCenter="0" backgroundColor="#5189C2" backgroundAlpha="1.0" borderColor="#FFFFFF" cornerRadius="7" alpha="0.55" color="#FFFFFF" verticalCenter="0">
   <mx:Panel title="Busca un video y subelo" 
   paddingBottom="10"
   paddingLeft="10"
   paddingRight="10"
   paddingTop="10">
   <mx:Form width="100%" height="100%">
            <mx:FormItem label="Video:" width="287" height="118">
               <mx:Text id="video" text="Ninguno"/>
            <mx:ProgressBar id="uploadProgress" label="" mode="manual"  width="201" height="9"/>
            <mx:Text id="b1" width="226.43939" height="21.969696"/>
            <mx:ControlBar horizontalAlign="right" width="235" height="44.015152">
                             <mx:Button label="Examinar" click="browse()" id="examinar" enabled="true"/>
                             <mx:Button id="startUpload" label="Subir a YouTube" click=""  enabled="false"/>
               </mx:ControlBar>
             </mx:FormItem>
     </mx:Form>
   </mx:Panel>
   <mx:FormItem label="Datos en binario" id="taaa">
      <mx:TextArea width="309" height="142" id="taaataaa"/>
   </mx:FormItem>
</mx:Form>
</mx:WindowedApplication>

Por eiprol

20 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 May 2008 01:27 am
No he usado el API de youtube, pero si otras 3 API de distintos proveedores de video (y trabajo para uno de ellos), y no me puedo creer que tengas que pasar a String un binario para hacer una subida de un archivo ... ano ser que quieran desalentar a sus clientes.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 May 2008 12:17 pm

solisarg escribió:

No he usado el API de youtube, pero si otras 3 API de distintos proveedores de video (y trabajo para uno de ellos), y no me puedo creer que tengas que pasar a String un binario para hacer una subida de un archivo ... ano ser que quieran desalentar a sus clientes.

Jorge


Casi que opto por tu segunda hipotesis.
Si envio un video por el procdimiento normal con un fileref, añadiendo en el request.data lo que viene a ser el XML, obtengo un error de la siguiente forma:

Invalid query parameters:&lt;?xml version,Filename,Upload


Lo que viene a decir que el servidor no espera ningun parametro FILENAME, asi como tampoco ningun UPLOAD... (y se ve como el XML que he pasado lo ha puesto como le ha dado la gana..)

Por eiprol

20 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 May 2008 12:42 pm
El servidor solo acepta multipart/related request, lo que viene a ser que no quiere partes diferenciadas sino un "conjunto"; Por eso me rechaza las variables XML_data, Filename, Upload.... Es decir, que la unica posibilidad que le veo es hacer el multipart manualmente, como he estado haciendo.

llegados a este punto... Alguien sabe si existe otra posibilidad de enviar un multipart/RELATED form, o por el contrario... De leer un archivo BINARIO entero sin que me de tantos problemas? Graciass

Por eiprol

20 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Oct 2013 03:11 am
Hola, estoy de vuelta por Cristal Labs, Una pregunta: es posible usar este método con el streaming de una web cam (no con un video existente) para salvar el video en el disco duro local, digamos en AIR?

Por rickzac

96 de clabLevel

1 tutorial

Genero:Masculino  

msie8
Citar            
MensajeEscrito el 25 Oct 2013 12:10 pm
Te refieres a consumir un streaming y guardarlo en el disco duro?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Oct 2013 06:44 pm
Si me refiero a usar este método para salvar el video resultante en el disco duro, he leído de otros métodos
aqui, pero me pregunto si este método podría utilizarse para no incluir RED5 u otra cosa en la ecuación, habría que ver si además de posible, es práctico y eficiente en el uso de la memoria.

Por rickzac

96 de clabLevel

1 tutorial

Genero:Masculino  

msie8
Citar            
MensajeEscrito el 25 Oct 2013 07:02 pm
Si te refieres consumir el streaming de otro, la respuesta es no, a menos que lo ripees (pero eso no con el flash player) Si te refieres a hacer loopback con tu cam, es decir guardar lo que tu mismo publicas, eso si seria posible

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Abr 2014 06:45 pm
Podes consumir el streaming de otro (con P2P), o el tuyo, usando AIR.

Ahora, con respecto a como se hace el encoding, la unica libreria que conozco es para generar flv. (Aunque si vas a trabajar con AIR, podes embeber cualquier app como ffmpeg, o Red5, o buscar algo online... para generar el video en tiempo real pasando raw data ).

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/

Por rodrigolopezpeker

61 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.