2

私は単純な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' ]);
?>
4

3 に答える 3

4

URLRequest.dataドキュメントでは、ByteArrayを直接使用するオプションを指定しています。

ここ、

urlLoader.data = _baFlvEncoder.byteArray;

URLVariables次に、送信されたデータをとしてエンコードすることに依存するオブジェクトをスキップできます。これはapplication/x-www-form-urlencoded、バイナリデータにはあまり適していません(適切に処理されたとしても、そうでない場合があります)。

于 2012-08-14T02:40:51.710 に答える
3

多分あなたは生データ入力のためにこれを使うべきです:

$input = file_get_contents("php://input");
于 2012-08-14T02:50:34.937 に答える
0

私は数日間同様の問題に悩まされ、base64エンコード/デコードのみがこれを解決することをリリースしました。同様の症状はほんの数バイトになります。したがって、これを解決するにはbase64の「方向」に移動します。

于 2012-09-01T15:18:48.627 に答える