本篇博客继续在上篇《在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务》
http://blog.csdn.net/tao_627/article/details/18909075
的基础上,搭建基于开源框架的视频直播服务,仍然使用root用户操作。基本框架图示如下:
下面分为几个步骤说明如下:
1.实时转码服务器构建
这里为了充分挖掘开源项目的优势,我使用ffmpeg来进行实时转码。为此,在Ubuntu 12.04上安装最新的ffmpeg静态生成包。参见下面的链接
http://ffmpeg.gusari.org/static/64bit/
下载下来最新的源码包后,解压到系统目录中
cd /usr/local/src
wget http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2014-02-05.tar.gz
tar zxvf ffmpeg.static.64bit.2014-02-05.tar.gz -C /usr/local/bin
这样将解压出的两个可执行文件ffmpeg和ffprobe复制到系统的/usr/local/bin下面,以后我们可以直接在系统的任何路径使用ffmpeg命令就可以了,我们先看看
将要提供直播服务的视频文件《星月神话》xinyueshenhua.flv存放到Crtmpserver服务器的指定目录/home/taoyx/视频/下面,我们这里为了简单,只使用flv格式的视频文件来进行实时流化,提供直播服务,使用下面的命令实时转码
ffmpeg -re -i "/home/taoyx/视频/xinyueshenghua.flv" -vcodec copy -acodec copy -f flv rtmp://192.168.0.106/live/cuoai
相关说明:
上面的命令将一个本地文件流化为一个名为cuoai.flv(.flv可以省略)的实时流,通过rtmp协议播放。
这里采用ffmpeg而非Flash Media Live Encoder等其它工具,是希望尽可能采用开源解决方案,同时不受其它商业因素制约.另外一点是,ffmpeg本身功能非常强大,它值得我们去投入精力去挖掘它的自身强大功能.
这里采用静态库安装的方式,是为了获取最新版的ffmpeg代码,同时不想从源码编译,因为各种库的依赖关系比较复杂,而且ffmpeg目前不是我们研究的重点.为了尽快达到我们的目的,我选择最快的方式,就是采用静态库的方式.目前ffmpeg在Ubuntu上的ppa提供的版本比较旧,只是ffmpeg1.0,不是最新的ffmpeg2.1,不符合我的要求.
2.使用新版的JWPlayer(官网http://www.jwplayer.com/)来提供网页端的flash播放器
我们从如下网址
https://account.jwplayer.com/#/account
下载最新版的JWPlayer源码,注意初次下载时,你需要先注册一个账号。然后下载self-hosted player版本,同时,你会得到一个Self-Hosted Player License Key,对免费版来说,它不是必须的,但是它可以给你的账户定期反馈使用JWPlayer的统计信息。
将下载得到的压缩包加压后,放到Apache服务器的根目录/var/www,参见如下目录结构
我将它上传到下面的网址
http://download.csdn.net/detail/tao_627/6899945
下面是live_jwplayer.html 的代码
Crtmpserver Video Demo
Loading the JWPlayer...
3.开启直播流和crtmpserver服务器
ffmpeg -re -i "/home/taoyx/视频/xinyueshenghua.flv" -vcodec copy -acodec copy -f flv rtmp://192.168.0.106/live/cuoai
./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua
4.从网页端观看直播流,
http://192.168.0.106/jwplayer6/live_jwplayer.html
下面是使用截图
当然,也可以同时观看点播节目,比如输入如下网址
http://192.168.0.106/jwplayer6/test_jwplayer.html
下面是使用截图
这样的话,我们通过本地文件来模拟产生实时直播流来搭建Crtmpserver的直播基本完成,剩下的工作就是结合该demo去深入研究它内部的代码.请继续参见后面的博文描述.
ffmpeg简介 官网链接是http://www.ffmpeg.org/上有说明,它是音视频的分离,转换,解码的完全解决方案。 其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。 ffmpeg包括一...
nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...
简介 Simple Reference 基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference 演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference 图形化示例展现的是 CUDA, OpenGL,...
在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...
我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...
该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...
英语的重要性,毋庸置疑!尤其对广大职场人士,掌握英语意味着就多了一项竞争的技能。那,对于我们成人来说,时间是最宝贵的。如何短时间内在英语方面有所突破,这是我们最关心的事情。英语学习,到底有没有捷径可以走,是否可以速成?周老师在这里明确告诉大家,英语学习,没有绝对的捷径走,但是可以少走弯路。十多年的教学经验告诉我们,成功的学习方法可以借...
展开全部 其实IDLE提供了一个显32313133353236313431303231363533e78988e69d8331333365663438示所有行和所有字符的功能。 我们打开IDLE shell或者IDLE编辑器,可以看到左下角有个Ln和Col,事实上,Ln是当前光标所在行,Col是当前光标所在列。 我们如果想得到文件代码...
前言[1]从 Main 方法说起[2]走进 Tomcat 内部[3]总结[4]《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spri...
【本文摘要】【注】本文所述内容为学习Yjango《学习观》相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用。阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英语学习方面,我们的症结所在。学习英语这类运动类知识,需要把握四个原则第一,不要用主动意识。第二,关注于端对端第三,输入输出符合实际情况第四,通过多个例子...
点云PCL免费知识星球,点云论文速读。文章:RGB-D SLAM with Structural Regularities作者:Yanyan Li , Raza Yunus , Nikolas Brasch , Nassir Navab and Federico Tombari编译:点云PCL代码:https://github.co...