質問:
アプリケーションプライベートファイルのビデオサムネイルを取得するにはどうすればよいですか?具体的には、.mpegファイルからビデオフレームを直接抽出する方法はありますか?
バックグラウンド:
- 私のアプリケーションには、ビデオを録画できるカメラが含まれています。
- 製品上の理由から、ビデオファイルは最初に作成され、アプリケーションのプライベートデータディレクトリにプライベートモードで書き込まれ、アプリケーションに対してプライベートになります。これは次を使用して行われます。-
Context#openFileOutput(fileName, Context.MODE_PRIVATE)
一般的なファイルパスは次のようになります/data/data/[package.name]/files/[fileName].mp4
。-参考までにContext.MODE_WORLD_READABLE
、代わりに使用してみContext.MODE_PRIVATE
ましたが、役に立ちませんでした。 - ビデオは最終的に(ファイルをに移動することにより
Environment#getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
)外部ストレージに保存される可能性がありますが、ビデオがアプリケーションプライベートストレージにある間はサムネイルを表示する必要があります。 ファイルがパブリックディレクトリに移動された後(MediaStoreに追加されているかどうかに関係なく)、ファイルは正常に機能しているように見えますが、ファイルが内部ストレージにある場合は
ThumbnailUtils.createVideoThumbnail(String, int)
サイレントに失敗します(戻ります)。null
- 注:ビデオファイルがアプリケーションプライベートストレージにある限り、MediaStoreに追加されません(デバイスギャラリーの画像/ビデオコンテンツプロバイダーがフィードします)。ビデオが外部ストレージに移動されたら、MediaStoreに追加します。これは製品に関連する決定であり、私はこれを回避することはできません。他のアプリに表示されずにメディアストアにビデオを追加する方法がない限り...アプリケーションプライベートストレージ内のビデオをメディアストアに追加して、アプリケーションプライベートのままにして、すべての無料の「サービス」を利用できるかどうか疑問に思います。 「サムネイル生成などのメディアストアから提供されます。