[经典]RTMP流媒体技术零基础学习方法

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
 

[置顶] [总结]RTMP流媒体技术零基础学习方法



目录(?)[+]

本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。


0.背景知识

本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:RTMP是非常重要的。

使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。

目前使用RTMP技术的电视台有如下几个:

CNTV部分点播内容

中国教育电视台1直播(rtmp://pub1.guoshi.com/live/newcetv1)[失效]

中国教育电视台3直播(rtmp://pub1.guoshi.com/live/newcetv3)[失效]

香港电视台直播(rtmp://live.hkstv.hk.lxdns.com/live/hks)

北广传媒移动电视直播(rtmp://www.bj-mobiletv.com:8000/live/live1)

中石化网络电视台直播(rtmp://wowza.sinopectv.cn:1935/live/sinopec)[暂时无法访问]

东莞电视台(rtmp://ftv.sun0769.com/dgrtv1/mp4:b1)

绍兴新闻综合(rtmp://www.scbtv.cn/live/new)

使用RTMP技术社交直播平台:

六间房
9158
新浪秀场

可以这样概括一下:凡是想实现“无插件直播”的流媒体系统,都会使用RTMP。

1.RTMP在Flash流媒体系统中的使用

RTMP被Adobe开发出来,就是用于在其Flash平台的流媒体系统之间传递数据的。因此想要了解RTMP,需要首先了解Flash流媒体系统。

最简单的Flash流媒体系统由两部分组成:

客户端:Flash Player(一般只有这一种)

注:支持RTMP的基于Flash的播放器除了可以自己开发之外,还有现成的,比如说jwplayerflowplayer等等。

服务器端:

1.Flash Media Server(FMS):Adobe官方的流媒体服务器。毕竟是商业服务器,其性能应该是最强的,配置是最简单的,但是价格不菲,推荐作为入门学习使用。个人下载使用是不用花钱的。服务器端编程使用ActionScript语言。

官网:http://www.adobe.com/cn/products/adobe-media-server-family.html

可参考教程:

1.FMS开发者向导。这个教程讲的是FMS开发技术,是网友翻译的中文版,学习起来比较方便。这里有英文原版,内容更全:Flash Media Server Delevoper's Guide

注:FMS开发技术方面使用到了ActionScript,可以先找相关教程做一个初步的了解。主要使用Flash CSx进行开发。

2.FMS技术指南。这个教程主要是讲述FMS配置的,第2部分涉及到集群,负载均衡等内容,挺高端的。

2.Red5:开源流媒体服务器,基于Java的。曾经使用过,感觉也还算比较方便,如果商业应用,又买不起昂贵的FMS的话,使用也不错。服务器端编程使用Java语言。

官网:http://www.red5.org/

3.还有其他服务器,但目前我还没接触过



2.RTMPdump(libRTMP)的使用

这一章就要开始学习RTMP协议的处理了。

可以使用RTMPdump(libRTMP)进行学习。这是一个C++的开源工程。主要作用是下载RTMP流媒体。首先可以了解一下其使用方法:RTMPdump 使用说明

官网:http://rtmpdump.mplayerhq.hu/


3.RTMPdump(libRTMP)源代码分析

这一章开始学习RTMPdump(libRTMP)的源代码。学习它之前需要有Socket编程的基础。

首先学习《RTMP协议规范

中文翻译版:http://download.csdn.net/detail/leixiaohua1020/6563059

英文原版:http://www.adobe.com/cn/devnet/rtmp.html

我对其部分内容做的简单分析:RTMP规范简单分析

其次从协议规范中,总结出RTMP协议建立连接的流程:RTMP流媒体播放过程

然后,下载一个windows下可以编译通过的RTMPdump工程(这个工程是很难得!):rtmpdump vs2005版本

(当然,linux下会方便很多,因为RTMPdump就是在linux下开发完成的)

最后,通过调试工程,就可以基本掌握RTMP协议了,我写了一些分析RTMPdump(libRTMP)源代码的文章:

RTMPdump 源代码分析 1: main()函数
RTMPDump(libRTMP)源代码分析 2:解析RTMP地址——RTMP_ParseURL()
RTMPdump(libRTMP) 源代码分析 3: AMF编码
RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)
RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
RTMPdump(libRTMP) 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)
RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)

4.相关应用

libRTMP作用还是很大的,除了可以保存RTMP流媒体之外,还可以发送RTMP流媒体等等。它可以整合到FFMPEG中,下面几篇文章简述了它的应用:

libRTMP使用说明
在FFMPEG中使用libRTMP的经验

(以后更新其他方面......)

电视台的直播流 # cap = cv2.VideoCapture("rtmp://58.200.131.2:1935/livetv/hunantv") #湖南台 # cap = cv2.VideoCapture("rtmp://58.200.131.2:1935/livetv/dftv") #东方台 # cap = cv2.VideoCapture("rtmp://58.200.131.2:1935/livetv/gdtv") #广东台 # cap = cv2.VideoCapture("rtmp://58.200.131 阅读详情

相关推荐

流媒体协议-RTMP简介

与rtsp 不同,RTSP(Real-Time Streaming Protocol)是一个控制协议,负责控制媒体流的传输,但不传输媒体数据本身。RTSP 可以通过 TCP 或 UDP 传输 RTP 包来传输音视频数据。 RTMP(Real-Time Messaging Protocol)是一个综合性的协议,不仅可以传输音视频数据,还可以传输信令控制指令。RTMP 使用 TCP 作为传输协议,可以直接在 TCP 连接上传输音视频数据,也可以传输控制指令,实现了音视频流的实时传输和控制

xiaoshuaijinniu的博客 4521

h264视频流可用于rtmp和rtsp推流测试

1、本视频流为h264编码,流来源为海康摄像头。 2、本视频播放时长为3分03秒,几乎可以满足所有测试需要。 3、本视频以原有电影为素材进行剪辑加工而成。 4、本视频分辨率为:1920*1080,帧率为25。 5、本视频下载仅需1积分,比同网其他资源所需几十积分的资源那是相当地有良心。 6、欢迎大家积极下载,积极评论。

一文搞懂 RTMP直播流媒体协议

RTMP 协议传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把 Message 划分为带有 Message ID 的 Chunk,每个 Chunk 可能是一个单独的 Message,也可能是 Message 的一部分,在接收端会根据 Chunk 中包含的 data 的长度,message id 和 message 的长度把 chunk 还原成完整的 Message,从而实现信息的收发。服务器发送命令消息中的 “结果” (_result), 通知客户端连接的状态。

lizhengze1117的博客 1万+

流媒体开源项目

1 FFmpeg:全球领先的多媒体框架 http://ffmpeg.org/ 2 VLC:开源的跨平台多媒体播放器及框架 http://www.videolan.org/ 3 live555:开源流媒体服务项目 http://www.live555.com/ 4 EasyDarwin: 企业级的流媒体平台框架 https://github.com/EasyDa

DaveBobo的博客 2430

[总结]RTMP流媒体技术零基础学习方法

本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。 0.背景知识 本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了...

897371388 941

部分RTMP协议的电视台直播地址

rtmp://219.232.160.120/livestream/c64024e7cd451ac19613345704f985fa        深圳卫视高清-高清画质         rtmp://219.232.160.120/livestream/3c7b0e7ffa2bb75c01aa7635cb7cc12f        深圳卫视高清-标准画质         rtmp:/

裴裴的Android学习和分享 3万+

流媒体协议之RTMP详解

RTMP(Real Time Messaging Protocol)实时消息传输协议是Adobe公司提出得一种媒体流传输协议,其提供了一个双向得通道消息服务,意图在通信端之间传递带有时间信息得视频、音频和数据消息流,其通过对不同类型得消息分配不同得优先级,进而在网传能力限制下确定各种消息得传输次序。

技术控的笔记 17万+

RTMP流媒体播放过程

本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程。 注意:RTMP中的逻辑结构 RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可

雷霄骅(leixiaohua1020)的专栏 8万+

RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术

RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 7329

FFmpeg发送流媒体的命令(UDP,RTP,RTMP

这两天研究了FFmpeg发送流媒体的命令,在此简单记录一下以作备忘。1.      UDP1.1. 发送H.264裸流至组播地址(注:组播地址指的范围是224.0.0.0—239.255.255.255)。下面命令实现了发送H.264裸流“chunwan.h264”至地址udp://233.233.233.223:6666ffmpeg -re -i chunwan.h264 -vcodec cop

雷霄骅(leixiaohua1020)的专栏 19万+

基于RTMP协议流媒体直播的整体解决方案

随着自媒体的短视频和直播带货的流行,再加上这几年疫情的肆虐,直接把实体店给干趴下了。叫苦连天的实体店老板们,原来是不懂这些东西,而被割了韭菜。当然这只是开个玩笑,哈哈。他们没必要懂技术。那么就开始我们今天要讲的内容。一套完整的直播推拉流的解决方案到此就结束了。对于后端云里雾里的同学,可以系统学习下Linux操作系统的使用。对于native层代码看得头晕的同学,建议先学习cpp、jni以及音视频编解码的相关内容。最后,祝大家五一节快乐!在放松休息的同时,不忘提升自己的技术硬实力。

跟着哆啦学Android 1129

创建高性能RTMP流媒体服务器:nginx-rtmp配置指南

随着互联网技术的飞速发展,流媒体服务已成为构建现代在线视频平台的核心技术之一。RTMP(Real-Time Messaging Protocol)是一种广泛应用于视频直播和实时通讯的协议,它允许音视频数据以较低的延迟实时传输。nginx-rtmp模块是nginx的一个第三方扩展模块,它将nginx从一个高效的Web服务器转变为一个强大的RTMP媒体服务器,支持实时流媒体传输协议。该模块让nginx能够处理实时音视频流,包括接收推流、分发流媒体到不同的客户端以及记录直播内容。

weixin_35414260的博客 1457

RTMP流媒体技术零基础学习方法

原文链接: http://blog.csdn.net/leixiaohua1020/article/details/15814587 本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。 本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。 看完本文的话应该会对RTMP流媒体技术

北雨南萍 2420
上一篇: FFMPEG中最关键的结构体之间的关系
下一篇: 【经典】视音频编解码技术零基础学习方法
chenchong_219
博客等级 码龄17年 382粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值