目前常用的流媒体协议rtmp,HLS, Http-FLV,其中hls协议的延迟太大,rtmp的协议实现比较复杂,而http-flv基于http协议,简单方便,在浏览器上实现播放也非常容易。

此文讲解rtmp客户端拉到rtmp流后,转封装成flv 格式并通过 http服务器发送给客户端的过程。

一、rtmp消息格式

rtmp协议不作过多说明。握手完成后,主要传输的是视频和声音数据,

参考 rtmp官方标准规范详细解析 https://www.cnblogs.com/chgaowei/p/5445558.html

如何理解 rtmp 通过 flv 格式推送音视频流(h264/aac),https://zhuanlan.zhihu.com/p/83454344

二、flv格式

flv格式参考:https://blog.csdn.net/weixin_42462202/article/details/88661883

用FlvAnalyzer.exe可以打开一个flv进行查看flv的内部信息, 下载地址https://github.com/zymill/flvAnalyser

软件运行如下图:

三、rtmp转flv

flv header  文件头

flv tag , 一个tag还包含tag header 和 tag body

rtmp一个消息装入一个flv tag是非常容易的事情。

发送flv时要先发送flv header,再发送flv tag

还有一个关键点, AVC sequence header & AAC sequence header ,https://blog.csdn.net/ai2000ai/article/details/85114110

这个是向解码端说明视频和音频的信息,包含分辨率和帧率,音频采样率等等。 非常重要,这个信息只在rtmp client连接到server的时候发送一次,(如果后面server发生改变也会发送),因此rtmp client要将此消息保存下来,在发送flv时,优先发送这个部分。否则会报无解码器信息。

代码示例:  https://github.com/PHZ76/rtmp  (这里实现的是rtmp服务端接受rtmp push转flv,拉流转flv与此大致过程基本相同)

更多参考:

http-flv详情及与其他流媒体协议的对比: https://www.yanxurui.cc/posts/server/2017-11-25-http-flv/

rtmp拉流转http-flv输出相关推荐

  1. LiveNVR直播拉流转码无插件直播流媒体服务如何配置视频流水印视频上面添加水印

    LiveNVR直播拉流转码流媒体无插件直播流媒体服务如何配置视频流水印 1.通道单独配置水印文字 1.1.其它更多配置 2.所有统一配置水印文字 3.RTSP/HLS/FLV/RTMP拉流Onvif流 ...

  2. 监控摄像头的拉流转发实现

    这两天一直在调试Darwin的拉流转发功能,也就是使用Darwin服务器拉取另一个RTSP服务器的视频流(比方监控摄像头)的实时视频,然后通过Darwin服务器提供的rtsp地址进行转发播放,这个简称 ...

  3. android flv 编码器,Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载)...

    Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载) 项目地址 https://github.com/979451341/RtmpSave 这个项目主要代码 ...

  4. SRS4.0源代码分析之RTMP拉流处理

    目标: 上一节分析了SRS针对推流客户端的处理逻辑,这里接下来分析针对拉流客户端的处理逻辑. SRS拉流端处理逻辑简单说就是SrsRtmpConn::do_playing()协程从SrsLiveCon ...

  5. vlc播放器或者web实现rtmp拉流

    最简单的拉流莫过于接着第三方播放器了,我们可以利用VLC播放器实现rtmp拉流. 当安装完vlc播放器并且客户端已经在推流了(推流地址为rtmp://127.0.0.1:1935/live/123), ...

  6. 单片机(STM32)的GPIO框图:─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能

    ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 GPIO框图 保护电路: 高压保护--上拉二极管 低压保护--下拉二极管 输 ...

  7. js调用vlc_vlc播放器或者web实现rtmp拉流

    最简单的拉流莫过于接着第三方播放器了,我们可以利用VLC播放器实现rtmp拉流. 当安装完vlc播放器并且客户端已经在推流了(推流地址为rtmp://127.0.0.1:1935/live/123), ...

  8. PLDroidPlayer 是 Pili 直播 SDK 的安卓播放器。支持所有直播常用的格式,如:RTMP、HLS、FLV。拥有优秀的功能和特性,如:首屏秒开、追帧优化、丰富的数据和状态回调、硬解软解

    PLDroidPlayer 是 Pili 直播 SDK 的安卓播放器.支持所有直播常用的格式,如:RTMP.HLS.FLV.拥有优秀的功能和特性,如:首屏秒开.追帧优化.丰富的数据和状态回调.硬解软解 ...

  9. 什么是 RTMP拉流,如何使用它来提高你的直播质量

    直播已成为日常沟通中不可或缺的一部分.随着技术的进步,它开启了新的可能性,如多人从不同地点流式传输到同一广播.使用chroma key 加实时虚拟背景或通过 RTMP 拉流将一个广播嵌入到另一个广播中 ...

最新文章

  1. HoloLens开发手记 - 语音输入 Voice input
  2. java(x ) 3的值_java中,设x=2,则表达式 (x++)*3的值是多少 设x=2则表达式(x+
  3. Android的全屏活动?
  4. 为了孩子上名校,他们发论文给子女署名,Nature发文报道韩国学术不当行为
  5. 关于 Workbench中 pk,nn,uq,bin,un,zf,ai 的解释
  6. 破解简单的Android签名检查
  7. win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊
  8. sqoop2操作流程
  9. C/C++ 类型内存占用详解
  10. 关于抢红包的_关于抢红包现象的材料作文
  11. 学吉他该如何科学背谱?
  12. Ieee access投稿---之科研处女作
  13. 顺序表的初始化、插入、删除、查找
  14. jqGrid排序的两种实现方式
  15. MES系统对企业而言是必须的吗?
  16. 成为一个15K的软件测试工程师的基本要求
  17. ArcGIS模型构建器前提条件的应用(附省界县点练习数据)
  18. 利用c++编写一个养成类小游戏
  19. 解决连通性问题的利器:并查集
  20. 在python中读取和写入CSV文件(你真的会吗?)

热门文章

  1. mybatis 传入参数及其 foreach collection的三种用法
  2. WIN7远程桌面连接方法
  3. 李宏毅 2020 ML Homework 1: Linear Regression
  4. 锂电池 保护板方案 中颖SH367309方案 原理图 PCB 源代码 锂电池电池管理系统 中颖SH367309保护板方案
  5. html5文字特效教程视频,IT兄弟连 HTML5教程 CSS3属性特效 自定义文字
  6. 离散余弦变换(含源码)
  7. 感谢这4个自学网站,坚持了一个月,让我从月薪3000涨到10000
  8. php curl 模拟referer,php使用curl伪造来源ip和refer的方法
  9. sql注入及用PrepareStatement就不用担心sql注入了吗?
  10. iOS开发之TextView常用属性