HarmonyOS鸿蒙Next中通过PhotoViewPicker上传的视频获取封面,用了getThumbnail但是获取到的是空对象,哪位大佬能帮忙看看啥原因
HarmonyOS鸿蒙Next中通过PhotoViewPicker上传的视频获取封面,用了getThumbnail但是获取到的是空对象,哪位大佬能帮忙看看啥原因
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
// 配置查询条件,使用PhotoViewPicker选择图片返回的uri进行查询
predicates.equalTo('uri', this.url);
// predicates.equalTo('cover_position', 1)
let fetchOption: photoAccessHelper.FetchOptions = {
fetchColumns: [photoAccessHelper.PhotoKeys.PHOTO_TYPE, photoAccessHelper.PhotoKeys.WIDTH,
photoAccessHelper.PhotoKeys.HEIGHT, photoAccessHelper.PhotoKeys.TITLE,
photoAccessHelper.PhotoKeys.DURATION, photoAccessHelper.PhotoKeys.COVER_POSITION],
predicates: predicates
};
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> =
await phAccessHelper.getAssets(fetchOption);
// 得到uri对应的PhotoAsset对象,读取文件的部分信息
const asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
console.info('asset displayName: ', asset.displayName);
console.info('asset uri: ', asset.uri);
console.info('asset photoType: ', asset.photoType);
console.info('asset width: ', asset.get(photoAccessHelper.PhotoKeys.WIDTH));
console.info('asset height: ', asset.get(photoAccessHelper.PhotoKeys.HEIGHT));
console.info('asset title: ' + asset.get(photoAccessHelper.PhotoKeys.TITLE));
console.info('asset title: ' + asset.get(photoAccessHelper.PhotoKeys.DURATION));
console.info('asset title: ' + asset.get(photoAccessHelper.PhotoKeys.COVER_POSITION));
// 获取缩略图
asset.getThumbnail((err, pixelMap) => {
if (err == undefined) {
TinLog.log(pixelMap)
console.info('getThumbnail successful ' + JSON.stringify(pixelMap));
} else {
console.error('getThumbnail fail', err);
}
});
更多关于HarmonyOS鸿蒙Next中通过PhotoViewPicker上传的视频获取封面,用了getThumbnail但是获取到的是空对象,哪位大佬能帮忙看看啥原因的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用PhotoViewPicker上传视频并通过getThumbnail获取封面时,如果返回的是空对象,可能的原因包括:
-
权限问题:应用可能没有获取视频文件的读取权限。确保在
config.json中声明了ohos.permission.READ_MEDIA权限,并在运行时请求用户授权。 -
文件路径问题:
getThumbnail方法需要正确的视频文件路径。如果路径错误或文件不存在,将返回空对象。确保传入的文件路径是有效的。 -
视频格式问题:某些视频格式可能不支持生成缩略图。确保视频文件是支持的格式,如MP4、AVI等。
-
系统资源问题:如果系统资源不足,可能无法生成缩略图。检查设备的内存和存储空间是否充足。
-
API调用时机问题:确保在视频文件完全加载后再调用
getThumbnail方法。如果视频文件尚未完全加载,可能导致获取缩略图失败。 -
API版本兼容性:确保使用的API版本与设备上的HarmonyOS版本兼容。某些API可能在特定版本中存在Bug或限制。
-
设备硬件限制:某些低端设备可能不支持生成视频缩略图的功能,或者生成速度较慢,导致返回空对象。
检查上述可能的原因,逐一排除问题。如果问题仍然存在,可以尝试使用其他方法生成视频封面,如使用MediaMetadataRetriever类从视频中提取帧作为封面。
更多关于HarmonyOS鸿蒙Next中通过PhotoViewPicker上传的视频获取封面,用了getThumbnail但是获取到的是空对象,哪位大佬能帮忙看看啥原因的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用getThumbnail获取视频封面时返回空对象,可能原因包括:
- 视频文件路径不正确或文件不存在;
- 视频格式不支持;
- 权限未正确配置,确保已申请
ohos.permission.READ_MEDIA权限; - 设备存储空间不足或缓存问题。
建议检查路径、权限和视频格式,或尝试使用MediaMetadataRetriever类来提取视频封面。

