我正在开发视频应用。我正在从服务器链接流式传输视频,是否可以在不下载视频的情况下从URL生成视频缩略图。
答案 0 :(得分:74)
无需下载视频,您可以从以下代码生成缩略图:
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;
}
注意:视频存储为Intra和非Intra(图片框架)getFrameAtTime将返回最近的非Intra帧作为Bitmap。所以基本上它不会下载整个视频。
答案 1 :(得分:12)
无法通过漫游链接创建缩略图,您必须从服务器显示它。更好地上传视频中的缩略图。 使用以下代码生成缩略图
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail("picturePath", MediaStore.Video.Thumbnails.MINI_KIND);
答案 2 :(得分:5)
这是您的链接:
在我看来,服务器端应该从视频创建缩略图并通过您的服务传输缩略图视频图像。
答案 3 :(得分:5)
我尝试滑行并且有效,Glide版本4.3.1
GlideApp.with(context)
.asBitmap()
.load(FILE_URL)
.diskCacheStrategy(DiskCacheStrategy.DATA)
.into(iv_picture);
编辑:格莱德对我来说工作缓慢
最佳答案并未给出某些视频的结果,以下是我的表现
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//give YourVideoUrl below
retriever.setDataSource("YourVideoUrl", new HashMap<String, String>());
// this gets frame at 2nd second
Bitmap image = retriever.getFrameAtTime(2000000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
//use this bitmap image
答案 4 :(得分:1)
尝试使用这个
Bitmap bitmap=ThumbnailUtils.createVideoThumbnail("VIDEO FILE
ADDRESS",MediaStore.Video.Thumbnails.MINI_KIND);
答案 5 :(得分:0)
此方法会为您提供手机中所有视频文件的缩略图...随时提问
public static Bitmap[] getThumbnail(Context context){
Uri uri=MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection=new String[] { MediaStore.Video.Thumbnails._ID };
Cursor ca = context.getContentResolver().query(uri, projection, null, null, null);
Bitmap[] b=new Bitmap[ca.getCount()];
int i=0;
ca.moveToFirst();
while(i<ca.getCount()) {
int id = ca.getInt(ca.getColumnIndex(MediaStore.Video.Thumbnails._ID));
b[i++]=MediaStore.Video.Thumbnails.getThumbnail(context.getContentResolver(),id, MediaStore.Images.Thumbnails.MINI_KIND, null );
ca.moveToNext();
}
ca.close();
return b;
}
答案 6 :(得分:0)
您可以从服务器URL生成缩略图,如下所示:
RequestOptions requestOptions = new RequestOptions(); requestOptions.isMemoryCacheable(); requestOptions.override(70,70); Glide.with(context).setDefaultRequestOptions(requestOptions).load(model.getMediaURL()).into(myViewHolder.imageView);
答案 7 :(得分:0)
这是最好的解决方案
"https://img.youtube.com/vi/" + videoID + "/0.jpg"
这是您从 youtube Url 获得的 videoID。
答案 8 :(得分:-1)
我们在Android手机中获取所有视频。 http://sunilkmrnishad.blogspot.in/2017/03/read-files-apps-photos-media-from.html
exports.downloadEmployee = function (req, res) {
return queries.getDirectReports(empnum)
.then(function (users) {
...
return res.json(user);
})
.catch(function (err) { ... });
}