我使用的是简单的 as3+php,中间没有 FMS 之类的。我正在制作一个视频录制应用程序,我可以捕获帧并将它们转换为 flv 编码的字节数组。但是当我尝试将其保存在服务器上时,就会出现问题。如果我通过 base64 编码将 bytearray 转换为字符串,然后将该字符串发送到服务器,一切正常,但问题是由于它是一个视频文件,它可能非常大,比如 20mb 左右,因此需要很长的时间来编码然后上传它,而且通常在编码过程中会发生脚本超时。为了让事情变得更快,我试图直接发送字节数组,但我的萤火虫网络面板显示正在发送的数据约为 20-46 字节。请告诉我我做错了什么。
//var encoded_str = Base64.encodeByteArray(_baFlvEncoder.byteArray);
//Handle Upload
/*var url_data:URLVariables = new URLVariables();
url_data.data = _baFlvEncoder.byteArray;*/
var url_ref:URLRequest = new URLRequest("save_vid.php");
url_ref.contentType = 'application/octet-stream';
url_ref.data = _baFlvEncoder.byteArray;//url_data;
url_ref.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
// just making sure the server knows we are sending data in proper format
//urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
try {
urlLoader.load( url_ref );
} catch (e:Error) {
trace(e);
}
还有我的 PHP 代码:
<?php
echo 'Data:<pre>';
print_r($_POST);
echo '</pre>';
//$decodedData= base64_decode($GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
//file_put_contents("test.flv",$decodedData);
file_put_contents("test.flv",$GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
?>