androidstudio ffmpeg 音频转换

这篇具有很好参考价值的文章主要介绍了androidstudio ffmpeg 音频转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求描述

项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解决方案是从帖子上别的大佬那里扒下来的有关vad的代码,拿来用的,其中有两个问题,一个就是人声检测十分敏感,基本有点杂音,背景音都会认为是人声;第二就是关于在什么时候进行音频录制的停止的问题,这个问题我是通过添加一个计时器,超过多少秒vad一直没有检测到声音之后就默认用户是停止接话的状态.因为是自己写的,时间也是凭感觉设置的,使用起来一直处于鸡肋的状态,再加上vad识别的不精准,第二个问题就很容易放大,导致体验变得更差
最近一直在研究某产品关于语音识别技术的文档和代码,发现他们的人声检测以及停止录制的功能十分成熟,于是我决定使用他们的sdk,跳过收费(只要不填写key那些就行),因为如果写上产品的真名,他们后面可能就会限制这个功能,所以这里就不说了
以上,我的解决思路是使用产品已经成熟的语音识别里的vad组件,帮我完成人声检测的功能,然后我根据人声检测之后保存的音频进行处理,即可获取我需要的指定音频格式了

功能流程

语音唤醒–>唤醒成功–>语音识别–>语音识别自动结束–>音频转换–>获取音频路径–>供其他方法调用

所需条件

  1. 某产品的语音识别 AndroidSDK(需要魔改)
  2. 安卓版的ffmpeg(根据需求查看是否有你需要的编码器)
  3. 可能是非必要条件-不同安卓版本之间有关读写内存的权限问题

步骤

步骤1

新建androidstudio项目,把语音识别的AndroidSDK移植到新建的项目中,通过demo或自己在app中创建测试单元,检查语音唤醒以及语音识别是否能够正常使用
语音唤醒功能需要确保创建应用的时候的包名和你新建的项目的包名一致(老生常谈的问题了…)
语音识别新用户会有一定额度的免费调用次数,老用户的话也没事,只要测几次就行了,因为我们需要的是sdk中附带的vad人声检测功能

步骤2

在sdk中有关语音识别的部分中开启vad检测,赶时间可以直接问对应产品的客服或者查看文档
你需要知道

  1. vad检测打开和关闭的地方
  2. 语音识别回调的地方
    一般vad人声检测结束后会走语音识别结果的回调方法
    我的音频转换的功能就是在回调中执行的

步骤3

测试功能没有问题之后需要在项目中引入安卓版的ffmpeg
这里我因为需要使用mp3转amr的功能,而有的ffmpeg没有自带有关amr的编码器,需要自己手动添加安装,时间和技术关系我用了下面的这个ffmpeg,亲测是可用的

https://github.com/tanersener/mobile-ffmpeg

文档里有说明如何引入
安卓利用ffmpeg转码,androidstudio,java,I/O流,ffmpeg,音视频,java
关于引入安卓版的ffmpeg后如何测试的问题,可以在网上查找关于ffmpeg指令的教程
tips: 如果你复制的指令执行后报错,可以试试调换里面参数的位置 比如-i后面尽量跟着原文件路径 转换后的新文件路径

一些我使用中遇到的异常

Option sample_rate not found
这个异常主要就是参数设置的问题,建议多找一些ffmpeg指令多试几次
amr_nb not found
这个就是你当前使用的ffmpeg它不支持amr格式的转换
Output file #0 does not contain any stream
这个异常也遇到过,但是忘了怎么解决的,这个遇到的不太多
我使用的指令有两个
一个是pcm转MP3

-y -f s16be -ac 1 -ar 16.0k -acodec pcm_s16le -i 原文件路径.pcm 新文件路径.mp3

需要注意: 开头不能有空格;每个参数之间尽量保证只有一个空格;-ar后面跟着的参数不能乱填,采样率是有标准和要求的,自己写会报错

一个是MP3转amr

-i 原文件路径.mp3 -ar 8000 -ac 1 新文件路径.amr

基本就是这几步了
因为我的项目运行到真机上怎么都打印不出日志,所以遇到的一些问题都只能是一知半解的解决的
需要注意一下,有关文件写入和读取的问题 安卓不同版本直接对文件读写权限是不一样的, 越高版本限制的越严格,基本都只能在android/data/自己的包名下进行文件读写

剩下的内容就是把这个功能作为一个aar进行打包给其他的地方进行调用了
基本上已经完成了功能…

感谢以下帖子

https://blog.csdn.net/bang152101/article/details/106147264/
https://github.com/dadiyang/jave/issues/24
https://blog.csdn.net/shulianghan/article/details/121268792
https://coding.imooc.com/learn/questiondetail/246831.html
https://blog.csdn.net/xiaokangss/article/details/125539755文章来源地址https://www.toymoban.com/news/detail-700324.html

到了这里,关于androidstudio ffmpeg 音频转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

    音视频 文件 从 采样 - 处理 - 得到原始数据帧队列 - 音视频编码 - 音视频包队列 - 格式封装 的过程如下 : 封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装

    2024年04月17日
    浏览(79)
  • 音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

    最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件 例如,视频转GIF动图,该功能的实现要么使用Photoshop全家桶,要么找在线网站,或者是wps充会员,或者找其它方法

    2024年02月20日
    浏览(56)
  • 加速FFmpeg转码

    FFmpeg是多媒体处理的出色工具,默认情况下,它使用具有多线程的CPU来执行任务,这会给您的服务器带来很高的负载,并且在大多数情况下会很慢,例如使用FFmpeg将RTSP流转码成HLS流或FLV流输出时,服务器同时开启50路转码任务时,服务器资源会耗尽,输出的视频流会花屏、卡

    2023年04月09日
    浏览(32)
  • ffmpeg批量转码

    新建.bat文件 如果你的电脑有显卡,也可以使用硬件转码。转码程序链接

    2024年02月10日
    浏览(32)
  • ffmpeg 转码及多线程处理

    以下为下载ffmpeg的地址: Releases · BtbN/FFmpeg-Builds · GitHub Contribute to BtbN/FFmpeg-Builds development by creating an account on GitHub. https://github.com/BtbN/FFmpeg-Builds/releases 下载好相应的版本后,解压即可,添加bin至环境变量 (linux环境变量的添加,详见另一篇文章: 修改Linux环境变量PATH_Mast

    2023年04月09日
    浏览(27)
  • ffmpeg 硬件加速视频转码指南

    0. 系统环境 基于 Windows 下演示,Linux 下也可以适用。 所使用 ffmpeg 版本为 BtbN 编译的 win64-gpl 版(非 gpl-share),项目地址:BtbN / FFmpeg-Builds 也可以使用 gyan.dev 编译的 git-full 版,地址:gyan.dev ,都是官方推荐的。 所使用的测试片段是一段相机录制的 h264 编码的100兆码率的

    2024年01月19日
    浏览(39)
  • FFmpeg视频转码关键参数详解

    固定码率因子(CRF)是 x264 和 x265 编码器的默认质量(和码率控制)设置。取值范围是 0 到 51,这其中越低的值,结果质量越好,同时输出文件越大,越高的值意味着越高的压缩比,但可能会在值大到某个点的时候注意到明显的质量损失。 对 x264,一般取值在 18 到 28 之间,

    2024年02月11日
    浏览(41)
  • 利用第三方解码器ffmpeg让群晖DSM6.2.4版本的Video Station支持DTS视频编码和EAC3音频编码

    截至2022年5月6日,此方法可用! 本文章可以解决群晖版本6.2.4-25556 Update5(Video Station版本2.5.0-1656)在播放dts、eac3音频编码的视频时提示不支持的问题。 对于群晖6.2.3版本,Video Station版本2.4.9,网上随便搜的方法都可以使用,但是用在6.2.4未必可行。原因在于Video Station版本2

    2023年04月08日
    浏览(41)
  • FFMpeg 实现视频解码、编码、转码流程详解

    打开FFmpeg源码,会发现有一系列libavxxx的模块,这些模块很好地划分了代码的结构和分工。 libavformat,format,格式封装 libavcodec,codec,编码、解码 libavutil,util,通用音视频工具,像素、IO、时间等工具 libavfilter,filter,过滤器,可以用作音视频特效处理 libavdevice,device,设备

    2024年02月11日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包