使用手机摄像头实现视频监控实时播放

使用手机摄像头实现视频监控实时播放

一、概述

视频监控实时播放的原理与目前较为流行的直播是一致的,所以采用直播的架构实现视频监控实时播放,流程图如下:

推流
安卓APP
直播服务器
VLC播放器
其他播放端

目前实时视频流的传输协议有以下几种:RTSP、RTMP、HLS、Http-flv。
安卓APP开发使用HBuilder,而HBuilder内置了LivePusher直播推流控件,该控件使用了RTMP协议,所以暂时选择使用RTMP协议

协议RTSPRTMPHLSHttp-flv
实时预览
实时回放
定位×
暂停恢复×
视频加密×
视频格式H264/H265H264/H265H264H264/H265
音频格式G711u, G711a, G726, MP2L2, AACAACAACAAC
首屏时间1秒1秒3~4秒1秒
播放延迟1秒1秒3~4秒1秒

二、RTMP服务器搭建

RTMP服务器使用nginx+rtmp模块搭建,linux下可以下载nginx源代码+nginx-rtmp-module模块重新编译,windows下nginx编译较为麻烦,可以下载nginx 1.7.11.3 Gryphon,然后再下载nginx-rtmp-module模块进行配置即可

相关软件下载地址

nginx地址:https://github.com/nginx/nginx
nginx-rtmp-module地址:https://github.com/arut/nginx-rtmp-module/
nginx 1.7.11.3 Gryphon地址:http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip
ffmpeg地址:https://ffmpeg.org/download.html

服务器搭建步骤

  1. 下载nginx 1.7.11.3 Gryphon后解压到任意目录,注意目录中尽量不带中文字符和空格
  2. 下载nginx-rtmp-module(直接从github clone或下载zip压缩包),将nginx-rtmp-module目录放到nginx的根目录下,与conf目录同级
  3. 将conf/nginx-win.conf复制一份,改名为nginx.conf
  4. 配置nginx.conf文件,增加rtmp的server,同时给http的server中增加路径映射
  5. 启动nginx
  6. 打开http://localhost/stat查看状态
  7. 使用ffmpeg进行直播测试

nginx配置

在http段之前增加以下内容:

rtmp {
    server {
        listen 1935;
        application live {
            live on;
			record off;
			publish_notify on;
			#on_publish http://localhost:8080/newsweb/api/v1/rtmp/on_publish;
			#on_publish_done http://localhost:8080/newsweb/api/v1/rtmp/on_publish_done;
			#on_play http://localhost:8080/newsweb/api/v1/rtmp/on_play;
			#on_play_done http://localhost:8080/newsweb/api/v1/rtmp/on_play_done;
        }
        application hls {
            live on;
            hls on;  				 #是否开启hls
            hls_path temp/hls; 		 #本地切片路径
            hls_fragment 8s;  		 #本地切片长度
			publish_notify on;
			#on_publish http://localhost:8080/newsweb/api/v1/rtmp/on_publish;
			#on_publish_done http://localhost:8080/newsweb/api/v1/rtmp/on_publish_done;
			#on_play http://localhost:8080/newsweb/api/v1/rtmp/on_play;
			#on_play_done http://localhost:8080/newsweb/api/v1/rtmp/on_play_done;
        }
    }
}

在http->server下,location /段之前增加以下内容:


		location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root nginx-rtmp-module/;
        }
		#HLS配置开始,这个配置为了`客户端`能够以http协议获取HLS的拉流
        location /hls {  
            #server hls fragments  
            types{  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            alias temp/hls;  
            expires -1;  
        }  

注:其中rtmp段中的on_publish、on_publish_done、on_play、on_play_done是事件触发,当直播开始、直播结束、观看开始、观看结束时,会触发指定的URL,并将推流和观看时的相关参数传递到相关URL上,如果HTTP返回的状态码不是200时表示鉴权失败,会直接阻断下一步的操作

直播测试

  1. 本地找一个mp4文件
  2. 使用在ffmpeg\bin目录下执行推流命令
  3. 使用ffplayer播放视频
#推流地址解释:rtmp://localhost:1935/live/home?p=v
#rtmp://为协议名
#localhost是域名
#1935为端口号,rtmp默认为1935端口
#live为nginx.conf中配置的rtmp标记
#home为指定字符串,生产环境中可以设置为设备ID或用户ID
#?p=v是附加参数,用于鉴权和记录直播开始使用

#ffmpeg推流测试:
ffmpeg.exe -re -i c:\ffmpeg\inputfile.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/home 

#ffmpeg 拉流测试:
ffplay.exe rtmp://localhost:1935/live/home

三、安卓APP推流

安卓APP推流使用HBuilder的LivePusher直播推流控件,代码如下:

<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
	<title>Video Example</title>
	<script type="text/javascript">
		var pusher = null;
		// H5 plus事件处理
		function plusReady(){
			// 创建直播推流控件
			pusher = new plus.video.LivePusher('pusher',{
				url:'rtmp://172.16.70.182:1935/live/phone',
				mode:'SD',
				muted:false,
			});
			pusher.preview();
			// 监听状态变化事件
			pusher.addEventListener('statechange', function(e){
				console.log('statechange: '+JSON.stringify(e));
			}, false);
		}
		document.addEventListener('plusready', plusReady, false);
		// 设置推流服务器
		function updatePusher() {
			var url= document.getElementById('pushurl').value;
			pusher.setOptions({
				url:url
			});
		}
		// 开始推流
		function startPusher() {
			console.log(pusher)
			pusher.start();
		}
		
		// 切换摄像头
		function switchCamera() {
			pusher.switchCamera();
		}
	</script>
	</head>
	<body style="margin:0;padding:0;text-align:center;">
		<div id="pusher" style="width:100%;height:300px;background-color:#000000;margin:auto"></div>
		<br/>
		<input type="text" id="pushurl" value="rtmp://172.16.70.182:1935/live/phone"  style="width: 500px;"/>  <br><br>
		<button onclick="updatePusher()">更新推流服务器</button>
		<br/><br>
		<button onclick="startPusher()">开始推流</button>  
		<br><br>
		<button onclick="switchCamera()">切换摄像头</button>
		<br/><br/>
		
	</body>
</html>

四、客户端观看直播

目前暂时使用VLC进行视频播放
VLC下载地址:https://www.videolan.org/vlc/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
[教程] 充分发挥手机500W像素优势发个真正可以实现安卓做PC摄像头的教材 软件 不喜勿喷 好长时间没来了 今天显得难受 从网上 偶尔发现一个 可以把安卓手机作为PC 摄像头的 软件 亲测可用哦 还不错 就推荐给大家 或许人多人 在网上看多过 本帖旨在 整理下 网络资源 给小白们服务 大神绕过 谢谢 下面 上教程(备注 本帖转自网络 经本人整理修改 感谢原作) 利用DroidCamX将手机摄像头打造成电脑高清摄像头 此软件 一共有三种连接方式 WIFI USB 跟蓝牙 经过本人亲测体验 只推荐给大家 前两个方式 因为蓝牙实在是太卡 根本不流畅 再次就不 给机油没介绍这个 很蛋疼的 连接方式了 一、软件安装 此软件 分为 手机端 跟PC 端 需要用到的文件已经全部整理好,所以下载回来是一个压缩包,共包含如下三个文件: 首先安装手机端——HA-20110427-DroidCamX.Wireless.Webcam.Pro.1.4.2._GCA.apk 安装到手机上 再安装PC端,打开DroidCamX1.4.2.rar,直接运行Droid Cam-3.2.exe 一路点击下一步,即可安装完成。默认安装目录为C:Program Files DroidCam(32位系统)或C:Program Files (x86)DroidCam(64位系统),为了使用更方便,将“电脑端DroidCamApp.exe汉化覆盖.zip”中的DroidCamApp.exe覆盖掉安装目录下的同名文件,软件界面即变成中文。 到此为止,所有安装工作已经做完了。可以为DroidCamApp.exe建立一个桌面快捷方式,因为它是DroidCam客户端的主程序。 二、WiFi无线摄像头 当无线摄像头使用是最简单的,先打开手机WiFi并连接上无线路由,然后在手机上启动DroidCamX,看到如下画面。显示IP:192.168.1.102 端口:4747。 再启动PC端,连接方式选择WiFi/LAN,再将手机IP和DroidCam端口填上在手机端界面看到的即可。 点击Connect,手机现在的画面已经变成摄像头显示画面了。手机端的画面可能是左右相反的,没关系,先不用理会。这个界面有三个按钮,右上方是自动对焦,中间是亮度节能开关,下方是退出。 虽然手机界面上显示是左右反的,但在电脑上显示出来其实是正常的,如果部分用户仍然不正常可以勾选pc端的“镜像网络视频”。要使用摄像头,在视频设备里选择DroidCam就可以了,QQ、Skype等各种需要使用摄像头的软件都完美兼容。 强烈推荐方式!!! 三、USB摄像头(个人也比较终于USB 连接 所以 强烈推荐用USB 方式连接 好处是速度 稳定 省电) 这是笔者比较推荐的方式,速度快,而且一边使用一边充电,不用担心手机电量被短时间用完。使用USB连接要稍微麻烦一点,先做一点准备工作:下载adb客户端及驱动,解压缩后,把里面 adb.exe 和 AdbWinApi.dll 两个文件(搜索一下你的电脑,一般用安卓手机的电脑里都有这东西)放到系统盘的 windows/system32 文件夹里就可以了。 为了方便以后使用,建立一个bat文件,内容为adb forward tcp:4747 tcp:4747。 其实很多 小白 不懂如何创建BAT 文件 其实很简单 在桌面右击新建一个文本 把adb forward tcp:4747 tcp:4747 粘贴到文本里 保存 把文本的 格式改为.bat 即可(文本名字可以忽视) 先运行手机端。然后在PC上运行这个bat文件一次,再运行DroidCam客户端,选择连接方式为“ADB(由USB)”,点击Conect。如果不运行bat或者设置的端口与bat内的不一致,会有错误提示。 连接成功后界面与WiFi连接时是一样的,就不再多做介绍了。 软件设置 因为此软件是一直使用摄像头的,所以设置里提供了一些基本的节能设置,如自动变暗、黑色背景。另外保持手机唤醒这样可以避免部分手机在休眠时wifi自动断开而使软件无法继续使用。 前后摄像头是可以切换使用的,连接端口也可以修改成其他的。友情提醒,如果修改了端口号,PC的客户端也要做对应的修改,使用usb连接里的bat里命令包含的端口号同样要修改。 除了以上外,视频格式也提供了三种风格供选择,视频分辨率也可调节。 视频分辨率比较丰富,最高720x480到最低240x160,分辨率越高效果自然越好。 还要一提的是除了支持当摄像头外,它也能同时当麦克风,在PC上的客户端上勾选上启用音频即可。 手机当电脑摄像头这个功能,其实在S60和WM时代就已经有相应的软件来实现了,但以前的效果都比不上传统摄像头。DroidCamX给我们带来了希望,支持高分辨率,支持多种方式,在使用wifi与USB连接时传输图像都很流畅,实用性毋庸置疑。 安装调试 成功了 你可以充分 发挥 你手机的高像素 实现高清视频功能了 哈哈 500W 像素 可以秒杀了 普通本本的 130W 像素摄像头 不喜勿喷 感觉好 就评个分把 谢谢(评个分又不会怀孕 ) 下面 上传 本软件工具 DroidCamX手机摄像头.part1.rar (3.18 MB, 下载次数: 728) DroidCamX手机摄像头.part2.rar (2.97 MB, 下载次数: 683) 注意 有机油 说不能使用高分辨率这个情况 这个可能与 相机本身 或者是手机本身的分辨率有关 小蜜已经给同学 本人只在戴妃上测试了 一切正常 如果有机油发现问题 或者是 找出解决的 办法 欢迎跟帖 谢谢
实时监控系统的视频采集模块通常需要使用视频采集卡或网络摄像头实现。以下是一些实现方法: 1. 视频采集卡:视频采集卡可以将模拟视频信号转换成数字信号,通过计算机的接口传输到计算机中。视频采集卡通常包括一个视频输入接口和一个音频输入接口,可以直接将模拟摄像头或监控摄像头的输出连接到视频输入接口上。 2. 网络摄像头:网络摄像头可以直接通过网络传输视频信号到计算机中。通常使用 IP 地址访问网络摄像头,可以通过网络连接将摄像头视频信号实时传输到服务器或监控系统中。 3. 外部设备:除了视频采集卡和网络摄像头,还可以使用其他外部设备来实现视频采集。例如,现在许多智能手机和平板电脑都配备有高质量的摄像头,可以使用它们来进行视频采集。 对于实时监控系统而言,视频采集模块的实现需要考虑到以下因素: 1. 视频质量:需要选择高质量的采集设备,并且对视频信号进行优化处理,以提高视频质量。 2. 实时性:实时监控系统需要实时采集视频信号,并及时传输到监控系统中,因此需要选择高速传输设备和优秀的传输协议,以保证视频信号的实时性和稳定性。 3. 可靠性:视频采集模块需要保证长时间的稳定运行,因此需要选择高质量的硬件设备,并进行充分的测试和验证,以确保系统的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shuaijie506

您的打赏是我继续分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值