ffmpeg直播推流,加入人脸识别算法,拉流,web端实时播放

文实现:opencv采集视频,人脸识别,ffmpeg推流,srs推流服务,VLC客户端 和vue web端实现显示功能。

环境PC:

一、推流
1)命令行推流:可以测试整个流程的是否有问题,

ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv  rtmp://192.168.1.106:2018/live

2)在工程中使用采用源码推流
程序实现推流,可以设置一些参数,添加一些算法(人脸识别等功能):推流识别源码
部分代码如下:

算法识别部分,识别需要RGB图像,需要将YUV转化为RGB:

		//读取摄像头,解码视频帧
			if (!cam.grab())
			{
    
    
				continue;
			}
			//yuv转换为rgb
			if (!cam.retrieve(frame))
			{
    
    
				continue;
			}
			if (frame.empty())
				break;
			double t = cv::getTickCount();
			//人脸识别算法
			detectFaceOpenCVDNN(net, frame);
			tt_opencvDNN = ((double)cv::getTickCount() - t)  / cv::getTickFrequency();
			fpsOpencvDNN = 1 / tt_opencvDNN;
			putText(frame, format("OpenCV DNN ; FPS = %.2f", tt_opencvDNN), Point(10, 50), FONT_HERSHEY_SIMPLEX, 1.4, Scalar(0, 0, 255), 4);

推流部分程序:

			pack.pts = av_rescale_q(pack.pts, vc->time_base, vs->time_base);
			pack.dts = av_rescale_q(pack.dts, vc->time_base, vs->time_base);
			pack.duration = av_rescale_q(pack.duration, vc->time_base, vs->time_base);
			ret = av_interleaved_write_frame(ic, &pack);

二、推流服务,srs和nginx选择其中一个即可
1)srs推流拉流服务 srs源码

默认配置即可

./configure && make
./objs/srs -c conf/srs.conf

2)nginx服务:

 ./sbin/nginx -c ./conf/nginx.conf

查看服务进程

 ps aux | grep "nginx"

三、拉流端

1)使用VLC软件,下载软件设置URL:
在这里插入图片描述

2)使用web拉流

vue实现双路拉流源码

使用VUE框架搭建前端页面显示

npm install
npm run serve

在这里插入图片描述
将http://localhost:8080/输入到浏览器中
双路播放界面如下所示,收流成功,并且有人脸识别效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/WANGYONGZIXUE/article/details/106609032