今天应公司领导的要求做完了来公司的第三个项目流媒体服务与视频网站开发,接近年终,博客停更了好久,心里一直不甘,上周六和北理工的好兄弟安老板定下誓言,每天保证五篇技术博客的更新量,年终上线三大社区。作为第一篇我来和大家分享下我做流媒体搭建和视频网站研发的一些心得体会。

流媒体服务器


流媒体服务器我们首先要明白他的本质是什么,还是回到我之前说的,服务器,单纯的服务器就是一台机器,就像我上边的这张图片,大家可以把它看做就是一台电脑主机,寡而无味。但在我们“耳闻”中听到的往往是什么应用服务器,数据库服务器,文件服务器,流媒体服务器,Web服务器等等,区别是什么呢?就是在该服务器装了拥有哪些特殊功能的应用,譬如你在这台机器上搭建了FTP,那么他就可以叫做FTP文件服务器,你在上边安装了流媒体相关的软件那他就可以叫流媒体服务器,当然为什么可以安装这些呢?就是我在之前的博客提到的虚拟化和容器技术(感兴趣的可以去翻看我的老黄谈容器的博客),服务器机房我每天都接触而且也多次参与过机房服务器的搭建扩展工作,所有这些东西汇集起来我们就称之为云计算,所以流媒体服务器也是云计算的一种只不过功能用于处理流媒体文件。作为视频流技术的核心,无论是我们接触的各大直播网站像Bilibili,虎牙直播,斗鱼直播,还是现在流行的移动终端APP像抖音,快手,流媒体服务器都扮演着至关重要的角色,市面上我们大多接触的是第三方的流媒体服务,像我之前开发过的基于环信SDK的直播类APP,原理便是通过第三方接口进行主播推流和用户拉流的技术。但我在这边博文中要说的是如何搭建我们自己的流媒体服务器在下边的模块概述中我将详细介绍具体步骤。

直播和点播的原理

直播和点播是完全不同的两种视频技术,直播讲究实时性,我们需要实时的处理视频流数据,根据支持显示的格式,甚至需要实时的进行视频流的转码和解码,对服务器而言直播不会占用存储,当主播推流结束的时候整个直播也就宣告结束了。点播则不同,点播处理的是固定格式的视频文件,我们往往是自己手中拥有一个某种格式的譬如MP4,FLV,M3U8的固定大小的视频文件,然后在具体的应用中由UP主上传到流媒体服务器,我们在网站或者APP中点播完成的。所以我们可以这样理解直播是网红主播的技术,比如你昨天看到的LPL赛区的AllStar,点播则是UP主上传视频的技术例如B站某位定时上传VLog的女装大佬。在流媒体数据传输方面直播需要终端实时进行视频推流,在推流的过程中实现视频转码,同时生成拉流的URL,点播则不同,我们只需要将视频文件放到固定位置,然后通过配置静态服务器进行访问就可以了。

强大的转码工具和前端组件实现

在用Nginx搭建流媒体服务器的过程中主要用到的是包含rtmp模块的软件,首先需要下载nginx。在nginx官网上下载的nginx是不带rtmp模块的,所以在http://nginx-win.ecsds.eu/download/中下载nginx 1.7.11.3 Gryphon.zip,该版本的nginx包含rtmp组件,通过rtmp组件,才能提供流媒体服务,使nginx成为rtmp流媒体服务器。具体安装配置我不在多说比较简单,大家也可以百度。这里重点说下ffmpeg,这一个功能强大的视频流转换工具,你可要将固定格式的视频文件进行转换,也可以将终端摄像头的实时画面进行转换(亲测可用),但在转换之前必须将Nginx启动,因为我们在转换命令中会生成基于本地IP的URL。当然Nginx只是其中的一种你也可以用微软的IIS或者Apache进行搭建,详细流程不在概述。前端实现因为我搭建的是RTMP流媒体服务所以用到了Video.js这个组件,当然国产的CKPlayer也不错(API比较齐全),作为有过Android开发经验的我前端开发不要太简单,其实配合关系型数据库进行界面设计,我们完全可以做出可以媲美任何一个我们熟知的视频网站的效果,后续我也将在我的柯小胖二次元社区网站进行实践,感兴趣的可以关注我的博客动态。

聊聊Nginx


Nginx这里引用百度百科的一段话:“Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。”总结来说就是小而强大,其采用的异步单进程方式远胜过老牌Web服务器Apache同步多进程的并发处理能力。在当下的分布式集群中Nginx主要有以下几点核心功能:1、动静分离。动静分离往往是动态文件以及业务逻辑代码交由应用服务器,Nginx负责处理静态文件。 2、负载均衡指的是动态文件静态文件都在应用服务器,Nginx通过反向代理接受客户请求,然后根据算法或者配置好的权重进行请求的转发(Hash算法)。3、 针对不同的应用提供不同映射的URL。

流媒体之老黄谈流媒体服务与视频网站研发相关推荐

  1. 美国俩程序员打造了盗版视频网站帝国:用户数已超世界流媒体巨头

    近日,黑鸟缅怀了关于国内"盗版"视频网站圣城家园被端一事,刚讨论了一下关于国内的版权意识. ▲这部电影结束了:纪BT网站"圣城家园"被端 紧接着便看见了在太平洋 ...

  2. 收藏:视频网站(JavaEE+FFmpeg)/Nginx+ffmpeg实现流媒体直播点播系统

    FFmpeg安装(windows环境)http://www.cnblogs.com/xiezhidong/p/6924775.html 最简单的视频网站(JavaEE+FFmpeg)http://bl ...

  3. 原来爱优腾等视频网站都是用这个来播放流媒体的

    本篇文章介绍主流的两种协议 HLS 和 DASH,以及如何制作并使用支持这些协议开源的客户端库来播放视频. HLS HLS (HTTP Live Streaming) 是苹果公司开发的流媒体传输协议, ...

  4. 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解

    注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...

  5. 流媒体视频网站Go语言实现

    项目开源地址 Github:https://github.com/JIeJaitt/stmsrv API 设计 List all videos:URL:user/ 总结一下 api 根据 Handle ...

  6. 实时监控、直播流、流媒体、视频网站开发方案设计简要

    快速传送至:javacv入门指南:序章 快速传送至:从零开始开发和搭建直播平台-教程汇总篇 javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现, ...

  7. CentOS 8 安装视频网站与流媒体直播Nginx-http-flv-module模块

    安装CentOS 本次测试安装使用的是CentOS 8.2版. 具体安装办法最自行百度. 安装宝塔面板 宝塔面板是一个非常不错的管理面板,可以方便我们对Linux系统的管理. 宝塔面板官网:宝塔面板 ...

  8. 视频网站ts流媒体服务器,推送本机视频流到流媒体服务器

    前言: 上一章简单的介绍了javacv并且演示了如何获取本机摄像头:http://blog.csdn.net/eguid_1/article/details/51659578 本章将在上一章的基础上, ...

  9. 如何搭建高性能视频网站

    一.视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了. 视频 ...

最新文章

  1. 运行在CentOS7.5上的Django项目时间不正确问题
  2. SAP HR模块配置假期日历和缺勤类型
  3. ABAP如何生成UUID
  4. ByteBuffer
  5. linux的搜索和时间
  6. 与自定义词典 分词_使用jieba库进行中文分词、关键词提取、添加自定义的词典进行分词...
  7. zookeeper单节点部署
  8. 你画我猜微擎版小程序源码
  9. 使用ThinkPHP框架高速开发站点(多图)
  10. 【uniapp】索引列表展示更多信息
  11. ItChat4JS -- 用NodeJs扩展个人微信号的能力
  12. Encoder-decoder模型及Attention机制
  13. centos 6.5安装步骤
  14. 曾有一个人,爱我如生命(2)
  15. SpringCloud系列之六
  16. 怎么卸载手机上下载的软件?苹果手机有两种方法
  17. java获取文件电脑路径
  18. Date相关日期格式转换
  19. 大型机学习之初步了解-大型机的现状与前景
  20. 如何运行.py文件。

热门文章

  1. the work directory /tmp/ oracle,Oracle升级问题总结
  2. Docker 入门教程(一) - Docker Tutorial
  3. 知到网课异彩纷呈的民族文化期末考试单元试题答案分享!
  4. 【HTML】表单隐藏域hidden
  5. 回归标准差和残差平方和的关系_用回归来理解方差分析(三):Ⅰ型平方和与Ⅲ型平方和...
  6. Flink on Kubernetes
  7. 2019年中国社交电商行业市场分析:社交电商巨头已浮出水面
  8. 【已解决】致命错误:Python.h:没有那个文件或目录
  9. 一些常见网络安全术语
  10. win10系统下vs2015编写的C++程序在XP系统里运行