3717
- 收藏
- 点赞
- 分享
- 举报
RTMP协议-关于视频捕捉的协议
(一)概述
握手完成后下面要按照RTMP协议进行数据的传输,跟一般的协议相同一般数据流都由下以下的数据结构,[协议头][协议数据][消息数据]。
(二)协议头
协议头主要有两个结构组成
type : 2 (主要跟协议数据有关)
channel : 6 (参考red5表示channel)
(三)协议数据
type协议数据
0(Protocol newstrean) timestamp : 24 (时间戳)bodysize : 24 (消息体长度)
datatype : 8 (数据类型)
stream_id : 32 (数据流标识)
1(Protocol samestream) timestamp : 24(时间戳)bodysize : 24 (消息体长度)
datatype : 8 (数据类型)
2(Protocol timechage) timestamp : 24(时间戳)
3(Protocol continue) 没有多余的数据
(四)datatype的类型
主要参考red5中的类型说明
类型说明
CHUNK_SIZE(0×01)
UNKNOW(0×02)
BYTES_READ(0×03)
PING(0×04)
SERVER_BANDWIDTH(0×05) 服务器带宽(4字节)125000(125k)
CLIENT_BANDWIDTH(0×06) 客户端带宽(服务器端:5字节,最后一个应该是channel的值,客户端:4个字节)125000(125k)
UNKNOW(0×07)
AUDIO_DATA(0×08) 音频流数据
VIDEO_DATA(0×09) 视频流数据一般是一帧
UNKNOW(0×0A)
UNKNOW(0×0B)
UNKNOW(0×0C)
UNKNOW(0×0D)
UNKNOW(0×0E)
UNKNOW(0×0F)
UNKNOW(0×10)
UNKNOW(0×11)
METADATA(0×12)
SHARED_OBJECT(0×13)
INVOKE(0×14) 调用的脚本数据,包括一些参数和调用的AS脚本
(五)视频捕捉协议流
首先参考上一篇技术文档,完成握手并发送相关的Invoke脚本后客户端(C),服务器端Server(S)
(1)(C)Recv以下几组数据
SERVER_BANDWIDTH(0×05)<=>CLIENT_BANDWIDTH(0×06)<=>PING(0×04)
(2)(C)Recv
PING(0×04)<=>还有上一步发送的Invoke数据的回调Invoke脚本确认成功后发送下面数据
(3)(C)Send
CLIENT_BANDWIDTH(0×06)一般直接返回服务器的建议值
(4)(C)Send
Invoke脚本(创建视频流对象)
(5)(C)Recv
Invoke脚本(创建视频流对象结果)
(6)(C)Send
Invoke脚本(创建视频流对象结果)
(7)C(Send)
Invoke脚本(Netstream的方法)
(8)C(Recv)
PING(0×04)<=>Invoke脚本(Netstream的方法调用的结果)(收到两个一个是Public.Start,一个是Record.Start)
(9)C(Send)
VIDEO_DATA(0×09)
握手完成后下面要按照RTMP协议进行数据的传输,跟一般的协议相同一般数据流都由下以下的数据结构,[协议头][协议数据][消息数据]。
(二)协议头
协议头主要有两个结构组成
type : 2 (主要跟协议数据有关)
channel : 6 (参考red5表示channel)
(三)协议数据
type协议数据
0(Protocol newstrean) timestamp : 24 (时间戳)bodysize : 24 (消息体长度)
datatype : 8 (数据类型)
stream_id : 32 (数据流标识)
1(Protocol samestream) timestamp : 24(时间戳)bodysize : 24 (消息体长度)
datatype : 8 (数据类型)
2(Protocol timechage) timestamp : 24(时间戳)
3(Protocol continue) 没有多余的数据
(四)datatype的类型
主要参考red5中的类型说明
类型说明
CHUNK_SIZE(0×01)
UNKNOW(0×02)
BYTES_READ(0×03)
PING(0×04)
SERVER_BANDWIDTH(0×05) 服务器带宽(4字节)125000(125k)
CLIENT_BANDWIDTH(0×06) 客户端带宽(服务器端:5字节,最后一个应该是channel的值,客户端:4个字节)125000(125k)
UNKNOW(0×07)
AUDIO_DATA(0×08) 音频流数据
VIDEO_DATA(0×09) 视频流数据一般是一帧
UNKNOW(0×0A)
UNKNOW(0×0B)
UNKNOW(0×0C)
UNKNOW(0×0D)
UNKNOW(0×0E)
UNKNOW(0×0F)
UNKNOW(0×10)
UNKNOW(0×11)
METADATA(0×12)
SHARED_OBJECT(0×13)
INVOKE(0×14) 调用的脚本数据,包括一些参数和调用的AS脚本
(五)视频捕捉协议流
首先参考上一篇技术文档,完成握手并发送相关的Invoke脚本后客户端(C),服务器端Server(S)
(1)(C)Recv以下几组数据
SERVER_BANDWIDTH(0×05)<=>CLIENT_BANDWIDTH(0×06)<=>PING(0×04)
(2)(C)Recv
PING(0×04)<=>还有上一步发送的Invoke数据的回调Invoke脚本确认成功后发送下面数据
(3)(C)Send
CLIENT_BANDWIDTH(0×06)一般直接返回服务器的建议值
(4)(C)Send
Invoke脚本(创建视频流对象)
(5)(C)Recv
Invoke脚本(创建视频流对象结果)
(6)(C)Send
Invoke脚本(创建视频流对象结果)
(7)C(Send)
Invoke脚本(Netstream的方法)
(8)C(Recv)
PING(0×04)<=>Invoke脚本(Netstream的方法调用的结果)(收到两个一个是Public.Start,一个是Record.Start)
(9)C(Send)
VIDEO_DATA(0×09)
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
32015-11-24 10:18:58
-
02014-12-03 17:50:31
-
262014-10-17 13:24:22
-
2015-04-29 11:37:38
-
2018-12-07 11:29:58
-
2015-05-25 21:11:58
-
2018-12-27 14:56:08
-
2020-12-04 15:42:06
-
2020-12-29 16:15:15
-
2020-10-06 12:22:50
-
2020-07-30 15:55:33
-
2015-04-28 14:43:42
-
12013-03-22 09:42:41
-
2020-10-06 12:06:08
-
2010-01-21 11:12:15
-
2014-04-30 12:33:54
-
2018-12-05 16:05:30
-
2013-11-21 21:41:54
-
2014-07-09 15:35:52
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
103403 yolov8 裁剪
-
5想要咨询一下Sil9135+Sil9134形成的一个显示链路.
-
5Hi3516移植USB摄像头的SDK,如何修改Makefile?
-
5ss928从SD卡启动
-
50HI3516CV610调试raw+ahd,均使用2lane mipi
-
5HI3516DV500接收不到FPGA传过来的BT1120数据,时钟和配置都没问题VI就是检测不到数据~
-
5请教一下,Hi3516DV500 ebaina的SDK有没有实现RTSP推流?
-
5SS928的emmc有32GB,bootargs设置使用16GB,但是为啥能用的只有rootfs的大小
-
33SS928怎样烧写ubuntu系统
-
10ToolPlatform下载rootfs提示网络失败
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认