【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)

这篇具有很好参考价值的文章主要介绍了【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【关键字】

视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime

【背景和问题】

上篇中介绍了从视频提取音频并保存到pcm文件功能,请参考文档:https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid=0101591351254000314,解码步骤使用的是普通模式进行解码,测试过程中发现此模式从视频提取音频到保存文件整体流程耗时较长,可能十几秒视频读取需要一两分钟,主要普通模式解码过程比较耗时,本文针对此问题提供解决方案。

【解决方案】

关于视频编解码开发指导文档中,除了普通模式编解码,还有管道模式编解码,经测试,使用管道模式进行解码会快很多,解码具体开发步骤见文档即可,将上篇文章“从视频提取音频并保存到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?fid=0101591351254000314

  • 视频解码文档(管道模式):

    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--文章来源地址https://www.toymoban.com/news/detail-643215.html

到了这里,关于【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍wav音频格式🍭 😎金句分享😎:🍭子曰:父母在,不远游,游必有方。 ——《论语·里仁篇》。意思是,父母还健在时,就不要

    2024年02月06日
    浏览(39)
  • 提取视频文件里的音频和无声视频

    一、提取视频文件里的音频: 二、提取视频文件里的无声视频

    2024年02月11日
    浏览(28)
  • 使用ffmpeg从视频文件中提取音频文件、视频抽帧和切割视频

    目录 ffmpeg下载 使用ffmpeg从视频文件中提取音频文件 批量提取文件夹下多个视频文件的音频 使用ffmpeg从视频文件中提取视频帧 使用ffmpeg将按固定时长将视频切割成多个小片段 将分割得到的视频存放在新建文件夹下(这个我运行的时候好像有点问题,音频文件没有存放在新建

    2023年04月08日
    浏览(45)
  • 怎么视频提取音频文件?分享这3种简单实用的提取方法

    不知道大家平时用手机刷视频的时候,会不会被一些好听的背景音乐给吸引了呢?这些背景音乐大多都是网友们自己合成导入视频上传的,可能在许多音乐平台都不能找到音源播放。遇到这样的情况,大家一定都很苦恼吧?但其实,我们可以使用一些软件将视频中的音频提取

    2023年04月09日
    浏览(30)
  • 音视频 ffmpeg命令提取PCM数据

    提取PCM 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月09日
    浏览(44)
  • 通过python如何实现视频提取音频,并将音频转文本

    大致思路: (1)使用moviepy库中的VideoFileClip类读取视频文件,并将其转换为音频文件; (2)使用pydub库中的splitonsilence函数将音频文件分割成多个音频片段,以便进行语音识别; (3)使用SpeechRecognition库中的Recognizer类进行语音识别,并将识别结果写入文本文件中 注意: 将

    2024年02月05日
    浏览(46)
  • Java Mp3转化WAV/PCM音频数据,解码详细解析,提取每一帧数据集合/比特流/播放,一行代码!

    大家好!我是原子君 1 .因为Java本身只支持,wav,缺少mp3的解码器,所以Java自带的无法对mp3进行处理,这种 MPEG-*音频有损压缩标准编码 ,更不要说使用Java的音频格式和音频流就可以解决。 2 .所以本次转换需要使用到colorful1.1这种纯Java-Pc可跨平台的工具框架。 注意:colorful只支持

    2024年02月15日
    浏览(32)
  • 安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

    前言 之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。 模式 MODE_STATIC :这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续

    2023年04月22日
    浏览(38)
  • uniapp 将base64字符串保存为图片、Word、Excel、音频、视频等文件

     uniapp 将base64字符串保存为图片、Word、Excel、音频、视频等文件 index.vue,复制运行此代码看效果,支持Android、iOS 参考文档: 1、uniapp中拿到base64转blob对象,或base64转bytes字节数组,io操作写入字节流文件bytes 2、录音文件与Base64编码相互转换的方法 3、关于base64保存为文件 4、

    2024年02月11日
    浏览(45)
  • 腾讯云-云点播:设置视频录制的回调函数,将腾讯录制的音频文件保存到本地中

    使用场景: 我们在使用腾讯的云点播实现视频的录制功能时,需要将录制的视频保存到本地系统中时。 1、下载腾讯录制的视频文件 2、删除腾讯点播录制的视频 3、设置回调函数 回调时,腾讯响应的数据格式 {             \\\'EventGroupId\\\': 3,             \\\'EventType\\\': 311,

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包