3

ビデオを.netのWebサービスに送信する必要があります。ビデオが約2MBまたは6o7秒で問題ない場合は、文字列base64エンコードを送信しますが、それより重い場合は、Bas.encode[byte[]を実行するとメモリ不足エラーが発生します。 );

これは私のコードです:

videoPath = getRealPathFromURI(fileUri);
                            File tmpFile = new File(videoPath);
                            in = null;
                            in = new BufferedInputStream(new FileInputStream(tmpFile));
                            bos = new ByteArrayOutputStream();
                            long tamano = tmpFile.length();
                            int iTamano = (int) tamano;
                            byte[] b = new byte[iTamano];
                            int bytesRead;
                            while ((bytesRead = in.read(b)) != -1) {
                                bos.write(b, 0, bytesRead);
                            }
                            ficheroAEnviar = bos.toByteArray();
try {
                    strBase64 = Base64.encode(ficheroAEnviar);

                }
                catch (Exception e) {

                    correcto = false;
                    e.printStackTrace();
                }

この行でクラッシュします:strBase64 = Base64.encode(ficheroAEnviar);

4

1 に答える 1

4

あなたはこのようにすることはできません。メモリーはAndroidの問題です。ビデオをいくつかの部分に分割し、各部分をエンコードして送信し(WSなどで送信したいと思います)、宛先で再結合する必要があります。

于 2012-08-02T10:32:12.383 に答える