- 博客(42)
- 资源 (24)
- 收藏
- 关注
原创 【RTMP协议分析与抓包实测】
RTMP基本通讯RTMP基于TCP之上传输TCP三次握手,相关文章链接,TCP三次握手流程进行握手c:s 发送c0+c1c:s 发送c2s:c 发送s0+s1+s2建立RTMP连接c:s RTMP发送connect建立连接s:c 协商滑动窗口大小s:c 设置块大小s:c result创建RTMP流C:S 释放以前的流>>创建流...
2020-09-28 17:08:52 1276
原创 【WebRTC---入门篇】(十二)WebRTC传输协议
浏览器协议栈(左图传统HTTP 右图WebRTC)RTP/SRTPRTP是未加密的数据,SRTP是加密后的数据。RTP协议对于同一帧进行分包/组包处理的时候,seq number是连续的,timestamp是同一时间戳,H264内部有起始位和结束位。RTCP/SRTCPRTCP用来控制RTP的传输,出现丢包,抖动,延迟等通过RTCP上报并且计算。RTP端口多为偶数在WebRTC需要进行NAT穿越,如果是多个窗口的话。RTP和RTCP可能....
2020-09-28 16:29:52 1566 1
原创 【斐波拉切数列第N项】
#include<iostream>using namespace std;int main(){ int f[100]; f[0] = 0, f[1] = 1; int n; cin >> n; for (int i = 2; i <= n; i++) { f[i] = f[i - 1] + f[i - 2]; } cout <<f[n] << endl; return 0;}
2020-09-28 10:05:24 81
原创 【H.264/AVC视频编解码技术】第二章【H264码流分析】
H264码流分层NAL层,视频数据网络抽象层,作用是控制二进制数据的传输,主要用于网络传输。VCL层,视频数据编码层。VCL结构关系NALUNAL Header (1B)+ RBSPH264码流中NALU sps pps IDR帧的理解概念 什么是NALU? H264码流可以分为两层,VCL层和NAL层,NAL的全称是Network abstraction layer,叫网络抽象层,它保存了H264相关的参数信息和图像信息,NAL层由多个单元NALU组成...
2020-09-26 19:35:02 413
原创 【WebRTC---入门篇】(十一)STUN协议
STUN作用:用于NAT穿越;它是典型的CS模式RFC STUN规范STUN headerSTUN Header格式5389格式最低两位必须是00事务ID 是96位魔法树单独划分出32位STUN Message TypeSTUN消息类型Transaction IDSTUN Message BodyTLV3489定义的属性Attribute的使用...
2020-09-25 13:06:31 232
原创 【WebRTC---入门篇】(十)NAT
NAT主要用于内网穿透NAT产生原因NAT的种类NAT穿越原理完全锥型:内网主机先向外发送一个请求形成IP和port地址限制锥形形成映射表五元组地址限制锥形形成映射表六元组对称型,对于不同的主机对应不同的IP和PortNAT穿越原理NAT穿越组合NAT类型检测...
2020-09-25 12:41:23 446
原创 【WebRTC---入门篇】(九)WebRTC网络基础:P2P/STUN/TURN/ICE
NAT作用:内网地址转公网地址STUN作用:中介将公网信息彼此交换TURN作用:P2P不成功的话在云端架设服务器,双方进入同一房间。可以在一起进行数据交互ICE作用:打包以上取最优,先尝试P2P。如果P2P不通再选择TURN。ICE尝试所有可能性...
2020-09-25 12:16:46 438
原创 【WebRTC---入门篇】(八)WebRTC核心之RTP Medio 媒体控制与数据统计
Receiver通过 getReceivers 可以获取一组RTCRtpReceiver对象,用于接收数据Sender通过getSenders 可以获取一组RTCRtpSender对象,用于发送数据,每个对象对应一个媒体轨RTCRtpReceiver/RTCRtpSender属性RTCRtpReceiver方法RTCRtpSender方法RTCRtpTransceiver...
2020-09-25 11:43:21 585
原创 【WebRTC---入门篇】(七)MediaStream
MediaStream方法MediaStream.addTrack( )功能:向流媒体中加入不同的轨MediaStream.removeTrack( )功能:从流媒体中移除不同的轨MediaStream.getVideoTracks( )功能:从流媒体中取出所有的视频轨MediaStream.getAudioTracks( )功能:从流媒体中取出所有的音频轨MediaStream事件MediaStream.onaddtrack功能:添加媒体轨到媒体流...
2020-09-25 11:12:49 1023
原创 【WebRTC---入门篇】(五)Web服务器原理与Nodejs搭建
Nodejs安装方式二进制安装apt/brew/yum install nodejsnodejs开发依赖库apt/brew/yum install npmWeb服务器工作原理常见服务器选型Nodejs Nginx ApacheHTTPS服务为什么要调用HTTPS服务?调用摄像头等设备,涉及到个人隐私及安全HTTPS=HTTP + TLS/SSL...
2020-09-23 19:46:22 307
原创 【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解
OpenSLES是安卓内部的音频播放和录音初始化引擎创建输出设备配置PCM格式信息初始化播放器播放和缓冲队列
2020-09-23 10:06:11 811
原创 【音视频安卓开发 (七)】安卓视频播放窗口去掉标题栏、全屏、横屏
java中的MainActivity初始化部分设置这些操作 //去掉标题栏 supportRequestWindowFeature( Window.FEATURE_NO_TITLE); //全屏,隐藏状态 getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCR.
2020-09-23 09:26:04 209
原创 【音视频安卓开发 (六)】Android GLSurfaceView播放视频
GLSurfaceView渲染RGB的数据,利用双缓冲空间机制。取出缓冲地址,将要渲染的数据copy到缓冲地址.获取SurfaceJava要做的事情SurfaceView控件设置到界面中显示SurfaceView定义一个类来实现...
2020-09-23 00:09:34 811
原创 【WebRTC---入门篇】(三)WebRTC运行机制
轨和流Track轨:音频轨和视频轨是不相交的MediaStream媒体流中包含多个音视频轨WebRTC重要类MediaStream负责添加N个轨,加入到RTCPeerConnectionRTCPeerConnection核心RTCDataChannel非音视频数据,通过RTCPeerConnection取到的RTCPeerConnection调用过程RTCPeerConnection调用时序...
2020-09-22 20:16:57 427
原创 【WebRTC---入门篇】(一)WebRTC整体架构
1.绿色部分是WebRTC核心部分(核心库)2.紫色部分是JS提供的API(应用层)整体是应用层调用核心层。核心层,第一层C++ API提供给外面的接口。最主要的是(PeerConnedtion 对等连接)。核心层,第二层 Session上下文管理层(音视频)。核心层,第三层[最重要的部分]音视频引擎 :编解码;音频缓冲BUFFER防止音频网络抖动NetEQ;回音消除;降噪;静音检测;视频引擎 :编解码;jitter buffer防止视频...
2020-09-22 19:39:52 718
原创 【音视频安卓开发 (五)】Android中获取音视频原始数据的方法
一般取得原始数据的方法使用的camera setPreviewCallback
2020-09-22 11:28:12 432
原创 【TCP丢包重传】
TCP丢包重传机制如果在网络状况最糟糕的情况下就会造成极大的延迟。或者超过2min断开连接。如果这种场景下可以采用UDP。UDP需要解决包的重新排序,丢包等问题。
2020-09-21 21:16:54 540
原创 【音视频安卓开发 (一)】AndroidStudio项目配置权限、jni库路径、ABI、Cmake
# For more information about using CMake with Android Studio, read the# documentation: https://d.android.com/studio/projects/add-native-code.html# Sets the minimum version of CMake required to build the native library.cmake_minimum_required(VERSION 3.
2020-09-20 20:07:09 405
原创 C++ 【随想录】(四)【Makefile】
编译流程预处理gcc -E test.c -o test.i test.c源码进行预处理,预处理后停止编译,预处理后文件体积会变大,且为文本格式编译gcc -S test.i -o test.s 编译预处理的文件汇编gcc -c test.s -o test.o .s转成二进制文件链接gcc test.o -o test 将多个目标文件以及所需要的库文件链接生成可执行文件的过程./test生成静态库...
2020-09-19 22:45:56 143
原创 【音视频安卓开发 (四)】AndroidStudio项目配置权限、jni库路径、ABI
创建支持ffmpeg的项目权限(版本) jni库路径 cmake参数 cmake项目配置
2020-09-13 12:43:56 201
原创 【FFMPEG源码终极解析】int av_read_frame(AVFormatContext *s, AVPacket *pkt)
int av_read_frame(AVFormatContext *s, AVPacket *pkt){ const int genpts = s->flags & AVFMT_FLAG_GENPTS; int eof = 0; int ret; AVStream *st; if (!genpts) { ret = s->internal->packet_buffer ? ff_packet.
2020-09-13 11:06:37 423 1
原创 【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)
av_packet_unref该接口使用了如下调用,该接口主要作用是清理AVPacket中的所有空间数据,清理完毕后进行初始化操作,并且将 data 与 size 置为0,方便下次调用。void av_packet_unref(AVPacket *pkt){ av_packet_free_side_data(pkt); av_buffer_unref(&pkt->buf); av_init_packet(pkt); pkt->data = NU
2020-09-13 10:24:54 2614
原创 【FFMPEG源码终极解析】 av_packet_alloc 与 av_packet_free
关于void *av_malloc(size_t size)可以参考av_mallocav_packet_alloc实际是分配AVPacket以后,调用av_init_packet对AVPacket的成员变量进行初始化赋值。AVPacket *av_packet_alloc(void){ AVPacket *pkt = av_mallocz(sizeof(AVPacket)); if (!pkt) return pkt; av_init_packet
2020-09-13 10:06:57 2280
原创 【FFMPEG源码终极解析】 av_malloc 与 av_free
void *av_malloc(size_t size){ void *ptr = NULL; //max_aloc_size Ϊ 2147483647 if (size > max_alloc_size) return NULL;#if HAVE_POSIX_MEMALIGN if (size) //OS X on SDK 10.6 has a broken posix_memalign implementation if (posix_.
2020-09-13 10:03:47 1717
原创 【开源项目】超级播放器1.0
#pragma once#include <mutex>struct AVFormatContext;struct AVPacket;struct AVCodecParameters;class XDemux{public: //打开媒体文件,或者流媒体 rtmp http rstp virtual bool Open(const char *url); //空间需要调用者释放 ,释放AVPacket对象空间,和数据空间 av_packet_free virtual .
2020-09-13 09:43:26 306
原创 ffmpeg源码下载和安卓库编译编译指令
apt-get install -y makeapt-get install -y unzipcd /rootwget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zipwget http://ffmpeg.org/releases/ffmpeg-3.4.tar.bz2unzip android-ndk-r14b-linux-x86_64.ziptar -xvf ffmpeg-3.4.tar.bz.
2020-09-10 15:16:06 427
原创 【音视频安卓开发 (三)】OpenGL ES 直接绘制YUV
EGLOpenGL与窗口对应的的适配层,针对安卓平台的适配器。surface 交互到窗口显示
2020-09-03 22:41:42 268
原创 【音视频安卓开发 (一)】
#include <jni.h>#include <string>#include <android/log.h>extern "C" JNIEXPORT jstring JNICALLJava_com_example_first_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "I am BaoHangY.
2020-09-03 22:14:36 94
原创 【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】
H264压缩比YUV格式为 YUV420 分辨率 640 x 480 帧率 15 ,比特率为 640 x480 x 1.5 x 15 x 8 =55M ,建议码流 500kpbs 。 压缩率 1 / 100声网权威推荐码流GOP所谓GOP,意思是画面组,MPEG格中的帧序列,分为I、P、B三种,如排成IBBPBBPBBPBBPBBP...样式,这种连续的帧图片组合即为GOP(画面群,GROUP OF PICTURE),是MPEG将来存取的最本基本的单位,它的排列顺序将会一直重...
2020-09-02 21:21:18 977
常用场景人声伴奏分离程序
2023-02-28
WebRTC传输速率控制
2020-10-07
1V1音视频实时互动直播系统.rar
2020-10-07
简单聊天室webserver.rar
2020-10-06
端对端1V1传输webserver.rar
2020-10-05
WebRTC音视频数据采集webserver.rar
2020-10-05
获取音视频设备信息webserver.rar
2020-10-05
QTopengl视频播放编程.rar
2020-09-23
Qt播放音频.rar
2020-09-23
TestOpenSL.rar
2020-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人