`

java播放二进制 Flv视频

    博客分类:
  • JAVA
 
阅读更多

视屏播放与图片展示展示一样,一般把图片或者视屏放到服务器或者资源服务器,或者CDN上通过URL的方式访问,也可以通过以流的方式输出到客户端浏览器,flv的视屏播放示例如下

 

一.创建一个web项目

1.创建一个servlet

 

/**
 * Servlet implementation class FlvBFServlet
 */
@WebServlet("/FlvBFServlet")
public class FlvBFServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FlvBFServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) {
		
		response.reset();
		response.setCharacterEncoding("utf-8");
		response.setContentType("video/x-flv;charset=utf-8");
		 
		HttpURLConnection connection = null; 
		ByteArrayOutputStream bos = null;
		BufferedInputStream bis = null;
		
		try{
	        // new URL("xx")为flv文件地址,根据实际路径调整
	        URL url = new URL("http://abc.com/download/lesson301.flv");

	        connection = (HttpURLConnection) url.openConnection();
	        // 设置连接超时时间
	        connection.setConnectTimeout(10000);
	        // 设置读超时时间
	        connection.setReadTimeout(10000);
	        // 打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)
	        connection.connect();

	        // 获得响应状态信息
	        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK){
	           return;
	        }
	        
	        //每次读取的字节数
	        byte[] bytes = new byte[1024];
	        
	        //获得输入流
	        bis =  new BufferedInputStream(connection.getInputStream(), connection.getContentLength());
			
	        //每次读取的字节长度
	        int len;
			
	        //设置输入流
			bos = new ByteArrayOutputStream(bis.available());
			
			while((len = bis.read(bytes, 0, bytes.length)) != -1){
				bos.write(bytes, 0, len);
			}
 			response.getOutputStream().write(bos.toByteArray());
	        response.flushBuffer();
	        
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				bos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			try {
				bis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			connection.disconnect();
		}
        
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 
		doGet(request, response);
	}

 

 

2.创建flv.jsp 在根目录

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="640" height="480" id="VideoPlayer" align="middle"> 
<param name="allowScriptAccess" value="*" /> 
<param name="allowFullScreen" value="true" /> 
<param name="movie" value="http://abc.com/download/flvplayer.swf" /> 
<param name"quality" value="high" />
<param name="bgcolor" value="#ffffff" /> 
<embed src="http://abc.com/download/flvplayer.swf" quality="high" bgcolor="#000000" width="640" height="480" name="VideoPlayer" align="middle" allowScriptAccess="*" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"
	flashvars="vcastr_file=http://localhost:8080/YangUp/FlvBFServlet"
 /> 
</object>

</body>
</html>

 

 

    其中:http://mgrtest.roadshowcenter.com/download/flvplayer.swf flv视屏播放器自行下载即可,放到指定的路径,此处也要做相应的调整

       vcastr_file:http://localhost:8080/YangUp/FlvBFServlet 获取输出流的服务器的服务器请求地址

 

3.启动服务访问

http://localhost:8080/YangUp/flv.jsp  就可以看见期望的内容了

 

4.可以对访问资源的请求做些条件限制,比如用户,header中的Referer 以及请求ULR的时效限制等

 

 

分享到:
评论

相关推荐

    java读取flv

    Java读取FLV文件是Java开发中涉及到多媒体处理的一个应用场景,通常用于视频流的解析、播放或者转换。FLV(Flash Video)是一种流行的网络视频格式,广泛用于在线视频分享平台,如YouTube。以下是对这个主题的详细...

    LZW解压缩、JAVA2D、音频和视频截取、媒体播放器的文档

    在Java中,Java Media Framework (JMF) 是一种用于播放、捕获、处理和记录音频和视频的开源框架。通过JMF,开发者可以实现音视频的实时捕获,例如从摄像头或麦克风,以及从文件中截取特定时间段的音频和视频数据。这...

    jsp在ie 火狐 360 搜狗等浏览器播放Flv格式视频。

    SWF是Adobe Flash的二进制文件格式,用于在Web上展示动画或交互式内容。 7. **`movies`**:这个文件名可能表示一个目录,其中包含了待播放的FLV视频文件。在实际项目中,JSP可能会根据需求动态地加载这个目录中的...

    Java实现视频网站的视频上传及视频播放功能.docx

    表单提交时,`&lt;form&gt;`标签的`enctype`属性需设置为`multipart/form-data`,以允许文件作为二进制数据上传。服务器端,通过HttpServlet或Controller接收文件,并将其存储到服务器的特定目录或云存储服务。 其次,...

    01_Java语言发展史.flv

    能够计算二进制和十进制数之间的互转 能够使用常见的DOS命令 理解Java语言的跨平台实现原理 理解JDK和JRE的组成和作用 能够配置环境变量JAVA_HOME 能够编写HelloWorld程序编译并执行 理解关键字的含义 理解标识符的...

    对于任意一个文件进行压缩,压缩后的文件名为原文件名称去掉后缀加上.hz,例如,原来的未压缩文件的名字为a.txt,压缩后为a.hz

    (c) 压缩内容不再是文本字符数据,而是任意二进制文件,请压缩附件中的“全球变暖的公益广告视频”(qqbn_gygg.flv)。 注意:(a) 先假设压缩的文件的长度都不大,不考虑效率问题,可以使用缓存。 (b) 以前的霍夫曼...

    Java实现文件格式转换代码实例

    最后,提到Base64编码,这是一种将二进制数据转换为可打印字符的方法,通常在HTTP头或电子邮件中用于传输非ASCII字符。在Java中,我们可以使用`java.util.Base64`类来进行编码和解码操作。例如,如果你想将转换后的...

    纯java播放器内核

    这要求了解音频和视频编码解码原理,以及如何使用Java处理这些二进制数据。 3. **解码器**:为了播放音频和视频,需要使用合适的解码器将压缩的数据转换为原始的音频波形和视频帧。开发者可能需要编写自定义解码器...

    JSP源码——FLVCode.zip

    FLV格式是一种二进制文件格式,用于存储音频和视频数据。JSP源码中处理FLV文件可能涉及以下几个方面: - **读取与解码**:通过Java库如Xuggler或JAVE读取和解码FLV文件,提取音频和视频流。 - **流媒体服务**:创建...

    FLVCode.zip项目JAVA源码+资料打包下载

    首先,FLV是一种广泛用于在线视频流媒体的文件格式,它由Adobe Systems开发,主要用于在Flash Player上播放视频。FLVCode项目旨在实现对这种格式的解析、编码和解码功能,这对于网络视频服务提供商或开发者来说,...

    视频转换插件ffmpeg.rar

    对于Java开发者,他们可能需要在服务器上部署FFmpeg二进制文件,然后通过Java的Runtime.exec()方法执行FFmpeg命令,实现视频处理服务。此外,对于FLV(Flash Video)格式的处理,FFmpeg也提供了很好的支持,可以方便...

    文件转换swf/flv

    5. 文件I/O操作:读取和写入文件,处理二进制数据。 6. 编码和解码算法:如何正确处理视频帧和音频样本。 7. 时间线同步:确保视频和音频在转换后能正确同步。 8. 错误处理和兼容性:考虑不同文件版本、编码设置等...

    java调用ffmpeg实现转换视频

    下载完成后,需要将 FFmpeg 的二进制文件添加到系统的环境变量中,以便 Java 语言可以调用 FFmpeg 的命令。 Java 调用 FFmpeg 的步骤 Java 调用 FFmpeg 实现转换视频的主要步骤包括: 1. 研究 Java 如何调用外部...

    Java多媒体处理工具包

    1. **视频解码器**:这部分负责读取和理解原始视频文件的编码格式,将二进制数据转化为可处理的帧图像。 2. **音频解码器**:与视频解码器类似,音频解码器解析音频流并将其转化为可播放的声音。 3. **编码器**:...

    ijkPlayer安卓端所需编译后的so库,支持所有视频格式

    在安卓项目中,动态链接库(SO库)是非常关键的部分,因为它们包含了运行时需要的二进制代码。这些SO库通常对应于C/C++代码,由于安卓系统支持JNI(Java Native Interface),所以可以很方便地与Java代码进行交互。...

    FLVCode.rar

    在深入研究FLVCode.rar的内容之前,需要先解压文件,然后根据具体文件类型(如源代码、文档、二进制程序等)来进一步探索其中的知识点。如果涉及到编程,可能需要具备一定的编程基础,如理解编解码原理,熟悉C++、...

    利用ffmpeg实现RTSP,RTMP推流以及保存到本地录像文件

    这是从 xdisp_virt项目剥离出来的, 实现 实时的 H264 + AAC 编码 音频和视频的 ...bin目录是已经编译好的二进制文件. 有兴趣可查看BLOG: https://blog.csdn.net/fanxiushu/article/details/80996391

    FFmpeg视频工具的梳理

    - 在Java中使用FFmpeg时,需要确保FFmpeg二进制文件(binaries)在系统路径中可访问,或者直接指定二进制文件路径。 4. FFmpegUtil.java代码解析: - `FFmpegUtil.runCommand(String command)`方法是执行FFmpeg...

    ffmpeg媒体播放器

    - `bin`: 编译后的二进制文件和资源输出目录。 - `res`: 应用的资源文件,如布局、图片、字符串等。 - `assets`: 存放应用的原始数据文件,通常用于存放非资源文件,如配置文件或大文本数据。 - `gen`: 自动生成...

    vitamio5.0.2

    4. 可能还包括必要的资源文件,如图标、字体或者音频解码所需的二进制库。 集成Vitamio库的步骤通常包括: 1. 将Vitamio库添加到项目的依赖管理(如Gradle)。 2. 在AndroidManifest.xml中添加必要的权限,如读取...

Global site tag (gtag.js) - Google Analytics