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

2 回复

在HarmonyOS鸿蒙Next中,使用PhotoViewPicker上传视频并通过getThumbnail获取封面时,如果返回的是空对象,可能的原因包括:

  1. 权限问题:应用可能没有获取视频文件的读取权限。确保在config.json中声明了ohos.permission.READ_MEDIA权限,并在运行时请求用户授权。

  2. 文件路径问题:getThumbnail方法需要正确的视频文件路径。如果路径错误或文件不存在,将返回空对象。确保传入的文件路径是有效的。

  3. 视频格式问题:某些视频格式可能不支持生成缩略图。确保视频文件是支持的格式,如MP4、AVI等。

  4. 系统资源问题:如果系统资源不足,可能无法生成缩略图。检查设备的内存和存储空间是否充足。

  5. API调用时机问题:确保在视频文件完全加载后再调用getThumbnail方法。如果视频文件尚未完全加载,可能导致获取缩略图失败。

  6. API版本兼容性:确保使用的API版本与设备上的HarmonyOS版本兼容。某些API可能在特定版本中存在Bug或限制。

  7. 设备硬件限制:某些低端设备可能不支持生成视频缩略图的功能,或者生成速度较慢,导致返回空对象。

检查上述可能的原因,逐一排除问题。如果问题仍然存在,可以尝试使用其他方法生成视频封面,如使用MediaMetadataRetriever类从视频中提取帧作为封面。

更多关于HarmonyOS鸿蒙Next中通过PhotoViewPicker上传的视频获取封面,用了getThumbnail但是获取到的是空对象,哪位大佬能帮忙看看啥原因的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用getThumbnail获取视频封面时返回空对象,可能原因包括:

  1. 视频文件路径不正确或文件不存在;
  2. 视频格式不支持;
  3. 权限未正确配置,确保已申请ohos.permission.READ_MEDIA权限;
  4. 设备存储空间不足或缓存问题。

建议检查路径、权限和视频格式,或尝试使用MediaMetadataRetriever类来提取视频封面。

回到顶部