Googleフォトアプリで、ビデオを選択しようとしていますが、そのビデオはデバイスにキャッシュされていません。Googleフォトアプリからビデオを取得する
ACTION_GET_CONTENTインテントを使用してオプションダイアログを起動し、Googleフォトアプリを選択します。
ローカルビデオを選択するときに、このフォームでUriを返します。
内容://メディア/外部/ビデオ/メディア/ 6708
そして、それから、私は、実際のファイルの場所を取得し、そこから続行するコンテンツプロバイダに問い合わせを。ファイルの場所は次のようになります。
/ストレージ/エミュレート/ 0 /のWhatsApp /メディア/のWhatsApp ビデオ/ VID-20131102-WA0000.mp4
さて、私はオンラインビデオ、すなわちを選択した場合:上のビデオは利用できません私はまだ、デバイス、及びその使用するためにダウンロードする必要があり、返されたURIは次のようになります。
内容://com.google.android.apps.photos.content/1/ https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d
これで、このビデオへの実際のリンクを取得するのに役立つ、文書化されたContentProviderはありません。クエリを実行しても、DISPLAY_NAME列とSIZE列以外は何も返しません。
DISPLAY_NAMEはvideo.mpeg(別の動画に同じ表示名)は、おそらく私の実際のファイルのサイズを伝えます
SIZEが含まれています。
私は様々な記事をチェックし、私は、コンテンツ・プロバイダを介してビデオのためのInputStreamを取得する必要があり、ファイルを保存し、ファイルに働くだろうと思いました。しかし、画像ファイルを選ぶことはうまくいきますが、ビデオではうまくいきません。
ストリームをファイルにコピーするには、このコードが必要です。
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));
最後に、一時ファイルに書き込みます。ファイルは作成されますが、正しくフォーマットされていないようです。 VLCはファイルを再生しますが、全体を通して最初のフレームのみを表示します。
上記のURIの最後の部分からURLを取得してブラウザで表示しようとすると、GIFファイルがダウンロードされます。私はそれが問題だと思っています。しかし、私はどのようにmpegビデオのフォーマットを取得するのか分からない。
誰もが同じことを経験していますか?
大変ありがとうございました。これは大変助けになりました! 関連する質問と回答があります: http://stackoverflow.com/q/30572261/3309883 –