如何把设备实时推送过来的帧图片流转成直播流进行直播?【hls】【帧图片】【直播】【udp】

偶尔善良 提交于 2020-12-28 22:39:49

如何把设备实时推送过来的帧图片流转成直播流进行直播?
非互动直播流(帧图片转直播流)
背景:
因种种原因,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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!