可以在Android 4及更高版本的URL上显示视频缩略图吗?

时间:2012-12-06 12:01:45

标签: android url bitmap video-thumbnails

以下两个在仿真器(2.3.3)上工作正常,但在真实设备(Nexus S 4.1.2)上没有显示缩略图的图像。我也会尝试在Android 4 Emulator上运行它。如果我为android:src设置了默认ImageView,则不再显示。{这让我觉得它被替换了,但ImageView是空的。

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 ,但我已经尝试过这个和同样的结果了。

为什么这不适用于设备以及它是如何工作的?

3 个答案:

答案 0 :(得分:2)

使用FFmpegMediaMetadataRetriever在所需位置提取缩略图:FFmpegMediaMetadataRetriever

答案 1 :(得分:0)

这在Android和Java上是不可能的,据我所知,没有下载整个视频的任何其他语言(如果我错了,请纠正我)。 YouTube和任何其他大型视频服务都提供了一个简单的API来获取视频缩略图。因此,如果视频所在的服务器不支持这种API调用,那么运气不好。

答案 2 :(得分:0)

当尝试从位于缓存文件夹中的文件制作缩略图时,在2.3上面临同样的问题。设置权限标志解决了问题:

videoFile.setReadable(true, false);