什么是RTMP

RTMP(Real-Time Messaging Protocol) 是为了能在基于Adobe Flash平台的技术间实现音频、视频及数据的高性能传输而设计的,包括Adobe Flash Player和Adobe AIR。现在,RTMP已经可以被作为一项开放的标准,用于那些支持视频、音频及其他数据传输的产品或技术,只要传输的数据格式能与Adobe Flash Player适配(如swf、flv、f4v等)。

关于RTMP推流

“视频直播”是近两年互联网产业里很火的一个版块,大大小小的视频网站、APP层出不穷,而RTMP是目前市面上实现视频直播所采用的最主流的数据传输方式。常规的方式是,视频主播通过OBS等推流软件将摄像头捕捉的视频通过RTMP协议传输到指定的服务器地址,服务器将接收到的视频流以m3u8格式保存下来,客户端再通过拉取RTMP数据流的方式获取到视频数据并播放。

以上所描述大概就是一个基本的视频直播模型。那么,如果想要直接在浏览器中向RTMP服务器推流又该如何实现呢?这也并非难事,目前市面上大部分浏览器都可以很好的支持Flash,别忘了,RTMP技术正是为了Flash而生的!只需要几行简单的ActionScript代码,我们就能轻松搞定。

ActionScript & Flex

Flex是Adobe官方提供的一款ActionScript开发框架,Flex提供了丰富的API,并能将ActionScript编译成可被Flash Player执行的swf文件。在开始工作之前,我们需要在开发环境中下载并安装Flex SDK。

通过ActionScript我们可以实现通过摄像头和麦克风捕捉画面和声音并将媒体数据通过网络流推送至RTMP服务器的工作:

cam = Camera.getCamera();

ns = new NetStream(nc);

ns.attachCamera(cam);

ns.publish(name, "live");

更多细节可以参考这个简单的例子。

借助Flex SDK中的 mxmlc, ActionScript最终会被编译成swf文件并嵌入我们的网页中,我们只要通过javascript调用swf文件暴露出的接口,就能实现对推流过程的操作。

这里,提供一个现成的 Web端实现RTMP推流的Javascript库(可以通过bower或npm获得),该库遵循AMD规范,开发者可以通过Requirejs之类的AMD加载器引入自己的项目中。其原理正是上面所提到的,通过调用swf暴露出的接口,来实现对RTMP数据流的控制。这个库提供了一些基础的API,比如设置视频采集的帧率、摄像头品质、麦克风品质等,如果没有特殊的需求,只需要引入项目中编译好的swf文件及 rtmp-streamer.min.js,通过javascript提供的API就能实现基本的推流功能了。如果需要更多复杂的特性,也可以通过修改ActionScript的代码来实现,Flex提供了丰富的接口帮助你实现对摄像头及数据流的操作。更详细使用说明,请参见项目文档。

这里提供一个简单的例子:

在html文件中, 需要引入 RtmpStreamer.swf 文件:

rtmp streamer example

rtmp address:

Streamer

width="320" height="240" allowScriptAccess="sameDomain" type="application/x-shockwave-flash">

push

disconnect


Player

width="320" height="240" allowScriptAccess="sameDomain" type="application/x-shockwave-flash">

play

disconnect

在js文件里, 我用 RequireJs 将rtmp-streamer包加载进来:

require.config({

paths: {

"rtmp-streamer": "../rtmp-streamer.min"

}

});

require(["rtmp-streamer"], function (RtmpStreamer) {

var getUrl = function () {

return document.getElementById('url').value;

};

var getName = function () {

return document.getElementById('stream-name').value;

};

var streamer = new RtmpStreamer(document.getElementById('rtmp-streamer'));

var player = new RtmpStreamer(document.getElementById('rtmp-player'));

document.getElementById("play").addEventListener("click", function () {

player.play(getUrl(), getName());

});

document.getElementById("publish").addEventListener("click", function () {

streamer.publish(getUrl(), getName());

});

document.getElementById("streamer-disconnect").addEventListener("click", function () {

streamer.disconnect();

});

document.getElementById("player-disconnect").addEventListener("click", function () {

player.disconnect();

});

});

运行效果如下:

RTMP服务器

RTMP作为一种比较成熟的技术,市面上的服务端项目不论是开源的还是商业软件都有不少的选择,这里推荐一个叫Wowza的RTMP服务器,如果作为个人学习使用,下载一个免费试用版来玩一玩还是挺不错的。

采用直播云服务

直播业务对服务器的负载和网络延迟都有较高的要求, 如果不是很大规模的项目, 一般直接采用靠谱的直播云服务的比较划算, 这里我们以七牛云为例:

设置参数的方式和用OBS等工具推流时的方式类似, 地址为直播云的空间名, 数据流名称为直播流的名称加鉴权参数:

在七牛的直播云管理后台中预览推流视频:

抓rtmp推流地址_在浏览器中实现RTMP推流相关推荐

  1. 浏览器如何在f12中查看接口地址_经过浏览器中的F12中来查看接口的入参、出参和网页响应时间(新手教程)...

    打开浏览器自带的F12css 看到网络上关于这个总结的比较少,就收集了一些资料作个总结,有错的麻烦指出,谢谢!  一开始用的是谷歌浏览器,后来接触到火狐浏览器,忽然感受更加容易理解和使用,因此就更换一 ...

  2. obs多推流地址_还在为拿不到推流地址而烦恼吗?三分钟让你用上OBS进行高清直播...

    需要软件:官方直播工具(淘宝的淘宝直播或者抖音的直播伴侣皆可).电商直播助手.OBS OK准备好上述软件之后,接下来直接上干货(以淘宝直播为例): 打开小葫芦电商直播助手,选择淘宝推流码,点击打开淘宝 ...

  3. obs多推流地址_如何用一台笔记本实现直播推流功能

    第一步:准备工作 1. 背景 利用最基础的设备搭建直播系统,供老师通过自己的办公电脑或者家用电脑来进行远程教学工作.选用目前最热门的直播软件之一的OBS studio,它是一款视频直播录制软件,为用户 ...

  4. 抓rtmp推流地址_如何实现摄像机竖屏直播推流?

    随着网络直播的发展热潮,竖屏直播方式已经成为一种趋势,网络直播方式一共是两种:一种是单纯的手机直播,一种方式是摄像机通过RTMP流地址去做直播.目前市面上,基本都是使用手机拍摄的竖屏画面,那如何实现专 ...

  5. 抓rtmp推流地址_如何获取第三方推流地址?

    微吼支持第三方推流发起直播,支持的协议是Rtmp,所以发起方使用第三方推流设备或软件推流需要支持Rtmp协议,获取第三方流地址操作方法如下: 1.登录电脑网页端,进入首页,找到创建好的直播列表(由于推 ...

  6. rtmp测试地址_超详细搭建多码率测试环境(成为流媒体高手必经之路)

    0.引言 关注我的朋友,应该都知道,前面我们讲解了如何搭建srs流媒体服务器,链接如下.由于srs流媒体服务器是不支持多码率测试环境,所以不能在上次的环境上继续演示.那本篇文章就要给出一个新方案,就是 ...

  7. obs多推流地址_最热门直播工具OBS的下载和设置教程,值得一看

    随着直播行业的再度火热,各个直播平台也推出了自己的直播工具,但各自都有一些不足需要改善.今天我来教大家来下载和设置主播们最常用的直播工具OBS,以开启自己的直播路程. 大多数人都在用的OBS直播工具 ...

  8. 浏览器 输入网址 发生什么_在浏览器中输入网址时发生了什么

    浏览器 输入网址 发生什么 It's commonplace. We type a web address into the browser and hit Enter. With modern in ...

  9. obs多推流地址_(无人直播)教程利用OBS推流抖音直播电脑屏幕或PC游戏

    目前的火爆程度相信大家都有目共睹,也為部分活躍用戶提供直播功能,開通直播的方法有:①粉絲達到10000粉絲,官方會自動邀請妳開通直播權限.②加入和官方合作的工會,無需粉絲,也可以開通直播權限.開通直播 ...

最新文章

  1. 137. Leetcode 77. 组合 (回溯算法-组合问题)
  2. 数学建模资料分享群——2群
  3. 利用Fiddler模拟POST请求
  4. RabbitMq--2--安装
  5. linux update语句,MySQL 多表 update sql语句总结
  6. oracle数据库创建回滚,如何重建Oracle数据库的回滚段?
  7. c#遍历一个文件夹下的所有文件包括子文件夹【原】
  8. python max_Python max()
  9. WEB应用程序--概述
  10. ARCGIS制作三维地图教程(BIGEMAP)
  11. 基于简单协同过滤推荐算法职位推荐系统
  12. 20155313 杨瀚 《网络对抗技术》实验四 恶意代码分析
  13. 【大学生软件测试基础】飞机票预定系统 - 因果图 - 测试用例
  14. COSO企业风险管理综合框架主要关注8大层面的企业风险
  15. latex 各级标题公式
  16. 使用谷歌浏览器模拟发送http请求
  17. java实现PDF转图片功能,附实例源码!
  18. Python如何使用国内源下载模块
  19. 百度搜索去广告及高级用法
  20. 使用Postfix和Dovecot部署邮件系统

热门文章

  1. Q_D以及Q_Q指针理解
  2. 清北学堂2019.7.16
  3. 滚动轴承故障特征频率计算公式
  4. roblox虚拟世界怎么做服务器,虚拟世界roblox国际服
  5. 魔金(5)——手雷、爱神锁、牛头扣
  6. 洁净厂房洁净度等级SICOLAB
  7. NEW a Girl Friend
  8. mysql中使用CONCAT()函数,TRUNCATE()函数将小数转换成百分比
  9. 尚未解决的10个最困难的数学问题
  10. [转载] 如何抱着女友睡最舒服