avilib库并不能直接支持G726音频的封装,源码中只支持G711A、G711U和MULAW_PCM,但查看源码可发现,avilib其实也是将G711U等音频先解码为16位linear PCM,再将PCM与H264封装为avi格式音视频,从而实现G711U等与H264的封装。因此我们可以将G726先解码为linear PCM,再用avilib接口将音视频封装为avi文件。

线性PCM是最原始的音频数据,各种格式的音频都可以由线性PCM经过一系统压缩算法而得到。 G.726是ITU-T定义的音频编码算法,有16kbps、24kbps、32kbps、40kbps四种比特率,不同的比特率区别在于码字的不同,其采样率都是8000HZ。 G.726编解码器把 128kbit/s 线性数据(64kbit/s PCM数据)压缩为 16kbit/s、24kbit/s、32kbit/s、40kbit/s 数据压缩比分别为8:1、16:3、4:1和16:5,码字分别为2、3、4和5 bits。采用越高压缩比,码率越小,质量越差。

将G726解码为PCM可利用标准的G726解码库,网上有源码可供下载,这里提供我所用的一个开源源码,https://download.csdn.net/download/zqj6893/5649281。在解码时要注意,g726_decode()的返回值应该*2再返回给上一级调用。

自己解码封装过程中所遇见的问题:

(1)解码G726后并封装为avi文件后,音视频只有视频没有声音,后来在网上看到一个可以分析avi文件格式的软件AtomicBrowser,将我的avi文件与正常的avi文件比较分析后发现,是在封装过程中没有正确设置avi文件音频的通道、频率等参数。之后检查代码发现没有是使用avilib库中的AVI_set_audio()接口进行设置所致,使用该接口并填入正确的参数后便有了声音。

(2)解决avi文件没有声音的问题后,发现虽然视频有声音,但都是噪音,猜想很可能是音频填入的参数,于是仔细检查代码,发现g726_decode()解码之后的返回值没有*2,改过后声音就正常了。

注意:海思平台的G726解码可能和标准的不一样。

参考:https://blog.csdn.net/byxdaz/article/details/83183770

https://blog.csdn.net/byxdaz/article/details/78430490

https://blog.csdn.net/li_wen01/article/details/80623580

https://blog.csdn.net/chinadragon76/article/details/22917003

标准G726音频解码和与H264视频封装为avi相关推荐

  1. ijkplayer源码分析 音频解码流程

    前言 本系列如下: 整体概述 视频渲染流程 音频播放流程 read线程流程 音频解码流程 视频解码流程 视频向音频同步 start流程和buffering缓冲策略 本文是流程分析的第四篇,分析ijkP ...

  2. 音视频封装格式、编码格式

    音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...

  3. 使用mp4v2将aac音频h264视频数据封装成mp4开发心得

    这阵子在捣鼓一个将游戏视频打包成本地可播放文件的模块.开始使用avi作为容器,弄了半天无奈avi对aac的支持实在有限,在播放时音视频时无法完美同步. 关于这点avi文档中有提到: For AAC, ...

  4. 音视频开发之旅(36) -FFmpeg +OpenSL ES实现音频解码和播放

    目录 OpenSL ES基本介绍 OpenSL ES播放音频流程 代码实现 遇到的问题 资料 收获 上一篇我们通过AudioTrack实现了FFmpeg解码后的PCM音频数据的播放,在Android上 ...

  5. iOS8系统H264视频硬件编解码说明

    iOS8系统H264视频硬件编解码说明 转载自:http://www.tallmantech.com/archives/206#more-206 公司项目原因,接触了一下视频流H264的编解码知识,之 ...

  6. iOS系统H264视频硬件编解码说明

    公司项目原因,接触了一下视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会 ...

  7. java aac rtp封装_分享一段H264视频和AAC音频的RTP封包代码

    1. H264视频的RTP封包 static int h264_parse(Track *tr, uint8_t *data, size_t len) { h264_priv *priv = tr-& ...

  8. 音视频开发(31)---H264 视频信息与压缩编码

    H264 视频信息与压缩编码 一.人与世界的交互 从远古时代人类文明诞生之日起,人类就在人类就在不断为适应环境.改造环境而艰苦斗争.其中最为基础的前提就是利用感官对外界信息的获取.利用各种感官,人类可 ...

  9. H264视频高压心得——兼容华为U8800+(硬解720P)

    原文: http://www.cnblogs.com/zyl910/archive/2011/11/22/h264_encode_u8800.html H264视频高压心得--兼容华为U8800+(硬 ...

最新文章

  1. [Linux内核]软中断与硬中断
  2. 洛谷 P3182 [HAOI2016]放棋子(错排问题)
  3. IBM为世博会服务支持建立快速反应通道
  4. JDBC修改数据库(Object类的应用)
  5. java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...
  6. mac远程redis_Linux:使用Mac远程(局域网内)访问Ubuntu主机上的Redis服务
  7. java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件
  8. Kubernetes系列之理解K8s Service的几种模式
  9. bool可以是java得标识符嘛_Java-标识符--修饰符--关键字
  10. Javascript面向对象全面剖析 —创建对象
  11. Matlab画图相关知识
  12. 第22篇 项目进度管理__计划评审技术__重点内容
  13. 计算机科学技术技术的发展趋势,计算机科学与技术的发展趋势分析
  14. java实现在线预览的功能(一)word转html
  15. 中国十大域名圈高手 看看知道几个
  16. 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
  17. 文本语音阅读器——Python简单实现
  18. 计算机视觉和机器学习_我从计算机视觉和机器学习硕士课程中学到的东西
  19. 电子线路设计技巧7:UC3843A升压电路中振荡频率和占空比的确定方法
  20. 求集合的所有非空子集

热门文章

  1. 中文书籍对《人月神话》的引用(20211105更新161-165本):大师品软件、JavaScript开发框架权威指南
  2. 电脑某个磁盘空间不够,想进行磁盘扩展
  3. WIKIBON:云2030,从IT到业务转型
  4. 【算法类原创】层次分析法的内涵
  5. 华硕无畏二合一笔记本 评测
  6. HTML标签检查工具
  7. 大一计算机导论教程总结,计算机导论实验教程--详细介绍
  8. 土建中级工程师考试用书电子版_2017年土建工程师中级职称建筑章节题百度网盘下载...
  9. PPOE简单解析和配置
  10. Linux性能优化——stress压力测试工具