音视频开发
文章平均质量分 76
基于C语言(或C++)的音视频开发,包括纯手工写代码和移植第三方开源项目进行文章输出。
R-QWERT
这个作者很懒,什么都没留下…
展开
-
音视频知识:H.264中AnnexB和avcC的区别
当我们读取一个 H264 流的时候,一旦遇到 0 0 0 1 或者 0 0 1,我们就认为一个新的 NALU 开始了,因此,这些用来做分隔符的字节,一般也被称为 start code, 起始码。所谓防竞争字节(Emulation Prevention Bytes),就是在给 NALU 添加起始码之前,先对码流进行一次遍历,查找码流里面的存在的 0 0 0,0 0 1,0 0 2,0 0 3 的字节,然后对其进行如下修改。经过这样处理的码流,就不会再和起始码(0 0 1, 0 0 0 1)重复而发生冲突。转载 2024-10-20 20:48:10 · 26 阅读 · 0 评论 -
音视频知识:H264/H265的两种格式Annex B、AVCC(H264)/HVCC(H265)
H.264 (AVC) 和 H.265 (HEVC) 是两种常见的视频编码标准,它们都有不同的封装格式,即Annex B 和 AVCC(H264)/HVCC(H265) 封装格式。转载 2024-10-20 20:41:47 · 147 阅读 · 0 评论 -
音视频知识:MPEG-4、MPEG-4 AVC、H.264之间的联系与区别
当你在网上下载视频时,经常会看到MPEG-4、h.264等等词汇,它们之间有什么关系吗?在视频编解码技术定义方面有两大标准机构。一个是国际电信联盟 (ITU) 致力于电信应用,已经开发了用于低比特率视频电话的 H.26x 标准,其中包括 H.261、H.262、H.263 与 H.264;另一个是国际标准化组织 (ISO) 主要针对消费类应用,已经针对运动图像压缩定义了 MPEG 标准。MPEG 标准包括 MPEG1、MPEG2与 MPEG4。转载 2023-07-30 19:05:52 · 1512 阅读 · 0 评论 -
音视频知识:MPEG-4、H264、MP4、AAC之间的关系
MPEG-4标准目前分为27个部分,统称为ISO/IEC14496国际标准。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。结合上方MPEG-4简单介绍,【H.264】=【MPEG-4 Part 10】=【ISO/IEC 14496-10】=【MPEG-4 AVC】。MPEG-2标准第三部分-ISO/IEC 13818-3,Audio:音频,描述与MPEG-1音频标准反向兼容的音频编码方法。原创 2023-07-30 20:32:22 · 4213 阅读 · 0 评论 -
音视频封装demo:将h264数据和aac数据封装(mux)成TS文件(纯手工,不依赖第三方开源库)
$ make clean && make DEBUG=1$$ ./ts_mux_h264_aacUsage: ./ts_mux_h264_aac avfile/test1_856x480_24fps.h264 24 avfile/test1_44100_stereo.aac out1.ts ./ts_mux_h264_aac avfile/test2_720x480_30fps.h264 60 avfile/test2_48000_stereo.aac out2.ts ./ts_mu原创 2024-07-09 11:34:32 · 717 阅读 · 0 评论 -
音视频解封装demo:将FLV文件解封装(demux)得到文件中的H264数据和AAC数据(纯手工,不依赖第三方开源库)
目前demo解封装功能正常,所得到的H.264文件与AAC文件均可正常播放。原创 2024-07-09 11:27:31 · 724 阅读 · 0 评论 -
音视频封装demo:将h264数据和aac数据封装(mux)成FLV文件(纯手工,不依赖第三方开源库)
1、demo使用$ make clean && make DEBUG=1$$ ./flv_mux_h264_aacUsage: ./flv_mux_h264_aac avfile/test1_856x480_24fps.h264 24 avfile/test1_44100_stereo.aac out原创 2024-07-09 11:22:50 · 911 阅读 · 0 评论 -
音视频解封装demo:使用libmp4v2解封装(demux)出mp4文件中的h264视频数据和aac语音数据
本demo是使用的mp4v2来将mp4文件解封装得到h264、aac的,目前demo提供的.a静态库文件是在x86_64架构的Ubuntu16.04编译得到的,如果想在其他环境下测试demo,可以自行编译mp4v2并替换相应的库文件(libmp4v2.a)。原创 2024-07-09 11:16:48 · 721 阅读 · 0 评论 -
音视频封装demo:使用libmp4v2将h264视频数据和aac语音数据封装(mux)成mp4文件
本demo是使用的mp4v2来将h264、aac封装成mp4文件的,目前demo提供的.a静态库文件是在x86_64架构的Ubuntu16.04编译得到的,如果想在其他环境下测试demo,可以自行编译mp4v2并替换相应的库文件(libmp4v2.a)。原创 2024-07-09 11:13:30 · 1247 阅读 · 0 评论 -
音频demo:使用开源项目LibFLAC来将PCM格式数据和FLAC无损压缩格式相互进行编解码
如果是双声道,那么一个采样点就包含16bit*2channels等于4个字节,单通道就是2个字节(16bit),那么,文件大小/一个采样点的字节数=总的采样点数。另外,从日志里看,这里1帧(frame)是由4096个采样点编码而成,那么我们程序里每次读取1024个采样点传递进去并不是直接进行编码的。原创 2024-07-09 10:35:00 · 798 阅读 · 0 评论 -
音频demo:将PCM数据和opus格式相互编解码
解码:在得到编码数据时,先写4个字节标识一下这段数据的大小,方便解码得到这一帧的数据长度。的文件是chatgpt生成的demo,没有实际验证效果,编码:程序可以正常运行,但是编码出来没有播放器可以验证,,不过可以通过下面自己再解码成PCM即可验证是否正常;不好确定设置的码率是否生效。原创 2024-07-09 10:33:38 · 1148 阅读 · 2 评论 -
音频demo:将PCM数据和ogg vorbis格式相互编解码
libogg+libvorbis移植步骤源码下载地址:[https://xiph.org/downloads/](https://xiph.org/downloads/) ```bashtar xzf libogg-1.3.5.tar.gzcd libogg-1.3.5/#./configure --prefix=$PWD/_install --disable-shared --enable-static --with-pic./configure --prefix=$PWD/_instal原创 2024-07-09 10:31:04 · 955 阅读 · 0 评论 -
音频demo:将PCM数据和Speex数据进行相互编解码
##### a. libspeex移植步骤源码下载地址:[https://xiph.org/downloads/](https://xiph.org/downloads/) 或 [https://www.speex.org/downloads/](https://www.speex.org/downloads/) 或 [https://www.linuxfromscratch.org/blfs/view/svn/multimedia/speex.html](https://www.linuxfromsc原创 2024-07-08 20:22:15 · 917 阅读 · 0 评论 -
音频demo:使用开源项目libmad来将MP3数据解码出PCM数据
本demo是使用开源项目libmad来将MP3数据解码成PCM(16位有符号小字节序)数据。(环境:x86_64 Ubuntu16.04 64位)原创 2024-07-08 20:18:17 · 606 阅读 · 0 评论 -
音频demo:使用开源项目lame来将MP3数据解码出PCM数据
本demo是使用开源项目lame来将MP3数据解码成PCM数据。(环境:x86_64 Ubuntu16.04 64位)注:在下面【参考文章】中的第1篇里面提到解码出现过异常情况(hip: bitstream problem, resyncing skipping xxx bytes…),或许是因为我屏蔽了main.c中第88行的fseek(…)函数,在目前demo中提供的MP3文件以及网络下载的其他MP3文件解码均未发现此提示。原创 2024-07-08 19:51:55 · 619 阅读 · 0 评论 -
音频demo:使用开源项目lame来将PCM数据编码成MP3数据
本demo是使用开源项目lame来将PCM数据编码成MP3数据。(环境:x86_64 Ubuntu16.04 64位)原创 2024-07-08 19:47:08 · 538 阅读 · 0 评论 -
音频demo:将PCM数据与g726数据的相互转换
本demo是将使用了开源项目EasyAACEncoder里的`src/g726.cpp`(demo中的已重命名为`g726.c`)和`src/g726.h原创 2024-07-08 19:38:55 · 711 阅读 · 0 评论 -
音频demo:将PCM数据与alaw、mulaw、g711数据的相互转换
前言(截图来源:https://blog.csdn.net/u014470361/article/details/88837776)demo引用了开源代码和,然后在此基础上封装成和,并编写自己的测试程序进行验证。整个demo程序共5个源文件,可以编译到任意环境下使用(非类Unix系统可能需要简单调整中包含的头文件):b. 使用c. demo目录架构2、主要代码片段pcm_aulaw.cpcm_aulaw_wraper.cmain.c3、demo下载地址(任选一个)https:/原创 2024-07-08 19:31:59 · 883 阅读 · 0 评论 -
音频demo:使用faad2将AAC数据解码出PCM数据
本demo是使用的开源项目faad2将aac数据解码成pcm数据。原创 2024-07-08 18:07:32 · 729 阅读 · 0 评论 -
音频demo:使用fdk-aac将PCM数据编码成aac数据
本demo是使用的开源项目fdk-aac将PCM数据编码成aac音频文件。由于提供的.a静态库是在x86_64的机器上编译的,所以默认情况下仅支持该架构的主机上编译运行。$ make。原创 2024-07-08 18:00:10 · 636 阅读 · 1 评论 -
音频demo:使用faac将PCM数据编码成aac数据
本demo是使用的开源项目faac将PCM数据编码成aac音频文件。由于提供的.a静态库是在x86_64的机器上编译的,所以默认情况下仅支持该架构的主机上编译运行。$ make。原创 2024-07-08 17:11:47 · 506 阅读 · 0 评论 -
音频demo:将左右声道PCM数据合并
【代码】音频demo:将左右声道PCM数据合并。原创 2024-07-08 17:04:36 · 524 阅读 · 0 评论 -
音频demo:将PCM数据左右声道分离
注意:分离左右声道的前提是输入的PCM文件(数据)是双声道。原创 2024-07-08 17:00:07 · 334 阅读 · 0 评论 -
音频demo:使用opencore-amr、vo-amrwbenc将PCM数据与AMR-WB数据进行编解码
前言不管NB还是WB,一帧都是20ms,一秒50帧。原创 2024-07-08 16:53:29 · 603 阅读 · 0 评论 -
音频demo:使用opencore-amr将PCM数据与AMR-NB数据进行相互编解码
由于提供的.a静态库是在x86_64的机器上编译的,所以仅支持该架构的主机上编译运行。$ make如果想要在其他架构的CPU上编译运行,可以使用以下命令(脚本)编译。原创 2024-07-08 16:40:47 · 1395 阅读 · 0 评论 -
音频demo:将PCM与wav格式相互转换
使用开源项目opencore-amr中test目录下的和文件,将PCM和WAV格式的音频文件进行相互转换。(注:PCM只是WAV封装规范所支持的其中一种格式,两者不是等价关系。此程序中的wavwriter只支持PCM(format=0x0001)。原创 2024-07-08 15:40:02 · 410 阅读 · 0 评论 -
音频demo:将PCM数据封装成wav格式文件(不依赖第三方库)
编译时需要编译成32位的可执行程序(int需要指定为4字节),所以如果需要在64位主机上运行该程序,编译时就需要在Makefile上添加。选项(默认已加),如果运行的主机是32位的则将Makefile上的编译选项。原创 2024-07-08 15:15:21 · 511 阅读 · 0 评论