gpt4 book ai didi

actionscript-3 - 如何通过 php 将 bytearray 保存在服务器上?

转载 作者:行者123 更新时间:2023-12-04 20:05:16 25 4
gpt4 key购买 nike

我使用的是简单的 as3+php,中间没有 FMS 之类的。我正在制作一个视频录制应用程序,我可以捕获帧并将它们转换为 flv 编码的字节数组。但是当我尝试将它保存在服务器上时,问题就发生了。如果我通过 base64 编码将 bytearray 转换为字符串,然后将该字符串发送到服务器,一切正常,但问题是因为它是一个视频文件,它可能非常大,比如 20mb 左右,因此它需要编码后上传需要很长时间,而且编码过程中通常会出现脚本超时。为了加快速度,我尝试直接发送 bytearray,但我的 Firebug 网络面板显示发送的数据大约为 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' ]);
?>

最佳答案

URLRequest.data documentation , 它指定直接使用 ByteArray 的选项。

这里,

urlLoader.data = _baFlvEncoder.byteArray;

然后您可以跳过 URLVariables 对象,它依赖于将您传输的数据编码为 application/x-www-form-urlencoded,这不太适合二进制数据(即使处理得当,也可能不是)。

关于actionscript-3 - 如何通过 php 将 bytearray 保存在服务器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com