如何把设备实时推送过来的帧图片流转成直播流进行直播?
非互动直播流(帧图片转直播流)
背景:
因种种原因,android设备仅做到了通过udp把摄像头帧图片实时推送到了服务器。
业务要求在手机h5,或pc电脑浏览器上都能观看实时直播(仅画面)。
实现思虑:
1、参考https://blog.csdn.net/redfoxtao/article/details/78080924
可以把图片生成rtmp直播流。使用了FrameRecorder
2、参考https://blog.csdn.net/ldddd_/article/details/105855414
使用DatagramSocket启动udp端口监听接收图片报文。
3、将图片报文替换第一步中的固定图片(BufferedImage)。
4、安装部署windows版的nginx-rtmp服务器
直接从https://github.com/illuspas/nginx-rtmp-win32/tree/dev
下载的配置好rtmp的完整nginx服务包。
5、下载ffmpeg验证nginx-rtmp服务是否正常。
ffmpeg下载地址:https://github.com/BtbN/FFmpeg-Builds/releases
我下载的ffmpeg-N-100471-gbff6fbead8-win64-gpl.zip 这个版本。
验证命令:
推送rtmp流(因flash正在各大浏览器放弃不建议使用)
ffmpeg -re -i test.flv -c copy -f flv rtmp://127.0.0.1:1935/live/steam
推送hls流(延迟有点高,对各PC和移动终端兼容性好,本次采用的hls流)
ffmpeg -i test.mp4 -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://127.0.0.1:1935/hls/movie
6、将rtmp://127.0.0.1:1935/hls/movie配置到第一步中。
7、参考https://blog.csdn.net/qq285679784/article/details/85763086
编写h5页面支持播放hls m3u8直播流,放在nginx-rtmp的html目录下。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>演示页面</title>
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.js"></script>
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
</head>
<body>
<h1>演示m3u8直播页面</h1>
<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268"
data-setup='{}'>
<source src="hls/movie.m3u8" type="application/x-mpegURL">
</video>
<script>
</script>
</body>
</html>
参考资料:
1.[FFmpeg] 如何通过实时摄像头帧图片生成 rtmp 直播流;第一个收到的资料给了我自信。
https://www.v2ex.com/t/436280
2.如何将jpg等格式的图片转化为yuv;没用到
https://blog.csdn.net/kelvinchensky/article/details/40885299?utm_source=blogxgwz8
3.ffmpeg Windows安装及命令使用及下载地址
https://blog.csdn.net/kaikai136412162/article/details/80746961
https://github.com/BtbN/FFmpeg-Builds/releases
4.ffmpeg生成hls直播流
https://blog.csdn.net/lyang0303/article/details/88545755
5.因为这边是windowsserver2012没有默认开启流媒体服务。耽误了很久。
Windows service 2012 安装 ffmpeg 缺少 mfplat.dll 文件解决方法;一定要记住:开启桌面体验即可,不要从其他地方乱下乱拷。
https://www.wenjiangs.com/article/windows-service-2012-ffmpeg-mfplat-dll.html
6.java 图片合成hls 流文件;没用到
https://blog.csdn.net/weixin_35928208/article/details/109113465
7.图片通过javaCV转RTMP流;找了好久才找到的,万分感谢。
https://blog.csdn.net/redfoxtao/article/details/78080924
8.Springboot启动Udp监听服务,创建socket,接收数据包
https://blog.csdn.net/ldddd_/article/details/105855414
9.video.js播放rtmp直播源和hls直播源
https://blog.csdn.net/qq_40816360/article/details/84071977
10.Android使用FFMpeg实现推送视频直播流到服务器;后期感觉android直接推流。
https://www.cnblogs.com/android-blogs/p/5816912.html
来源:oschina
链接:https://my.oschina.net/u/578614/blog/4865716