2014-03-31 126 views
0

我试图从Android上传视频到Facebook的应用程序。 AS3的Facebook的API已经载影片
facebookMobile.uploadVideo(method:String, callback:Function = null, params:* = null)
params:* (default = null) — An object containing the title, description, fileName (including extension), and video (FileReference or ByteArray)将mp4视频转换为bytearray as3

我正在使用记录的CameraUI的视频和我得到回文件位置下面的方法。根据api我需要通过使用fileReferancebyteArray这个文件,因为我已经有了文件的位置,我不想要任何类型的浏览功能。我在创建byteArray时遇到了问题(以前从未使用过)。我从脸书获得353错误:you must select a video file

贝娄是我创造的ByteArray

public function UICompleteHandler(event:MediaEvent):void 
    { 
     trace("Welcome back from the camera"); 

     var media:MediaPromise = event.data; 
     trace("file info "+media.file.url + " - " + media.relativePath + " - " + media.mediaType); 
     filePath = media.file.url; 

     trace("Object encoding is: " + inBytes.objectEncoding + "\n\n" + "order file: \n\n"); 
     readFileIntoByteArray(filePath, inBytes); 
     trace("length 1: "+inBytes.length); 
     trace("position 1: "+inBytes.position); 
     inBytes.position = 0; // reset position to beginning 
     //inBytes.uncompress(CompressionAlgorithm.DEFLATE); 

     //trace("position 2: "+inBytes.position); 
     //inBytes.position = 0; //reset position to beginning 
     trace (inBytes); 

    } 
    private function readFileIntoByteArray(fileName:String, data:ByteArray):void 
    { 
     var inFile:File = new File(fileName); 
     trace ("file to byte array "+ inFile.url); 
     trace ("file name var : "+fileName); 

     inStream.open(inFile , FileMode.READ); 
     inStream.readBytes(data); 
     inStream.close();   
    } 

和视频上传代码尝试:

public function handleUpload(ev:TouchEvent) 
    { 
     trace ("posting to facebook - FileName: "+ accessCamera.fileName + " - FilePath: " + accessCamera.filePath); 
     var params:Object ={ 
      title:'test upload on FB api', 
      description:'test upload on FB api', 
      fileName: accessCamera.fileName, 
      video: accessCamera.inBytes 
     } 

     //trace ("params.video = "+params.video); 

     FacebookMobile.uploadVideo('me/videos', onComplete, params); 
    } 

    private function onComplete(result:Object, fail:Object):void { 
     trace("facebook post onComplete called"); 
     if (result) 
     { 
      //result.id is id of post that was just posted 
      trace ("great"); 
     } 
     else if (fail) 
     { 
      trace("post Failed"); 
      trace('code: '+fail.error.code); 
      trace('message: '+fail.error.message); 
      trace('type: '+fail.error.type); 
     } 
    } 

回答

1

无需将其转换为ByteArrayFile是一个AIR-only类,旨在允许您直接访问文件系统(就像您已经在做的那样)。由于File延伸了FileReference,您可以简单地传递您已有的File对象。