2012-12-06 1 views
11

두 가지 모두 에뮬레이터 (2.3.3)에서 제대로 작동하지만 실제 장치에서는 (Nexus S과 4.1.2) 축소판 이미지가 표시되지 않습니다. 나는 또한 Android 4 Emulator에서 실행하려고합니다. ImageView에 기본값 android:src을 설정하면 더 이상 표시되지 않습니다. 이것은 나를 대체한다고 생각하게하지만 ImageView은 비어 있습니다.Android 4 이상의 URL에서 동영상 미리보기 이미지를 표시 할 수 있습니까?

public class MainActivity extends Activity { 

    ImageView img; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     img = (ImageView)findViewById(R.id.img_thumbnail); 
     new MyAsync().execute("http://commonsware.com/misc/test.mp4"); 
    } 

    //This version is still not working, but it's more readable (edited: Selvin). 
    public class MyAsync extends AsyncTask<String, Void, Bitmap>{ 

     @Override 
     protected Bitmap doInBackground(String... objectURL) { 
      //return ThumbnailUtils.createVideoThumbnail(objectURL[0], Thumbnails.MINI_KIND); 
      return ThumbnailUtils.extractThumbnail(ThumbnailUtils.createVideoThumbnail(objectURL[0], Thumbnails.MINI_KIND), 100, 100); 
     } 

     @Override 
     protected void onPostExecute(Bitmap result){ 
      img.setImageBitmap(result); 
     } 
    } 
} 

나는, 비슷한 질문 전에 요청 된 것을 Displaying video thumbnails in an Android device from a remote video URL 알고 있지만 나는 이미 이것과 같은 결과를 시도했습니다.

왜이 장치에서 작동하지 않으며 어떻게 작동합니까?

+2

작동하지 않는 정의 ... 어떤 로그 캣 로그? – Selvin

+0

@Selvin No..no LogCat – AlexAndro

+0

그래서 추출 후 bmThumbnail이 null입니까? AsyncTask에서 추출을 호출 해보십시오 ... – Selvin

답변

2

사용 FFmpegMediaMetadataRetriever가 원하는 위치에서 썸네일을 추출하기 : 설정 권한 플래그는 문제를 해결 FFmpegMediaMetadataRetriever

+1

나는 당신의 라이브러리를 시험해 보았다. 설명에서 샘플 코드를 사용하여,'Bitmap b = mmr.getFrameAtTime (2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); 'byte [] artwork = mmr.getEmbeddedPicture();는 어쨌든'null'을 반환합니다. – AlexAndro

+0

너무 느려요. 로컬 파일의 축소판을 파일 경로 또는 uri로 가져올 수있는 가능한 방법을 계속 찾고 있습니다. – Lion789

+0

이 라이브러리의 크기는 거의 25MB입니다! –

0

Android 및 Java에서는 불가능하며 전체 비디오를 다운로드하지 않고 다른 언어를 알고있는 경우 (잘못하면 나를 수정하십시오). YouTube 및 기타 대형 비디오 서비스가 비디오 엄지 손가락을 얻기위한 간단한 API를 제공하는 것이 타당한 이유입니다. 따라서 동영상이있는 서버가 이러한 종류의 API 호출을 지원하지 않으면 불운을 빕니다.

+0

사실 내 비디오는 Amazon에 있습니다. 그들은 그러한 종류의 API를 제공합니다. 위에서 설명한 방법을 사용하여 재귀 적 스레드를 사용하여 약 2 시간 만에 Android 2.3 에뮬레이터에서 500 개 이상의 미리보기 이미지를 생성하는 데 성공했습니다. 이 비디오는 32GB 이상을 지원합니다 ... 에뮬레이터가 장면 뒤에 정확히 어떻게 작동하는지 모르겠지만 다운로드 한 경우 이러한 메모리 사용 공간을 관찰 할 것입니다. 어쩌면 임시적으로 무엇을 말 할 지 모르겠다. 그러나 확실히 2.3에서 작동했고 안드로이드 4+에서는 작동하지 않는다. – AlexAndro

+0

다음은 Amazon API를 사용하여 동영상에 액세스하는 간단한 작업입니다. http : // stackoverflow.com/questions/13287233/how-to-play-a-video-from-amazon-s3-in-android-app – AlexAndro

+0

@AlexAndro 비디오에서 엄지 손가락을 생성하는 문서에서 찾을 수있는 유일한 것입니다. MediaStore.Video.Thumbnails는 내부 및 외부 저장 장치에서만 작동합니다. 당신의 이전 솔루션이 당신의 요구를 만족 시킨다면 나는 그것을 자유롭게 사용한다고 말하고 싶다. 비디오를 한 번에 하나씩 다운로드하고 엄지 손가락을 생성 한 다음 비디오를 다시 삭제한다. S <- 나는 정말로 어리 석다. – Warpzit

0

캐시 폴더에있는 파일에서 축소판을 만들려고 할 때 2.3에서 같은 문제가 발생합니다.

videoFile.setReadable(true, false); 
+3

2.3 버전의 경우 온라인 동영상의 경우 문제가 4 개 이상입니다. – AlexAndro

관련 문제