音频解码及如何在Java实现

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

本人并不干这个,但是被迫下水了解了一下这个,稍微做了一下整理。再就是感觉现在网上以及ChatGPT在这方面给出的答案太水了,在此开辟一篇。无意放出代码,这里只介绍一些可能重要的点。

本来以为有了ChatGPT写这些就没有必要了,现在看起来还是不太可能。

  • 一是知识稍微旧了一点,新一点的没有,比如github上近一年更新的优秀项目100%是不会出现在解决方案中的。追求能用是不影响的,但是想找最好的有点难。
  • 二是方案缺少出处,扩展溯源困难。
  • 三是多方案比较困难,不易从中选取出最好的方案。
  • 四是幻觉太多,验证成本太高。

1. 解码

这里将解码定义为将有损/无损的(压缩)格式,比如 mp3/aac 等等转换到 pcm/wav 这种原始数据的格式的操作,供下游使用。
原始数据可以理解为 采样率 × 位深度 × 通道数 × 音频时长 的数据,不加其它处理。

2. 基本参数

来自 javax.sound.sampled.AudioFormat,先要理解记住这些才能够有良好掌控
- encoding – the audio encoding technique
- sampleRate – the number of samples per second
- sampleSizeInBits – the number of bits in each sample
- channels – the number of channels (1 for mono, 2 for stereo, and so on)
- frameSize – the number of bytes in each frame
- frameRate – the number of frames per second
- bigEndian – indicates whether the data for a single sample is stored in big-endian byte order

3. FFmpeg

A complete, cross-platform solution to record, convert and stream audio and video.

可能是最强的功能非常齐全,离线格式转换命令行就用它了,但是要注意ffmpeg在做转换时有不少参数直接默认了,使用代码转换可能有各种对不上(所以需要对参数的理解)。

常见音频编码都是确定性编码,不要自欺欺人觉得大小不一致还是正常的,得每一个byte都一样才正常。

4. javax.sound.sampled

  • 支持PCM/WAV之类的原始音频格式
  • service provider: 在实现之后能够自动发现和支持更多格式

5. hendriks73/ffsampledsp

有了1-4的铺垫之后就只需要一个优秀项目来完成剩余的工作了,目前看起来FFSampledSP是最佳选择(之一,服务器的)

FFSampledSP is an implementation of the javax.sound.sampled service provider interfaces based on FFmpeg, a complete, cross-platform solution to record, convert and stream audio and video. FFSampledSP is part of the SampledSP collection of javax.sound.sampled libraries.文章来源地址https://www.toymoban.com/news/detail-663062.html

  • 相当于引入了ffmepg的能力,在已有的库中实现得是相当好的了。
  • 解码流的时候需要调试参数,可以先校验是否能转换
    AudioInputStream fileStream = AudioSystem.getAudioInputStream(file);
    AudioFormat sourceFormat = fileStream.getFormat();
    log.info("in audio format: {}", aacFormat);
    AudioFormat targetFormat = new AudioFormat();
    AudioSystem.isConversionSupported(sourceFormat, targetFormat); // 需要为true
    
  • 引入依赖即可,并无太多需要注意的。也就是知识要得挺多,使用起来反而没什么。

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

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

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

相关文章

  • 通过libfdk_aac编解码器实现AAC音频和PCM的编解码

    了解如何使用libfdk_aac编解码器在Windows环境下实现AAC音频和PCM的编解码,通过FFmpeg进行操作,提高音频质量和压缩效率。

    2024年02月04日
    浏览(58)
  • 基于FFMpeg实现音频mp3/aac/wav解码

    编译环境:Ubuntu16.04 64位 交叉编译工具:arm-himix200-linux-gcc 我这里使用的是ffmpeg-5.1.2.tar.gz,下载地址点击下载地址。 这样,/root/ffmpeg-5.1.2/output下面就是咱们要的程序,bin目录下ffmpeg可以在开发板上运行,include下是需要的头文件,lib下是需要的静态库,share/ffmpeg/examples是一些

    2024年02月11日
    浏览(59)
  • ExoPlayer(AndroidX Media3) 扩展ffmpeg实现音频软解码

    1.Ubuntu 20.04.4 LTS 2.AndroidNDK版本r26C 3.AndroidStudio 2023.1.1(配置好SDK和JDK 17.0.10) 4.ffmpeg6.0源码 5.ExoPlayer源码,AndroidX Media release分支版本 目前官方已废弃Exopler2,代码已经迁移到AndroidX Media,下载完成设置FFMPEG_MODULE_PATH变量 1. git clone https://github.com/androidx/media 2. cd media FFMPEG_MODULE_PATH

    2024年04月12日
    浏览(123)
  • 【HarmonyOS】实现将pcm音频文件进行编码并写入文件(API6 Java)

     【】 音频编码、管道模式、createEncoder 【写在前面】 在使用API6开发HarmonyOS应用时,如何将pcm源文件进行编码并写入文件,最后生成aac文件,本文直接附上主要代码开发步骤供大家参考。 【主要功能代码】 【说明和注意事项】 1、AAC文件有两种添加头文件方式:ADIF与

    2024年02月11日
    浏览(36)
  • 【HarmonyOS】实现从视频提取音频并保存到pcm文件功能(API6 Java)

     【】 视频提取类Extractor、视频编解码、保存pcm文件 【写在前面】 在使用API6开发HarmonyOS应用时,通常会开发一些音视频媒体功能,这里介绍如何从视频中提取音频保存到pcm文件功能,生成pcm音频文件后,就可使用音频播放类AudioRenderer进行播放了。这里主要介绍从视频

    2024年02月15日
    浏览(39)
  • 【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)

    【】 视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime 【背景和问题】 上篇中介绍了从视频提取音频并保存到pcm文件功能,请参考文档:https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid=0101591351254000314,解码步骤使用的是普通模式进行解码,测试过程

    2024年02月13日
    浏览(43)
  • 【音频解码芯片】VS1503音频解码芯片的应用

    😃 因为学习播放 mp3 用到了 VS1503,故对其命令、寄存器以及编程代码进行分析。 那种杂七杂八的就不介绍了,又没啥用,介绍一堆以后连看都不看! 我真的累了啊 ~ 为了学音乐播放器居然要看这么老多东西!!!!! 啊啊啊啊啊!都搞懂了吗????? 支持的音频解码:

    2023年04月17日
    浏览(97)
  • 嵌入式操作教程_数字信号处理_音频编解码:3-6 AAC音频解码实验

    了解AAC音频格式,掌握AAC音频解码的原理,并实现将AAC格式的音频解码为PCM 音频编解码的主要对象是音乐和语音,音频的编解码格式可分为无压缩的格式、无损压缩格式、有损音乐压缩格式、有损语音压缩格式和合成算法。本实验中使用的AAC格式属于有损音乐压缩格式。音频

    2024年04月15日
    浏览(67)
  • 浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

        在浏览器中实现播放RTSP实时视频流,⼤体上有如下⼏个⽅案: ⽅案一:浏览器插件⽅案 ActiveX、NPAPI、PPAPI     ActiveX插件适用于IE浏览器,NPAPI与PPAPI插件适用于谷歌浏览器,不过这些插件都已经不被浏览器所支持。 ⽅案二:先转码再转流⽅案     ⼯作原理是架设一

    2024年01月17日
    浏览(97)
  • java base64编码和解码

    Base64 编码会将字符串编码得到一个含有 A-Za-z0-9+/ 的字符串。 base64 编码和解码网上有些地方称为 base64 加密和解密,这是不准确的。base64 是不能用来加密和解密的,它只是一种编码解码方式,不能用于加密和解密,如果你想加密和解密可以选择如 AES、RSA 等加密算法。 标准的

    2024年02月15日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包