网站首页 > 技术教程 正文
最近工作上有个需求,要实现监控摄像头的视频在浏览器中进行点播播放,之前没接触过这方面的技术,在网上研究了一段时间,相关的实现方案有很多,相对来说搭建比较简单同时又不需要购买付费功能的方案是基于FFmpeg和nginx的flv实现方式,总结了一下相关的实现步骤,有需要的同学可以拿去。
一、安装ffmpeg
首先需要安装ffmpeg,ffmpeg是开源的音视频处理软件,功能强大,也很稳定,既能实现视频的编解码进行格式转换,也能进行视频流的推送和拉取,同时支持rtsp、rtmp、hls等多种协议。
ffmpeg的下载地址如下:
http://ffmpeg.org/download.html
我选择的版本是4.4,大家可以根据需要自己选择合适的版本,注意下载的是ffmpeg的源码,后面要根据不同的平台进行编译安装。
在编译ffmpeg之前需要安装第三方库yasm,下载地址如下:http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
将安装包上传服务器,按照如下步骤进行yasm的安装。
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
yasm安装完后,再通过yum安装gcc编译器。
yum install gcc
gcc编译器安装完成之后就可以编译ffmpeg,并进行安装了。
tar zxvf ffmpeg-4.4.tar.gz
cd ffmpeg-4.4
./configure --enable-shared --prefix=/usr/local/ffmpeg
make
make install
ffmpeg安装完后,需要修改配置文件,引入相关的类库。
vi /etc/ld.so.conf
输入以下内容
include ld.so.conf.d/*.conf
/usr/local/ffmpeg/lib/
执行如下命令,使设置生效:
ldconfig
查看下ffmpeg版本,是否是预期的版本。
/usr/local/ffmpeg/bin/ffmpeg -version
二、安装nginx
注意这里使用的nginx需要在原始nginx的基础上增加编译nginx-http-flv-module模块。nginx-http-flv-module是github上开源的项目。
github项目地址:https://github.com/winshining/nginx-http-flv-module
分别下载Nginx(http://nginx.org/en/download.html)和nginx-http-flv-module源码,进行编译安装。我使用的nginx版本是1.18.0,编译命令中--prefix参数执行nginx安装路径,--add-module参数指定nginx-http-flv-module源码路径。
cd nginx-1.18.0/
./configure --prefix=/usr/local/nginx-media --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-flv-module-1.2.9
make
make install
安装完成之后,修改nginx配置文件/usr/local/nginx-media/conf/nginx.conf,配置流媒体服务器。配置可以参考https://github.com/winshining/nginx-http-flv-module主页的说明样例。
三、启动推流
nginx配置完成之后,就可以使用ffmpeg从摄像头中拉取原始rtsp视频流,转换为trmp视频流,并推送到nginx服务器中,由nginx服务器对外提供flv格式的视频流。
可以通过如下命令启动推流。-i参数执行原始rtsp视频流地址,需要包含认证信息。rtmp协议地址是在nginx中配置的服务器地址。
/usr/local/ffmpeg/bin/ffmpeg -i rtsp://username:password@rtsp视频流地址 -vcodec copy -acodec copy -f flv rtmp://nginx服务器IP/myapp/s1
四、前端通过flv.js播放视频流
flv.js也是一个github上的开源项目,项目地址:https://github.com/Bilibili/flv.js/
在前端项目中引入flv.js包,在页面代码中通过flvPlayer播放视频流。url是通过nginx提供的flv的视频流地址,http://nginx地址:端口/live?port=1935&app=myapp&stream=s1
<script src="flv.min.js"></script>
<video id="videoElement"></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url: 'http://example.com/flv/video.flv'
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
至此,免费的流媒体服务已经搭建好了,有需要的同学可以尝试一下,本人亲自测试可用。
猜你喜欢
- 2024-10-13 学成在线-第16天-讲义- Spring Security Oauth2 JWT
- 2024-10-13 2022年末最新最全Java学习路线,结合工作经验和培训机构整理
- 2024-10-13 基于微服务架构开发的在线教育网站
- 2024-10-13 SRS环境搭建,SRS源码阅读,全网独一份的视频文档资料
- 2024-10-13 酷瓜云课堂企业版 v1.0.7 发布,在线教育解决方案
- 2024-10-13 宝塔实测搭建CRMEB开源知识付费系统PHP源码
- 2024-10-13 iOS直播(五)进行推流(易推流苹果直播手游教程)
- 2024-10-13 酷瓜云课堂(企业版)v1.1.3 发布,在线教育解决方案
- 2024-10-13 简述SRS流媒体服务器相关技术(流媒体服务器应用场景)
- 2024-10-13 爱奇艺网络协程编写高并发应用实践
你 发表评论:
欢迎- 最近发表
-
- Oracle 在其新的 Linux 内核中引入了热补丁功能
- CentOS 7.6下安装Oracle 11.2.0.4
- ORACLE体系 - 2(oracle体系讲解)
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- Hadoop自学系列集(二) ---- CentOS下安装JDK
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 搭建Oracle数据库服务器(oracle服务器创建用户)
- OGG同步到Kafka(oggforbigdata到kafka)
- oracle是什么软件?(oracle是干什么用的)
- 脚本化修改Oracle用户的密码以及执行sql(增删改查等)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)