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

相关问题