十大免费网站免费下载软件,春蕾科技 网站建设,wordpress免费主题网站,巴中市住房和城乡建设局官方网站【关键字】
视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime 【背景和问题】
上篇中介绍了从视频提取音频并保存到pcm文件功能#xff0c;请参考文档#xff1a;https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid0101591351254…【关键字】
视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime 【背景和问题】
上篇中介绍了从视频提取音频并保存到pcm文件功能请参考文档https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid0101591351254000314解码步骤使用的是普通模式进行解码测试过程中发现此模式从视频提取音频到保存文件整体流程耗时较长可能十几秒视频读取需要一两分钟主要普通模式解码过程比较耗时本文针对此问题提供解决方案。 【解决方案】
关于视频编解码开发指导文档中除了普通模式编解码还有管道模式编解码经测试使用管道模式进行解码会快很多解码具体开发步骤见文档即可将上篇文章“从视频提取音频并保存到pcm文件功能”中解码开发步骤替换成使用管道模式进行解码即可使用Extractor从视频提取音频数据和将音频数据写入pcm文件过程与原来一致。 【音频播放类接口getAudioTime说明】
1、关于getAudioTime接口官方文档解释为“获取播放时间戳信息”通过此接口返回的TimeStamp对象中包含getNanoTimestamp信息此数据并非表示音频开始播放到当前播放的时长如果一个10s音频播放到5s时并非返回5s对应的纳秒数也并非跟系统时间有关返回的数据无法转换成系统时间戳
此接口通常使用方式为若想要获取当前播放的时间信息可以在播放开始时通过getAudioTime接口记录时间然后在播放过程中再调用一次记录时间两次时间相减再转换成秒单位的数据即可获取正确播放时间
由于此接口比较耗费性能若音频较长需要调用接口次数比较多建议直接通过java原生方法在播放开始和过程中分别记录时间然后相减获取播放时长此方式性能更优
2、调用getAudioTime接口是需要调用getStage方法检查播放状态需要在播放过程中调用才可正确返回数据。 【视频转音频过程中解码如何判断是否完成】
在framebuffer方法中若bufferInfo.bufferType为4表示解码完成可通过此数据判断是否完成解码。 【参考文档】 实现从视频提取音频并保存到pcm文件功能https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid0101591351254000314 视频解码文档管道模式 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-codec-0000000000031749#section151781927112310 媒体提取开发指导 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-video-extractor-0000000000044202 音频播放开发指导 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-audio-playback-0000000000031734 getAudioTime API接口文档 https://developer.harmonyos.com/cn/docs/documentation/doc-references/audiorenderer-0000001054358892#ZH-CN_TOPIC_0000001054358892__getAudioTime--