2017-02-07 12 views
1

携帯電話のストレージにソースが見つかると、Glideを使ってビデオサムネイルを作成することができました。しかし、ローカルファイルの代わりにリモートURLにアクセスすると、コードは機能しません。Glideを使ってAndroidでリモートソースのビデオサムネイルを作成する方法

 Glide.with(mContext) 
       .load(message) 
       .into(mVideoThumbnailView); 

私はmp4ファイルにアクセスしようとしています。アドバイスありがとうございます。

+0

「メッセージ」はどのようなタイプですか?有効なリソースを指していることを確認してください。 – azizbekian

答えて

1

私はGlideで試していません。しかし、このissueに記載されているように、を使用して画像を取得するには、カスタムモデルとDataFetcherを作成する必要があります。

しかし、私のために働いた回避策は、MediaMetadataRetrieverを使用しています。サムネイルビットマップをファイルをダウンロードせずに取得した方法は次のとおりです。

public static Bitmap retriveVideoFrameFromVideo(String videoPath) 
       throws Throwable 
     { 
      Bitmap bitmap = null; 
      MediaMetadataRetriever mediaMetadataRetriever = null; 
      try 
      { 
       mediaMetadataRetriever = new MediaMetadataRetriever(); 
       if (Build.VERSION.SDK_INT >= 14) 
        mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>()); 
        else 
         mediaMetadataRetriever.setDataSource(videoPath); 
      // mediaMetadataRetriever.setDataSource(videoPath); 
       bitmap = mediaMetadataRetriever.getFrameAtTime(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
       throw new Throwable(
         "Exception in retriveVideoFrameFromVideo(String videoPath)" 
           + e.getMessage()); 

      } 
      finally 
      { 
       if (mediaMetadataRetriever != null) 
       { 
        mediaMetadataRetriever.release(); 
       } 
      } 
      return bitmap; 
     } 
+0

こんにちは@OBX、これはどこで正確に使用しますか?アクティビティ(それは重要ですか?)私は現在、これをアダプターに適用しています。このコードを使用して、java.lang.IllegalArgumentExceptionを受け取りました。 02-07 18:23:13.150 12240-12240/com.woppi.myapp W/System.err:android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java :73) 02-07 18:23:13.150 12240-12240/com.woppi.myapp W/System.err:com.woppi.myapp.RoomMessageAdapter.retrieveVideoFrameFromVideo(RoomMessageAdapter.java:635) ' – Woppi

+0

許可の問題は、これも同様に試してみてください。http://stackoverflow.com/questions/27566480/mediametadataretereever-setdatasource-throws-illegalargumentexceptionそしてあなたがすでに権限を追加しているかどうかを知ることができます。より高いAPIを使用している場合、バージョンをダウングレードし、実行時の許可なく試してください。 – OBX

+0

私は 'INTERNET、WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE、RECORD_AUDIO、CAMERA'を持っています。APIレベル21を使用していますが、アプリは4.2.2 Jellybean以上をサポートする必要があります。 – Woppi

関連する問題