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

本文介绍了如何使用Java处理视频,结合nginx和ffmpeg,实现类似直播的视频水印添加。首先下载并配置nginx,接着下载ffmpeg并确保安装成功。然后通过Java控制器层和工具类操作视频,在Vue前端进行展示。最后进行测试,确认rtsp流地址可用。
摘要由CSDN通过智能技术生成


如何用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;
		}
	}
}

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,"摄像头用户名不能为空");
		}else if (StrUtil.isEmpty(password)){
   
			return ResultUtils.error(-1,"摄像头密码不能为空");
		}else if 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值