8

aws-android-sdk-1.4.3/samples/S3_SimpleDB_SNS_SQS_DemoAmazon (Amazon Simple Storage Service) に保存されているファイルをプレビューするために使用 します。コードを調べてみると、ファイルにアクセスするためにこれを使用していることがわかりました。

com.amazonaws.demo.s3.S3.getDataForObject (line 130)

 public static String getDataForObject( String bucketName, String objectName ) {
        return read( getInstance().getObject( bucketName, objectName ).getObjectContent() );
    }


protected static String read( InputStream stream ) {
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream( 8196 );
        byte[] buffer = new byte[1024];
        int length = 0;
        while ( ( length = stream.read( buffer ) ) > 0 ) {
            baos.write( buffer, 0, length );
        }

        return baos.toString();
    }
    catch ( Exception exception ) {
        return exception.getMessage();

    }
}

}

さて、私はこのメソッドをByteArrayOutputStream代わりに返すように変更し、簡単にStringorに変換しましたBitmap(適用してByteArrayOutputStream.toByteArray()から を使用 BitmapFactory.decodeByteArray(byte[] data, int offset, int length, Options opts))。

したがって、テキストファイルと画像で動作します。私の問題は、ビデオにアクセスしようとするときです。だから、私の質問は次のとおりです。

1.上記の方法を使用して、 ByteArrayOutputStream( ByteArrayOutputStream.toString())からビデオを取得し、 VideoViewor を使用してMediaPlayeror アプローチで再生するにはどうすればよいですか?

2. Amazon に保存されているプレビュー動画の問題に対する他の解決策を知っている人はいますか? sdk(彼らはIOSURLを使ってファイルにアクセスしていると聞きました...)

PS: ファイルの URL を指定してブラウザーで開くことは意味がありません。この URL はしばらくすると期限切れになるためです。

4

3 に答える 3

9

最初に、バケットの名前とaws-android-sdk-1.4.3/samples/S3_SimpleDB_SNS_SQS_Demo開きたいオブジェクト (完全なガイドについては を参照) を指定してから、オブジェクトへの URL を取得する必要があります。

    AWSCredentials myCredentials = new BasicAWSCredentials("YOUR_AMAZON_ACCESS_KEY_ID", "YOUR_AMAZON_SECRET_KEY_ID");
    AmazonS3 s3client = new AmazonS3Client(myCredentials);
    GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName);
    URL objectURL = s3client.generatePresignedUrl(request);

次に、取得した URL を指定して、ビデオ ビューでビデオを再生します。

    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    mediaCtrl = new MediaController(this);
    mediaCtrl.setMediaPlayer(videoView);
    videoView.setMediaController(mediaCtrl);
    Uri clip = Uri.parse(objectURL.toString());
    videoView.setVideoURI(clip);
    videoView.requestFocus();
    videoView.start();

@CommonsWareに感謝したい

  • 私を案内してくれましたREST API(私が使用したコードでさえ、ドキュメントをaws-sdk読んでREST API助けてくれたものであり、Amazonオブジェクトを要求する他の方法も示しています)

  • 使用するように指示するgeneratePresignedUrl()

  • ビデオを再生するためのコードも、彼の資料から着想を得ています。

于 2012-11-09T10:14:14.607 に答える
3

1.上記の方法を使用して、ByteArrayOutputStream (ByteArrayOutputStream.toString()) からビデオを取得し、VideoView で再生するか、MediaPlayer またはアプローチを使用して再生するにはどうすればよいですか?

ContentProviderとを介してバイト配列を公開することで、動作させることができるかもしれませopenFile()ん。これは、この方法でカスタムを使用してファイルを提供する方法を示すサンプル プロジェクトです。InputStream

ただし、メディア サブシステムはややこしいので、これがうまく機能するかどうかはわかりません。

2. Amazon に保存されているプレビュー動画の問題に対する他の解決策を知っている人はいますか? (IOS用のSDKでは、URLを使用してファイルにアクセスしていると聞きました...)

最後に確認したところ、S3 には、ビデオへの URL を生成するために使用できる REST API がありました。その URL をMediaPlayerorに渡しますVideoView

ファイルの URL を指定してブラウザで開くことは意味がありません。この URL はしばらくすると期限切れになるからです。

しかし、「a wile [sic]」の長さはあなたがコントロールします。24時間くらいにしてください。

于 2012-11-08T11:22:09.260 に答える