【视频直播篇一】入门篇

本文涉及的产品
视频直播,500GB 1个月
简介: 公司产品要集成视频直播,原来找的一家第三方厂家已经对接好了,后来领导说成本太高要换。拿到同行的产品来看,发现他们用的是rtmp协议的直播流。领导说要上这个,把这个任务交给我,当时都蒙圈了。这啥玩意?!从来没见过啊。领导的话就是命令,没办法,硬着头皮也要上。花了几天时间稍微入了门,在这里总结一下。首先直播中有两个非常重要的概念:推流、拉流。通俗来讲,推流指的就是我们在直播平台看到的主播那一端采集摄像头数据推送到视频流服务器。而拉流就是观众这一段使用pc、移动端播放直播视频了。
一、前言

公司产品要集成视频直播,原来找的一家第三方厂家已经对接好了,后来领导说成本太高要换。拿到同行的产品来看,发现他们用的是rtmp协议的直播流。领导说要上这个,把这个任务交给我,当时都蒙圈了。这啥玩意?!从来没见过啊。领导的话就是命令,没办法,硬着头皮也要上。
花了几天时间稍微入了门,在这里总结一下。
首先直播中有两个非常重要的概念:推流、拉流。通俗来讲,推流指的就是我们在直播平台看到的主播那一端采集摄像头数据推送到视频流服务器。而拉流就是观众这一段使用pc、移动端播放直播视频了。
这个视频直播出了一个系列,以下文章是几个播放器的使用教程

二、常见直播协议
  • RTMP: 底层基于TCP,在浏览器端依赖Flash。
  • HTTP-FLV: 基于HTTP流式IO传输FLV,依赖浏览器支持播放FLV。
  • WebSocket-FLV: 基于WebSocket传输FLV,依赖浏览器支持播放FLV。WebSocket建立在HTTP之上,建立WebSocket连接前还要先建立HTTP连接。
  • HLS: Http Live Streaming,苹果提出基于HTTP的流媒体传输协议。HTML5可以直接打开播放,兼容性最好,但延迟高。
  • RTP: 基于UDP,延迟1秒。

接下来看看这几个概念:

1. RTMP

RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。

知识拓展:https://cloud.tencent.com/developer/article/1004970

遗憾的是目前主流的浏览器最新版(除国产的一些浏览器支持外,如360浏览器)都把flash给移除了,没有flash的支撑,rtmp视频流在web端是没有办法播放的。

tips: 这里有一个网站可以测试浏览器是否支持flash
http://ssfw.njfy.gov.cn/ssfwzx/ext/flash/flash.jsp

2. FLV

FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Adobe Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题

3. HLS

HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件

4. WebRTC

WebRTC:名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。
WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯能力。
WebRTC项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox...)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现。
WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

5. 适用场景及区别

这里也有一篇文章介绍的RTMP、HTTP-FLV、HLS的,有兴趣的可以看看
https://www.cnblogs.com/upyun/p/9881865.html
image.png

WebRTC是做通信的,不是用来做直播。在直播业务中,目前并没有经过大规模的验证,配套的东西也不如直播这么完善,比如微信小程序就没法用WebRTC了。

大神winlin(SRS作者)在这篇文章中介绍的很清楚,大家可以看一下:
https://mp.weixin.qq.com/s/oYn5q4fF9afaged23Ueudg

引用他的话说
image.png

三、推流技术

目前主流的推流技术:ffmpeg、OBS。
可参考这里进一步了解推流的整个过程:https://www.cnblogs.com/yjmyzz/p/srs_study_1_install_push_and_pull_stream.html

  • ffmpeg推流
    主流的解决方案是 docker-nginx-rtmp-ffmpeg,如果只是测试可以使用命令:
    ffmpeg -re -i 文件.mp4 -vcodec copy -acodec copy -f flv rtmp://ip地址/live/01
    
  • OBS推流

    Open Broadcaster Software(简称OBS)是一款直播流媒体内容制作软件。同时程序和其源代码都是免费的。
    支持 OS X、Windows、Linux操作系统。适用于多种直播场景。满足大部分直播行为的操作需求(发布桌面、发布摄像头、麦克风、扬声器等等)。
    OBS中文官网:https://obsproject.com/zh-cn。可以进行软件下载及安装使用。

四、播放器

根据场景可以选择播放器:

  • PC浏览器,延迟有要求的用HTTP-FLV,延迟没要求的用HLS。
  • 移动端浏览器,用HLS,兼容性比较好,几乎都支持。
  • 移动端微信小程序,用RTMP,HTTP-FLV或HLS。
  • 移动端Native,用RTMP或HTTP-FLV。

根据协议可以选择播放器:

  • HTTP-FLV,PC上用flv.js,移动端用Fijkplayer。
  • HLS,PC上用hls.js,Safari、iOS、Android可以H5直接播。
  • WebRTC,PC上用H5(得自己写代码调API),移动端得用SDK。

下面是一些较主流的解决方案:

除此之外还有一些播放器软件可以实现播放:

  • vlc
  • PotPlayer
五、视频资源
六、测试demo
相关文章
|
视频直播 定位技术 UED
海外视频直播源码技术视频直播间的搭建
大家听到这里是不是感觉这个源码平台非常的熟悉,没错,这个源码平台就海外视频直播源码平台,而我说的这个房间就是视频直播间,主持人就是视频直播间内的主播,今天我就为大家分享海外视频直播源码技术视频直播间的搭建。
海外视频直播源码技术视频直播间的搭建
|
视频直播
《阿里云产品手册2022-2023 版》——视频直播
《阿里云产品手册2022-2023 版》——视频直播
106 0
|
存储 编解码 弹性计算
阿里云视频直播服务介绍|学习笔记
快速学习阿里云视频直播服务介绍
阿里云视频直播服务介绍|学习笔记
|
编解码 边缘计算 视频直播
视频直播服务实战|学习笔记
快速学习视频直播服务实战
视频直播服务实战|学习笔记
|
存储 编解码 移动开发
视频直播技术概述|学习笔记
快速学习视频直播技术概述
视频直播技术概述|学习笔记
|
编解码 数据安全/隐私保护 对象存储
视频点播服务实战|学习笔记
快速学习视频点播服务实战
视频点播服务实战|学习笔记
|
存储 编解码 人工智能
产品百科 |直播转点播最佳实践
直播转点播(直转点)是将直播流同步录制为点播视频,并支持媒资管理、媒体处理(转码及内容审核 / 智能首图等 AI 处理)、内容制作(云剪辑)、CDN 分发加速等一系列操作,可配置工作流自动处理,也可通过 API/SDK 灵活触发。
产品百科 |直播转点播最佳实践
|
编解码 算法 开发工具
直播泛在化的今天, 如何快速搭建不同场景的直播系统
目前,不同的直播业务场景的直播需求越来越多,不同的直播需求对应着不同的技术侧重点。本篇演讲将通过介绍阿里云的直播技术架构,从客户的角度讲解如何集成阿里云的直播产品,描绘在阿里云视频云直播系统内进行快速的场景搭建效果,展示其直播系统的技术特点。
直播泛在化的今天, 如何快速搭建不同场景的直播系统
|
存储 缓存 NoSQL
开发视频直播系统,视频直播系统源码是核心技术
了解视频直播行业的朋友应该清楚,对于开发视频直播系统而言,视频直播系统源码是真正的核心技术
开发视频直播系统,视频直播系统源码是核心技术
|
编解码 运维 安全
开放下载!《VoD问题排查与实战手册》40+技术问答快速入门阿里云视频点播
精解基本概念快速入门阿里云视频点播,40+技术问答详解常用功能排查及解决方案,针对多种业务场景的最佳实战分享。云运维工程师不可错过的匠心之作《VoD问题排查与实战手册》现已开放下载!快来下载阅读吧~
13395 0
开放下载!《VoD问题排查与实战手册》40+技术问答快速入门阿里云视频点播