202022 mp3文件能够完整播放,再次编辑(放入剪映)时却少几秒

帮雪雪读故事录了一段音
借助 “录音专家” 这个软件录的
喜欢 录音专家 是因为可以转存成 视频格式,存放在 图片中,我可以借助 视频格式,放到剪映里进行编辑,加背景音乐。
但是,这次却发现,转存到图片里的视频格式,却比软件中的少几秒钟,通过剪映编辑的时候,显然是少了几秒的,这就火了!

转换思路(Change Mind):
直接在 录音专家里 转换成 mp3 格式,分享到 微信中,不错,竟然能够完整播放!
对于得到的这个mp3,我试图作为 音乐资源 添加到 剪映中进行编辑,发现,无论怎么处理,还是少几秒钟。
太怪了,明明可以播放完整啊,怎么就少几秒钟呢?!!
不能理解。

还试图把mp3 存放到电脑上借助音频剪辑工具,进行编辑,看看能不能绕过 剪映少几秒钟的问题。
用windows 自带的播放工具时,发现了一个问题,音频时长显示是 2分28秒,其实宝宝录音是 2分55秒。奇怪。音频能够播放完整,时长却变短了。
后来借助 Cooleditpro 查看,发现 前 2分28秒是有 音波的,后面虽然能播放,但是没有 音波。
显然,后面部分就无法再被编辑。

回家告诉雪雪这个事情

我可爱聪明的雪雪给妈妈想出了一个办法:
妈妈,我读完了,等一会儿你再点结束。然后转存的时候,不就可以把录的声音放完整了吗?
我的宝贝,你怎么这么可爱?

雪爸爸思考了一下,既然能够完整播放,说明文件内容没有丢,只是文件的元信息写错了。
查看文件信息,发现文件的时长就是写成了2分28秒。
借助 格式工厂,将 mp3 格式转换成: APE格式
再将APE格式转换成 mp3 格式。

这次,时长就变成 2分55秒了
音频文件也能够放入 剪映 进行 正常编辑了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将本地的 MP3 文件添加到播放列表中,你可以使用 Android 系统提供的 MediaStore API。下面是实现的大致步骤: 1. 查询本地存储中的 MP3 文件,获取它们的文件路径和文件名。 2. 向 MediaStore 中插入音频记录,记录包括文件路径、文件名、文件大小、歌曲名、歌手名、长等信息。 3. 将插入的记录的 ID 加入到播放列表中。 下面是一个简单的示例代码,演示如何将本地存储的 MP3 文件添加到播放列表中: ```java // 查询本地存储中的 MP3 文件 String[] projection = { MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE }; String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; Cursor cursor = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null); // 遍历查询结果,将记录插入到 MediaStore 中,并将 ID 加入到播放列表 if (cursor != null && cursor.moveToFirst()) { do { String filePath = cursor.getString( cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); String fileName = cursor.getString( cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); long fileSize = cursor.getLong( cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); long duration = cursor.getLong( cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); String artist = cursor.getString( cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); String title = cursor.getString( cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); ContentValues values = new ContentValues(); values.put(MediaStore.Audio.Media.DATA, filePath); values.put(MediaStore.Audio.Media.DISPLAY_NAME, fileName); values.put(MediaStore.Audio.Media.SIZE, fileSize); values.put(MediaStore.Audio.Media.DURATION, duration); values.put(MediaStore.Audio.Media.ARTIST, artist); values.put(MediaStore.Audio.Media.TITLE, title); Uri uri = getContentResolver().insert( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values); long id = ContentUris.parseId(uri); // 将 ID 加入到播放列表中 addToPlaylist(id); } while (cursor.moveToNext()); } private void addToPlaylist(long id) { // 将 ID 加入到播放列表 Uri uri = MediaStore.Audio.Playlists.Members.getContentUri( "external", playlistId); ContentValues values = new ContentValues(); values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, id); values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, playOrder++); getContentResolver().insert(uri, values); } ``` 需要注意的是,这只是一个简单的示例代码,实际应用中可能会有更多的细节需要考虑。例如,需要处理文件不存在、文件格式不正确等异常情况。另外,如果需要频繁操作播放列表,建议使用 MediaSessionCompat API,它提供了更方便的播放控制接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值