2012-12-06 21 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

定義不工作...任何logcat的日誌? – Selvin

+0

@Selvin No..no LogCat – AlexAndro

+0

so bmThumbnail在提取後爲空?嘗試在AsyncTask中調用提取... – Selvin

回答

2

使用FFmpegMediaMetadataRetriever,在需要的位置提取的縮略圖:FFmpegMediaMetadataRetriever

+1

我已經試過你的庫,它的工作原理。使用描述中的示例代碼,'位圖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

其實我的視頻駐留在亞馬遜上。他們提供了這樣的API。使用上述方法,我已經成功地在大約2個小時內使用遞歸線程在Android 2.3 Emulator上生成了500多個縮略圖。這些視頻的容量超過了32GB,所以......我不知道模擬器在場景後面的工作情況,但我想我會觀察這樣的內存佔用空間,如果它下載的話。也許這是暫時的,我不知道該說些什麼,但是它確實在2.3上工作,並且在Android 4+上不起作用。 – AlexAndro

+0

以下是我的工作的一小部分,我使用Amazon API訪問視頻:http:// stackoverflow。com/questions/13287233 /如何從亞馬遜視頻播放視頻-s3-in-android-app – AlexAndro

+0

@AlexAndro我在視頻中生成拇指的文檔中唯一能找到的是MediaStore.Video.Thumbnails,它只適用於內部和外部存儲。如果您以前的解決方案滿足您的需求,我會說隨意使用它:一次下載視頻1並生成大拇指,然後再次刪除視頻:S < - 對我來說聽起來很愚蠢。 – Warpzit

0

當試圖從位於緩存文件夾中的文件製作縮略圖時,在2.3上面臨同樣的問題。設置權限標誌解決了這個問題:

videoFile.setReadable(true, false); 
+3

在2.3作品中,問題在於4+以上的在線視頻。 – AlexAndro

相關問題