前言
很多时候我们获取到了一些实时的二进制图片流(如摄像头),并希望可以在浏览器中实时查看,类似直播那样。
准备
我们需要javacv,它封装了opencv,ffpmeg等一系列工具
build.gradle
1 | dependencies { |
思路是这样的,我们用javacv把二进制图片流转换成rmtp视频直播流,推送到媒体服务器,然后用客户端从媒体服务器获取直播流。
这里我使用的是livego,因为它使用起来比较简单,上行支持rmtp,下行支持rmtp/flv/hls。
rmtp格式可以使用VLC media player
播放器进行播放
flv格式可以配合flv.js
在浏览器中进行播放或使用VLC media player
播放器进行播放
hls格式可以使用VLC media player
播放器进行播放
Code
代码用kotlin写的,使用时调用transferRtmp
方法
1 | fun imageBytesToBufferedImage(data: ByteArray): BufferedImage { |