1

I'm curious if someone can point me to (or just describe) how, given that an Android application has an extremely limited memory space to play with (I think it's around 20 megs), a video player can load and play videos that are an order of magnitude or more larger in size. Is the app loading the video in some sort of chunks?

I ask because I have an app that has some video assets embedded and the app has grown to be about 80 megs and is just a total monster for compiling and debugging (without the assets the app would only be about 2 megs), and I was thinking that I should just remove the assets and have them download on the side and sit on the sdcard, rather than within the apk, but I'm worried that loading them and playing them at run time will bust through the app's memory allotment, and was hoping someone can shed some light on what my options are.

TIA

4

3 に答える 3

1

この制限を回避できるネイティブレイヤーにゲームを取り込むことができます。私が書いたブログを見てくださいhttp://jnispot.blogspot.com/2012/10/jnindk-arrays-bitmaps-and-games-oh-my.html

于 2012-10-19T20:25:33.317 に答える
1

はい、管理可能なチャンクでビデオをバッファリングします。動画のサイズがGBであっても、標準の動画再生APIを使用してメモリの壁にぶつかることはありません。setVideoURIファイルへの、またはファイルを指すための標準の呼び出しを使用でき、setVideoPathそこからファイルを処理します。MediaPlayerあなたが使用していない場合、同じことが一般的に機能しますVideoView

ただし、apkの外部でビデオをダウンロードすることは依然として良い考えです。インクリメンタルアップグレードごとに新しい80MBファイルをダウンロードする必要がある場合は、代わりにアンインストールするだけです。自分でホストしたくない場合は、補足のapkオプションを調べてください。

于 2012-10-19T21:10:17.007 に答える
0

これがビデオアプリの機能であるかどうかはわかりませんが、ネイティブコードでmallocステートメントを使用することで、実際には通常の制限を超えてメモリを増やすことができます。これにより、通常の最大約20MBがバイパスされます。

私はこれをAndroidデバイスでの暗号化にのみ使用しました。この場合、AES暗号化では、大きな暗号化ファイル(約10MBのファイルでも)を処理するときにかなりの量のメモリが必要になります。

于 2012-10-19T20:23:00.443 に答える