当前位置:   article > 正文

用Java为视频添加图片水印(类似直播)_nginx 视频追加水印

nginx 视频追加水印


如何用Java给图片添加文字水印
最近做的项目需要实现为视频添加图片水印,在网上查找和实践后,实现了功能,特此记录一下,方便日后用到。本文用的是从海康摄像头拿到的视频流,添加图片后编译成rtmp视频流,在IE浏览器中可以看到(在谷歌浏览其中打开没画面,不知道为什么),技术使用springboot+vue+ffmpeg+nginx+nginx的rtmp模块

1.首先下载nginx

在这里插入图片描述
然后下载nginx rtsp 模块
在这里插入图片描述
下载压缩包解压到nginx的根目录下
在这里插入图片描述
然后打开nginx目录下的conf,如果里面没有nginx.conf就重下一个其他包把下面的配置文件拿过来放在conf下面
在这里插入图片描述
然后双击nginx目录下的nginx.exe就可以启动nginx啦,打开浏览器输入127.0.0.1就可以看到成功页面
在这里插入图片描述
然后再nginx.conf中添加如下配置

rtmp{
   
	server{
   
	    listen 1935;
        #转发的地址
		application live{
   
            live on;
            record off;
		}
		application hls{
   
            live on;
            hls on;
            hls_path nginx-rtmp-module/hls;
            hls_cleanup off;
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

cmd 切换到nginx目录下面 nginx.exe -s reload
重新加载nginx配置文件 nginx配置结束

2.下载ffmpeg

链接:https://pan.baidu.com/s/1LUWeVnM8Ig-2b2ubAw3t1A
提取码:1234
解压后在环境变量path中添加目录地址即可
打开cmd,输入ffmpeg -version,可以查看是否安装成功
在这里插入图片描述
使用ffmpeg命令
ffmpeg -i “rtsp流路径” -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/live/"即可对视频进行操作
具体操作如下

3.用Java操作视频

首先controller层

public class Video {
   
	/**海康摄像头rtsp格式说明:
	 * ffmpegPath:ffmpeg的安装地址(xx\\xx\\ffmpeg.exe)
	 * rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
	 * username: 用户名。例如admin。
	 * password: 密码。例如12345。
	 * ip: 为设备IP。例如 192.0.0.64。
	 * port: 端口号默认为554,若为默认可不填写。
	 * codec:有H.264、MPEG-4、mpeg4这几种。
	 * channel: 通道号,起始为1。例如通道1,则为ch1。
	 * subtype: 码流类型,主码流为main,辅码流为sub
	 * logo:添加图片水印的图片(注意windows下面的logo地址前面要写4个反斜杠如:D\\\\:/html/3.png;linux下logo水印路径:/tmp/TVLOG.png)
	 * xaxis:水印的x轴距离(左上角为原点)
	 * yaxis:水印的y轴距离(左上角为原点)
	 */
	@RequestMapping(value = "/waterMark",method = RequestMethod.POST)
	@ResponseBody
	public CommonResult waterMark(@RequestBody Map<String,String> map){
   
		log.info("进入视频添加水印的方法");
		String ffmpegPath =map.get("ffmpegPath");
		String username = map.get("username");
		String password = map.get("password");
		String ip = map.get("ip");
		String port = map.get("port");
		String codec = map.get("codec");
		String channel = map.get("channel");
		String subtype = map.get("subtype");
		String logo = map.get("logo");
		String xaxis = map.get("xaxis");
		String yaxis = map.get("yaxis");
		if (StrUtil.isEmpty(ffmpegPath)){
   
			return ResultUtils.error(-1,"ffmpeg.exe地址不能为空");
		}else if (StrUtil.isEmpty(username)){
   
			return ResultUtils.error(-1,"摄像头用户名不能为空");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/228244
推荐阅读
相关标签
  

闽ICP备14008679号