
音视频开发
文章平均质量分 77
HTJOY
这个作者很懒,什么都没留下…
展开
-
音频编码格式介绍-AAC
1. 概述AAC(Advanced Audio Coding),被认为是MP3的继任者,相对MP3有更高的压缩效率。由Fraunhofer IIS、杜比实验室、AT&T、Sony(索尼)等公司共同开发。1997年由MPEG正式宣布为国际标准,为MPEG-2标准的第7部分-ISO/IEC 13818-7:1997。MPEG-4标准中,AAC音频流部分在ISO/IEC 14496-3 (subpart 4)中规定。AAC被iPhone、iTunes以及大多数便携式设备所使用。AAC有很多的选项转载 2022-02-18 10:20:59 · 4306 阅读 · 0 评论 -
WebRTC丢包重传简介
目录概述NACK问题一、数据包真丢了,会一直重传吗?问题二、重传次数不到最大限制次数,就会一直等待吗?问题三、当大量丢包时,会全部重传吗?NACK改进总结概述WebRTC之所以可以优秀的完成音视频通讯,和它本身的丢包重传机制是密不可分的,今天我们就来看看其中的奥秘。本文以M76版本展开,如果你的工程是基于其他版本开发的,也可以参考。NACK说到丢包重传就不得不提到NACK技术,那么NACK是什么呢。它的全称是Negative Acknowledgment Pa转载 2021-12-13 09:59:07 · 1114 阅读 · 0 评论 -
webrtc资料
WebRTC视频JitterBuffer详解_流媒体巅峰之路-优快云博客原创 2021-09-27 10:51:33 · 212 阅读 · 0 评论 -
webrtc的编译和调试
源码下载(整个库非常大,包含三方库一起大概30多G):原创 2021-07-13 22:48:46 · 998 阅读 · 0 评论 -
webrtc的源码流程
一篇介绍webrtc的h264编码,从视频采集,编码,rtp传输,包解析,解码,渲染流程的文章:https://blog.piasy.com/2019/01/01/WebRTC-RTP-Mux-Demux/index.html#webrtc-h264-%E8%A7%A3%E5%8C%85%E5%AE%9E%E7%8E%B01. 整体模块流程见下图。发送流程 a. 先通过encoder编码得到要发送的视频帧; b. RtpSender模块对要发送的视频帧进行打包; c. 打包后的pa...原创 2021-07-05 19:18:25 · 455 阅读 · 0 评论 -
rtmp协议
simple rtmp server:https://github.com/winlinvip/simple-rtmp-serverRTMP协议:播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。1. RTMP连接都是以握手作为开始的;2. 建立连接阶段用于建立客户端与服务器之间的“网络连接”;3. 建立流阶段用于建立客户端与服务器之间的“网络流”;4. 播放阶段用于传输视音频数据。在一条TCP 连接中,包含着几条Message St..原创 2021-05-12 17:08:38 · 241 阅读 · 0 评论 -
WebRTC通信流程
WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能。而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能。无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自己的对聊框架,都需要遵循以下执行流程:上述序列中,WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实现。Stun服务器可以用google提供的实现stun协议的测试服务器(s.转载 2021-04-23 10:12:56 · 649 阅读 · 0 评论 -
PCM音频编码
概述PCM脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。语音编码原理有一定电子基础的都知道传感器采集音频信号是模拟量,而我们实际传输过程中使用的是数字量。而这就涉及到模拟转数字的过程。而模拟信号数字化必须经过三个过程,即抽样、量化和编码,以实现话音数字化的脉冲编码调制(PCM,Pulse.转载 2020-05-13 09:48:43 · 2077 阅读 · 0 评论 -
视频编码中的pts
在ISO/IEC13818-1中制定90k Hz 的时钟,如果编码帧频是30,那么时间戳间隔就该是90000 / 30 = 3000。从dts/pts转化为秒公式: pts /90000从dts/pts转化为微秒公式: pts * 1000000/90000 = pts * 100 /9pts 是33 bits 值,需要用 long long(linux) 或 __int64(windo...转载 2020-01-02 09:45:21 · 1255 阅读 · 0 评论 -
H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
版权声明:本文为优快云博主「Chucky_Hu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/Romantic_Energy/article/details/50508332本文需要读者对H.264流有一定的了解才可以理解2种格式差异。首先要理解的是没有标准的H.264基本流...转载 2019-11-26 15:11:44 · 8004 阅读 · 0 评论 -
播放器的基本架构
不考虑网络下载模块,从播放链路来说,一般包含最基本的五个模块,每个模块是一个单独的线程;以及四个帧数据队列;如果有其他需求,可以在这个基本框架上再扩展,比如在解码后,渲染前加入一些滤镜处理模块等; 5个模块线程: 1. 解复用模块: 负责媒体文件的解复用,从文件读出视频帧和音频帧数据,分别放入两个队列; 2. 视频解码模块: 负责视频帧解码,从视频帧队列读入...原创 2019-01-11 15:06:38 · 1546 阅读 · 0 评论 -
yuv420转为cv::Mat
函数1:读取avi格式的视频文件,转换成Yuv420格式,并写入文件void WriteYuv() { cv::VideoCapture vc; bool flag = vc.open("S1000008.avi"); if (!flag) { printf("avi file open error \n"); ...转载 2018-12-11 15:39:14 · 2381 阅读 · 0 评论 -
yuv420p转jpg图片
yuv420p转jpg图片int yuv420p_to_jpeg(const char * filename, const char* pdata,int image_width,int image_height, int quality){ struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr...转载 2018-12-11 15:32:48 · 2097 阅读 · 1 评论 -
ffmpeg的av_read_frame杂记
av_read_frame在ffmpeg内部包含两个层次的读:1. 解封装的读,根据封装协议如flv或者mp4,调用相关注册接口(AVInputFormat结构的回调函数), 其返回的是一个AVPacket结构;2. 解协议的读,根据网络传输协议如http或rtmp或ykstream,调用相关注册接口(URLProtocol),其返还的是一个size大小的buf;3. 这两层读的中间,...原创 2018-09-25 16:37:48 · 2221 阅读 · 0 评论 -
mediacodec配置h265解码
参考ffmpeg解析vps,sps和pps:在ffmpeg中可以参考下面的函数是如何解析extradata得到vps,sps,pps的:hevc_decode_extradata()AVCodecContext中 extradata 的 parsealigned(8) class HEVCDecoderConfigurationRecord{ unsigned int(8) config...原创 2018-06-22 17:55:14 · 4571 阅读 · 0 评论 -
FFmpeg常用基本命令
使用ffprobe查看视频信息 ./ffprobe -show_frames bale.flv ./ffprobe -show_packets bale.flv ./ffmpeg -i bale.flv 拼接音频 ffmpeg -i concat:"1.flv|2.flv" -c copy 3.flv1.分离视频音频流ffmpeg -i input_file -vc...转载 2018-05-09 17:00:18 · 213 阅读 · 0 评论 -
编译ffmpeg的so库,不带版本号后缀
asking questions leads always to finding answers. that's why i was successful, digging into the make files helped. do the following:run your configurationfind "config.mak"changeSLIBNAME_WITH_VERSION=$...转载 2018-05-09 16:59:24 · 2818 阅读 · 0 评论 -
编译opencv的android版本(with ffmpeg)
1. 下载opencv的源码2. 在opencv的根目录下新建目录mybuild3. 进入mybuild目录,执行命令:cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D CUDA_FAST_MATH=ON \ -D WITH_CUFFT=ON \ -D ...原创 2018-05-09 16:17:44 · 3210 阅读 · 7 评论