私は単純なas3+phpを使用しており、その間にFMSなどは使用していません。私はビデオ録画アプリを作成しています。フレームをキャプチャして、flvでエンコードされたバイトアレイに変換できます。しかし、サーバーに保存しようとすると問題が発生します。bytearrayをbase64エンコードを介して文字列に変換し、その文字列をサーバーに送信すると、すべて正常に機能しますが、問題は、ビデオファイルであるため、20 MB程度のようにかなり大きくなる可能性があるため、時間がかかることです。エンコードしてからアップロードするのに長い時間がかかります。さらに、通常、エンコード中にスクリプトのタイムアウトが発生します。処理を高速化するために、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' ]);
?>