Java实现视频(mp4/flv/..)及图片(jpg/jpeg/png/..)给前端调用

这篇具有很好参考价值的文章主要介绍了Java实现视频(mp4/flv/..)及图片(jpg/jpeg/png/..)给前端调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本期内容总结:
在做后端开发的过程中,经常会处理到将视频或者图片返回给前端。下面将封装一种可以简单的方法,前端只需要拼接接口地址+地址链接,即可播放下载。文章来源地址https://www.toymoban.com/news/detail-601918.html

@GetMapping(value="/videoOrImagePlay")
@Slf4j
public void videoOrImagePlay(HttpServletRequest request,HttpServletResponse response,@RequestParam("path")String path){
	InputStream in = null;
	ServletOutputStream out = null;
	
	try{
		//文件后缀名校验
		String fileSuffix = path.subString(path.lastIndexOf(".") + 1);//文件后缀
		fileSuffix = fileSuffix.toLowerCase();
		//支持的文件后缀名白名单
		String[] suffixWhiteList = {"png","jpeg","jpg","gif","ico","pdf","zip","mp3","mp4","flv"};
		if(!Arrays.asList(suffixWhiteList).contains(fileSuffix.toLowerCase())){
			logger.error(unSupport fileType!);
			return;
		}
		//路径不能包含..
		if (path.contains("..")) {
			logger.error(error play path!);
			return;
		}

		File file = new file(path);
		int fSize = Integer.parseInt(String.valueOf(file.length()));

		//拼接响应类型参数值:图片
		StringBuilder type = new StringBuilder();
		String typeStr = type.append("image/").append(fileSuffix).toString();
		//图片白名单
		String[] suffixImageList = {"png","jpeg","jpg","gif","ico"};
		//视频白名单
		String[] suffixVideoList = {"mp3","mp4","flv"};
		
		if ("flv".equals(fileSuffix)){
			response.setContentType("flv-application/octet-stream");
		} else if(Arrays.asList(suffixImageList).contains(fileSuffix.toLowerCase())){
			response.setContentType(typeStr);
		} else{
			response.setContentType("video/mp4");
		}
		response.setHeader("Accept-Ranges","bytes");
		response.setHeader("Content-Disposition","attachment;fileName=" + path);
		response.setHeader("Access-Control-Allow-Origin","*");
		in = new FileInputStream(path);
		long pos = 0;
		if (null != request.getHeader("Range")){
			//断点续传
			response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
			try{
				pos = Long.parseLong((request.getHeader("Range").replaceAll("bytes=","").split("-")[0]));
				if (pos >= fSize){
					pos = 0;
				}
			}catch (NumberFormatException e){
				logger.error("NumberFormatException",e);
				pos = 0;
			}
		}
		out = response.getOutputStream();
		String contentRange = new StringBuffer("bytes ").append(pos + "").append("-").append((fSize - 1) + "").append(fSize() + "").toString();
		response.setHeader("Content-Range",contentRange);
		//设置响应头Content-Length,防止浏览器请求数据量超过实际文件大小
		response.setHeader("Content-Length","" + (fSize - pos));
		in.skip(pos);
		byte[] buffer = new byte[1024 * 10];
		int length = 0;
		while((length = in.read(buffer,0,buffer.length)) != -1){
			out.write(buffer,0,length);
		} 
	}catch (Exception e){
		if (org.apache.commons.lang3.StringUtils.containsIgnoreCase(ExceptionUtils.getMessage(e),"ClientAbortException")){
			logger.error("ClientAbortException");
		} else {
			logger.error("Play FileStorage Failed",e);
		}
	}finally{
		try{
			if(null != out){
				out.flush();
			}
			if(null != out){
				out.close();
			}
			if(null != in){
				in.close();
			}
			
		}catch(IOException e){
			logger.error("IOException!",e);
		}
	}
}

到了这里,关于Java实现视频(mp4/flv/..)及图片(jpg/jpeg/png/..)给前端调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端vue播放m3u8、flv、mp4视频的方法

    安装依赖 npm install video.js --save // 视频播放器插件 npm install videojs-contrib-hls --save // 播放hls流插件 页面引入插件 页面中的使用 简介:flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。 开源地址: https://github.com/Bilibili/flv.js/ 安装依

    2024年02月13日
    浏览(54)
  • 调库实现简单的AES,ECC,SHA-256,支持文本(txt)、图片(png)、音频(mp4)

    一、设计要求 在设计和实现系统时,选择调用了以下密码库: Bouncy Castle (BC): 用于实现椭圆曲线密码学(ECC)算法,确保系统安全传输密钥的过程。 Java Cryptography Architecture (JCA): 用于实现对称加密算法(如AES)和SHA-256哈希算法等,提供主流密码学算法的支持。 支持的数据类

    2024年01月25日
    浏览(52)
  • Flv格式视频怎么转MP4?视频格式转换方法分享

    FLV格式的视频是一种早期的视频格式,不支持更高的分辨率和比特率,这意味着视频的清晰度和质量受限制,无法很好地保留细节和质量,这种格式的视频已经逐渐被更高质量的视频格式所替代,例如MP4格式,不仅具有很好的兼容性,编辑起来也很方便,下面教大家几种flv转

    2024年02月13日
    浏览(54)
  • 视频转码:掌握mp4视频格式转FLV视频的技巧,视频批量剪辑方法

    在多媒体时代,视频格式的转换成为一种常见的需求。把MP4格式转换为FLV格式,FLV格式的视频文件通常具有较小的文件大小,同时保持了较好的视频质量。批量剪辑视频的方法能大大提高工作效率。下面来看云炫AI智剪如何进行MP4到FLV的转码,如何批量剪辑视频的方法。 转码

    2024年01月19日
    浏览(55)
  • java如何将图片转为MP4视频并配音

    最近前端小伙伴给我提了一个难题,让我在后端实现一个图片转MP4视频并配音乐,然后提供一个接口给他下载,我虽然没做过相关的功能,但本着不会就抄的的原则,还是硬着头皮答应了… 话不多说,开整! 首先我先在网上搜搜有没有相关demo,还真搜到了 这里附上原文链接 https://clo

    2024年02月16日
    浏览(48)
  • ffmpeg 将视频帧转换成jpg、png等图片

    有时播放实时流的时候有截图的需求,需要将解码出来的图片保存本地或上传服务器,这时就需要将avframe中的数据编码成png、jpg等格式的图片,我们使用ffmpeg的相关编码器就可以实现功能。 首先需要查找图片编码器,比如jpg为AV_CODEC_ID_MJPEG,png为AV_CODEC_ID_PNG 示例代码: 有了

    2024年02月02日
    浏览(40)
  • video.js 视频截图、录制、自定义全屏,hls、flv、mp4视频播放

    功能 video.js内嵌 截图、录制功能 (图片、视频会下载到本地) 自定义全屏 播放hls、flv、mp4 功能集合成Vue组件 参考 video.js components RecordRTC demo video 截图并下载 video.js添加自定义组件的方法 使用RecordRTC对video视频进行录制 播放hls、flv、mp4 安装 引入 html 引入组件(视频地址使

    2023年04月08日
    浏览(42)
  • 使用FFMPEG分离mp4/flv文件中的264视频和aac音频

    ffmpeg 4.4 一个MP4或flv格式的视频文件 大致分为以下几个简单步骤: 1.使用avformat_open_input 函数打开文件并初始化结构AVFormatContext 2.查找是否存在音频和视频信息 3.构建一个h264_mp4toannexb比特流的过滤器,用来给视频avpaket包添加头信息 4.打开2个输出文件(音频, 视频) 5.循环读

    2024年02月15日
    浏览(44)
  • python学习之合并多张图片转成mp4视频代码实现

    随着现代科技飞速发展和人们提升视觉上体验,利用图片生成视频的方法,确实为工作或者提升生活体验感做了很多成功案例: 1、简单的幻灯片演示,如展示旅游照片、产品展示等; 2、改编图片动画,如口红试色、时尚大片中的效果; 3、制作日记式的视频内容,将一段长

    2023年04月21日
    浏览(68)
  • Java将JPG/PNG图片转换为WEBP格式,以及WEBP转换成JPG/PNG格式

    越来越多的网站采用了webp格式的图片,webp占用空间小,传送更快,画质不降低。经常会遇到图片格式转换的需求,我们可以借助第三方的包,通过Java实现来PG/PNG图片转换为WEBP格式,以及WEBP转换成JPG/PNG格式。 1.maven项目依赖 在pom.xml加入下面的内容 2.代码分享

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包