3 Jacob_job

尚未进行身份认证

我要认证

音视频软件开发

等级
TA的排名 5w+

rtmp数据封装四-音频(AAC&G711)

前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分成chunk的形式发送的。其实一帧媒体数据在拆分成chunk之前还需要进行必要的头部信息封装,本文介绍rtmp协议中AAC/G.711音频数据的头部信息封装。第一个byte包含音频的编码参数:1-4bit: audioCodeId5-6bit: 采样率 00 5.5KHZ, 01 11...

2018-08-21 00:18:08

rtmp数据封装三-视频(H264&H265)

前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分成chunk的形式发送的。其实一帧媒体数据在拆分成chunk之前还需要进行必要的头部信息封装,本文介绍rtmp协议中H.264/H.265视频数据的头部信息封装。H.264 rtmp头部信息封装SPS PPSAVCDecoderConfigurationRecordframe t...

2018-08-21 00:16:34

简易的个人博客网站-Hexo安装、部署到github和coding

以前我都是把技术博客发布在CSDN,后来突然有个想法就是自己买个域名并搭建个人博客网站。可以搭在自己的云服务器上,或者可以直接在github或者coding创建项目,把代码部署上去一样可以在上面搭建网站。我的个人博客网站是用hexo生成的,hexo用于搭建个人博客网站很方便,下面简单介绍一下方法。这里随便推广一下我的个人博客网站,可以看看效果 灵动的指针hexo安装apt-get in...

2018-08-20 10:36:55

rtmp数据封装二-AMF

简介rtmp协议在传输script数据onMetaData时使用AMF(Action Message Format)格式封装。AMF_TYPE对应的编号:0 : AMF_NUMBER1 : AMF_BOOLEAN,2 : AMF_STRING,3 : AMF_OBJECT,4 : AMF_MOVIECLIP,5 : AMF_NULL,6 : AMF_UNDEFINED,...

2018-08-20 09:54:09

rtmp数据封装一-块(chunk)

简介由于一帧音视频数据有时候会很大,比如几十M甚至更大。但是为了方便在网络上传输,需要把数据拆分成一个个较小的块,这里称之为消息块(Chunk)。常见的是每块大小为4000 byte左右。Chunk的结构如下:[Chunk Basic Header][Chunk Message Header][Extended TimeStamp][Chunk Data][Chunk B...

2018-08-20 09:53:20

rtmp信令交互过程分析七-音视频数据(video audio data)

概述在传输完元数据onMetaData之后就开始传输音视频数据了,如视频是H.264编码,第一帧视频帧需要是SPS和PPS,后面才是I帧和P帧。如果是发布端向服务器推流,方向是C->S,如果是播放器向服务器拉流,方向是S->C。音视频数据包的封装后面的文章在详谈,这里只是讲信令交互。举例发布端向服务器推流 C->SVideo DataRTMP ...

2018-08-20 09:52:13

rtmp信令交互过程分析六-元数据(onMetaData)

概述在publish或者play之后就是开始传输媒体数据了,媒体数据分为3种,script脚本数据、video视频数据、audio音频数据。首先需要传输的是脚本数据onMetaData,也称为元数据。onMetaData主要描述音视频的编码格式的相关参数。如果是发布端向服务器推流,则onMetaData的方向是C->S,如果是播放器向服务器拉流,则onMetaData的方向是S-&g...

2018-08-20 09:51:17

rtmp信令交互过程分析五-播放(play)

概述连接成功之后由客户端选择publish还是play,这里讲的是play。1、C->S : createStream2、S->C : _result服务端对客户端createStream请求的反馈3、C->S : getStreamLength、play、Set Buffer LengthgetStreamLength:获取stream的时间长度pl...

2018-08-20 09:50:09

rtmp信令交互过程分析四-发布(publish)

概述连接成功之后由客户端选择publish还是play,这里讲的是publish。1、C->S : releaseStream、FCPublish、createStreamreleaseStream:释放stream,这一步的作用是通知服务端释放对应的stream,以便接下来重新创建stream。FCPublishcreateStream2、S->C : _re...

2018-08-20 09:49:25

rtmp信令交互过程分析三-连接(connect)

概述握手之后就是连接(connect),由客户端发起,服务端响应,connect指定的app。1、C->S : connectapp:需要connect的app名称flashVertcUrlfpadcapabilitiesaudioCodecsvideoCodecsvideoFunction2、S->C : Window Acknowledgement...

2018-08-20 09:48:27

rtmp信令交互过程分析二-握手(Handshake)

rtmp信令第一步是握手(Handshake),握手有Simple Handshake和Complex Handshake,Simple Handshake为简单握手,不需要使用加密算法校验,Complex Handshake为复杂握手,需要使用openssl的算法校验。一、Simple Handshake概述1) C0 1 byte,表示客户端RTMP的版本号。2) C1...

2018-08-20 09:47:22

rtmp信令交互过程分析一-概述

后续会写一系列关于rtmp的文章,这是第一篇信令交互的概述。使用wireshark抓包分析rtmp推流和拉流过程的信令,大致如下:通用部分箭头>>>表示C->S,箭头<<<表示S->C>>> Handshake C0+C1<&a

2018-08-20 09:46:11

ubuntu 64bit安装32bit兼容库

64位系统需要安装一些32位的库才能兼容32位的应用更新源dpkg --add-architecture i386apt-get update 安装apt-get install libc6:i386 apt-get install libncurses5:i386 apt-get install libstdc++6:i386apt-get install libz1:...

2018-05-08 22:44:42

ubuntu server 14.04和18.04挂载vmware共享文件夹

之前试过在Linux中mount -t cifs的方式挂载windows的共享目录,但这是通过网络挂载,有时拔掉网线或者IP冲突时经常掉线,有时编译大文件频繁读写时也出问题。所以就使用直接挂载vmware共享文件夹的方式,比较稳定。1、ubuntu server 14.04先在虚拟机Ubuntu系统关机的情况下配置好共享文件夹,比如我配置的文件夹是linux_shared。然后开启Ub...

2018-05-08 22:42:30

ubuntu server安装vmware-tools

ubuntu server服务器版和ubuntu desktop 桌面版安装vmware-tools最大的区别就是没有图形界面,需要通过命令行挂载才能找到vmware-tools的安装包。1、挂载拷贝安装包mkdir /mnt/vmtoolsmount -t iso9660 /dev/cdrom /mnt/vmtoolscp /mnt/vmtools/VMwareTools-10.1...

2018-05-08 22:40:07

linux socket使用ARP判断局域网指定IP是否被占用

项目中需要判断局域网内某个IP是否被占用,一开始想到的是ping命令,但是ping只能判断同一网段的IP。后来发现linux使用arping命令可以判断,如使用arping -D -f -w 1 x.x.x.x但是对于经过裁剪的嵌入式linux,busybox中不一定还保留arping命令,而且C代码中调用shell命令需要临时创建一个子进程来执行,频繁操作会浪费资源。于是决定参考busybo...

2018-05-03 17:48:09

Makefile C与C++混编的简单写法

用了很久的Linux,感觉还是对Makefile不够熟悉,经常为一个复杂一点的项目的Makefile折腾半天。现在对Makefile的基本写法做一下总结,方便以后查阅。这里用我近期写的一个Makefile做讲解,是一个C与C++混编的项目。并附上完整的Makefile内容。目录结构是:+--include/+--include/librtmp+--liblog/+--libr...

2018-05-03 16:59:37

使用gsoap编译生成onvif源码C/C++文件

1、gsoap工具编译与安装需要先安装opensslsudo apt-get install openssl sudo apt-get install libssl-dev自行下载gsoap源码并解压,进入gsoap源码下./configmakesudo make install 安装成功后可以使用wsdl2h 和soapcpp2命令 wsdl2h 命令用于生成头文...

2018-03-05 16:31:15

https server的ssl协议实现

1、简介HTTPS协议简单的说就是经过ssl加密的HTTP协议,本文不介绍https server中http信令的实现,只介绍ssl的实现。2、需要的库使用openssl实现ssl,需要编译openssl生成libssl.a和libcrypto.a3、API的使用需要包含的头文件#include <openssl/ssl.h>初始化,cert_pa...

2018-03-05 15:56:17

web无插件解码播放H264/H265(WebAssembly解码HTML5播放)

我之前写过一篇《web无插件解码播放H264/H265(js解码HTML5播放)》,与本文的项目意义基本一致,不同的是实现方案有一定差异。之前介绍的是纯JS解码,本文介绍WebAssembly解码。本项目已经用于实际产品之中,亲测可用。项目描述:视频传输使用websocket协议,ipc后端推流使用C语言编程,web前端收流使用js语言。视频解码库使用WebAssembly实现...

2018-03-04 14:42:55

查看更多

勋章 我的勋章
    暂无奖章