以下方法应该从android系统中的本地视频文件中获取缩略图。
问题是创建的文件记录了0个字节。
似乎文件流的记录存在一些我无法理解的问题,在仅执行0字节文件的方法执行期间,我没有出现任何错误。
当我尝试检索“内存流”的长度时,即使该特定文件的长度为1319,我仍然得到的结果为0。
private void GenerateThumbImage()
{
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.SetDataSource(directory + "snake.mp4");
Bitmap bitmapData = retriever.GetFrameAtTime(15);
if (bitmapData != null)
{
FileStream fileStream = new FileStream(directory + "snake.jpeg", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, 4096, true);
MemoryStream stream = new MemoryStream();
bitmapData.Compress(Bitmap.CompressFormat.Jpeg,85, stream);
stream.CopyTo(fileStream);
}
}
答案 0 :(得分:0)
您要在bitMapData压缩之前声明流。这是一个Android工作示例
public ImageSource GenerateThumbImage(string url, long usecond)
{
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.SetDataSource(url, new Dictionary<string, string>());
Bitmap bitmap = retriever.GetFrameAtTime(usecond);
if (bitmap != null)
{
MemoryStream stream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
byte[] bitmapData = stream.ToArray();
return ImageSource.FromStream(() => new MemoryStream(bitmapData));
}
return null;
}