使用FFmpegOut插件,插件中自带CameraCapture.cs脚本,能够捕捉camera的画面,但没有推流功能,需要手动添加。在FFmpegSession.cs脚本中调用命令行使用FFmpeg的地方添加RTSP推流功能,具体如下:
return new FFmpegSession(
"-y -f rawvideo -vcodec rawvideo -pixel_format rgba"
+ " -colorspace bt709"
+ " -video_size " + width + "x" + height
+ " -framerate " + frameRate
+ " -loglevel warning -i - " + preset.GetOptions()
+ " -pix_fmt yuv420p"
+ " -f rtsp rtsp://ip:port/stream"
);
也就是添加最后的-f rtsp 那一行,其中ip和port是开启的RTSP服务器的ip和端口号。
具体使用哪种服务器可以自己选择,作者只使用过EasyDarwin和rtsp-simple-server,其中后者可以导入到Unity工程中,在github上下载,注意现在已经更新,可以下载之前的老版本(前者应该也能导入,没仔细研究过)。
测试效果如下图:
作者的电脑没有英伟达显卡,所以使用的是英特尔的编码器,延迟稍微大了点(400毫秒),实测英伟达编码器能够达到200ms。
项目源码已上传至github:GitHub - pretender1111/FFmpegOutRTSP at master