保存视频文件到相册视频的时长为0

在Android中,将视频文件保存到相册后发现视频时长显示为0。问题源于未在ContentValues中设置MediaStore.Video.Media.DURATION。可以通过MediaMetadataRetriever获取视频时长,修复此问题。示例代码展示了如何正确保存并设置视频时长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:保存视频文件到相册视频的时长为0

 

代码:

String fileName = FileManagerUtil.getFileName(filePath);

String mimeType = MimeTypesTools.getMimeType(context, fileName);

String title = fileName;

Uri storageUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

ContentValues values = new ContentValues(7);

values.put(MediaStore.Video.Media.TITLE, title);

values.put(MediaStore.Video.Media.DISPLAY_NAME, file.getName());

values.put(MediaStore.Video.Media.DATE_MODIFIED, file.lastModified() / 1000);

values.put(MediaStore.Video.Media.MIME_TYPE, mimeType);

values.put(MediaStore.Video.Media.DATA, filePath);

values.put(MediaStore.Video.Media.SIZE, file.length());

context.getContentResolver().insert(storageUri, values);

 

问题原因:

这种方式保存到相册时没有设置 MediaStore.Video.Media.DURATION导致的,应该设置这个的值,那么视频的时长怎样获得呢:

static long getDurationOfVideo(String filePath) {

if (!FileManagerUtil.fileExist(filePath)) {

return 0;

}

if (Build.VERSION.SDK_INT >= 10) {

try {

MediaMetadataRetriever mmr = new MediaMetadataRetriever();

mmr.setDataSource(filePath);

String duration = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION);

long dur = Long.valueOf(duration);

return dur;

catch (Exception e) {

return 0;

}

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值