- 浏览: 957112 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
JAVA目前的转化库没发现过,网上提供的方案是通过java作为外壳,调用底层的转化程序。
由于每个转化程序,实现的支持的转化编码不一样,因此需要多个配合使用
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
支持采集摄像头或者其他视频来源
视频格式转换功能
视频截图功能
给视频加水印功能
使用ffmpeg 视频添加水印(logo)。
mencoder 是一款命令行方式的视频处理软件,是Mplayer自带的编码工具(Mplayer是Linux下的播放器,开源,支持几乎所有视频格式的播放,有windows和Mac版本)。
ffmpeg不支持rm,rmvb, wmv9转化成flv。先用mencoder将这三种格式的视频转成avi,再将avi转成flv。当然,这样加重系统的负担,mencoder转rm,rmvb视频的速度远低于ffmpeg。另一种做法是先生成flv,再直接利用flv生成缩略图,可以减少系统开销,这种方式看起来更合理。
Vcdgear:DAT是VCD中的格式,利用上面两种工具也无法直接转换,必须先用vcdgear转换成avi,再通过avi转成flv。转avi的过程是很迅速的,比其他转换过的快好几个数量级。
Flvmdi:如果直接利用mencoder转换成flv,缺少meta信息,会造成播放时没有进度条等问题,需要再用flvmdi修复一下。
JAVA调用:
Java提供了两个类来允许调用外部程序:
(1)、ProcessBuilder
(2)、Runtime
Java调用时是将外部程序作为进程来创建的,这里涉及到一个进程阻塞的问题:只有当父进程结束的时候才会调用转换进程,也不能采用多线程来控制。经过细心百度,发现以往也有人遇到过而且解决了。现把方法列出来:
可以考虑使用两个线程来同时清空process获取的两个输入流,如下这段程序:
……
Process process = Runtime.getRuntime.exec(command); // 调用外部程序
final InputStream is1 = process.getInputStream();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new Buffered(new InputStreamReader(is));
while(br.readLine() != null) ;
}
}.start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is2 = process.getErrorStream();
BufferedReader br2 = new Buffered(new InputStreamReader(is2));
StringBuilder buf = new StringBuilder(); // 保存输出结果流
String line = null;
while((line = br.readLine()) != null) buf.append(line); // 循环等待ffmpeg进程结束
System.out.println("输出结果为:" + buf)
在线转换思路:
1、用户上传各种格式的视频,记录下视频存储路径,将转换状态置为0,即未转换。当然大文件上传采用ActiveX,你会用VB写吧?
2、服务器端开启转换进程查询未转换视频。这里有两种方式,一种是采用单线程,即每次从数据库中取一条没有转换的视频信息。方式为:while(){select top 1}。 这种方式转换效率上不是很高,可以采用多线程方式,一般设置一个线程队列,五个或者十个这个样子。不过转视频是很费CPU的事,所以最好不要设得太多,免得搞死机了。
3、转换时的存储问题。转换后的文件名、缩略图名,存储位置这些都应该规定起来,一般情况下视频文件都很多很大,所以存储基本上都要搞阵列。
4、转换时的参数,如工具路径、缩略图大小、视频清晰度、分辨率等可以用一个配置文件来配置,这样做比较录活。
可能有的读者会比较纳闷,为什么你老在说转成FLV,为什么不转成其他格式呢?这主要是我们现在流媒体服务器RED5支持FLV,而且感觉听起来也比较新奇。当然上面的工具的功能远不止于此,由于水平和需要所限,我们只初步研究了转FLV。
本文有很多不足之处,来源于自身知识的浅薄,请大家指出并探讨。
由于每个转化程序,实现的支持的转化编码不一样,因此需要多个配合使用
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
支持采集摄像头或者其他视频来源
视频格式转换功能
视频截图功能
给视频加水印功能
使用ffmpeg 视频添加水印(logo)。
mencoder 是一款命令行方式的视频处理软件,是Mplayer自带的编码工具(Mplayer是Linux下的播放器,开源,支持几乎所有视频格式的播放,有windows和Mac版本)。
ffmpeg不支持rm,rmvb, wmv9转化成flv。先用mencoder将这三种格式的视频转成avi,再将avi转成flv。当然,这样加重系统的负担,mencoder转rm,rmvb视频的速度远低于ffmpeg。另一种做法是先生成flv,再直接利用flv生成缩略图,可以减少系统开销,这种方式看起来更合理。
Vcdgear:DAT是VCD中的格式,利用上面两种工具也无法直接转换,必须先用vcdgear转换成avi,再通过avi转成flv。转avi的过程是很迅速的,比其他转换过的快好几个数量级。
Flvmdi:如果直接利用mencoder转换成flv,缺少meta信息,会造成播放时没有进度条等问题,需要再用flvmdi修复一下。
JAVA调用:
Java提供了两个类来允许调用外部程序:
(1)、ProcessBuilder
(2)、Runtime
Java调用时是将外部程序作为进程来创建的,这里涉及到一个进程阻塞的问题:只有当父进程结束的时候才会调用转换进程,也不能采用多线程来控制。经过细心百度,发现以往也有人遇到过而且解决了。现把方法列出来:
可以考虑使用两个线程来同时清空process获取的两个输入流,如下这段程序:
……
Process process = Runtime.getRuntime.exec(command); // 调用外部程序
final InputStream is1 = process.getInputStream();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new Buffered(new InputStreamReader(is));
while(br.readLine() != null) ;
}
}.start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is2 = process.getErrorStream();
BufferedReader br2 = new Buffered(new InputStreamReader(is2));
StringBuilder buf = new StringBuilder(); // 保存输出结果流
String line = null;
while((line = br.readLine()) != null) buf.append(line); // 循环等待ffmpeg进程结束
System.out.println("输出结果为:" + buf)
在线转换思路:
1、用户上传各种格式的视频,记录下视频存储路径,将转换状态置为0,即未转换。当然大文件上传采用ActiveX,你会用VB写吧?
2、服务器端开启转换进程查询未转换视频。这里有两种方式,一种是采用单线程,即每次从数据库中取一条没有转换的视频信息。方式为:while(){select top 1}。 这种方式转换效率上不是很高,可以采用多线程方式,一般设置一个线程队列,五个或者十个这个样子。不过转视频是很费CPU的事,所以最好不要设得太多,免得搞死机了。
3、转换时的存储问题。转换后的文件名、缩略图名,存储位置这些都应该规定起来,一般情况下视频文件都很多很大,所以存储基本上都要搞阵列。
4、转换时的参数,如工具路径、缩略图大小、视频清晰度、分辨率等可以用一个配置文件来配置,这样做比较录活。
可能有的读者会比较纳闷,为什么你老在说转成FLV,为什么不转成其他格式呢?这主要是我们现在流媒体服务器RED5支持FLV,而且感觉听起来也比较新奇。当然上面的工具的功能远不止于此,由于水平和需要所限,我们只初步研究了转FLV。
本文有很多不足之处,来源于自身知识的浅薄,请大家指出并探讨。
发表评论
-
servlet3.0 异步servlet
2019-07-26 16:29 417假设一种情况,你的一个servlet会处理比较长的时间,而且这 ... -
Spring 定时任务,cron表达式,@Scheduled cron表达式
2016-04-25 15:48 5296一个cron表达式有至少6 ... -
tomcat https
2015-09-02 13:50 691一、 什么是HTTPS 在说HTTPS之前先说说什么是HTT ... -
关于使用s.url jstl的上下文
2015-08-16 13:28 915比如 [@s.url '/'/]index.html?cote ... -
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
2015-08-14 09:52 2005Neither the JAVA_HOME nor the J ... -
web.xml url-pattern
2015-08-03 01:54 573全站匹配 /* 而不是*,因为jee标准要求url-pat ... -
servlet3.0
2014-11-13 23:04 441异步处理支持 首先,Servlet 接收到请求之后,可能首先需 ... -
java获取当前类的绝对路径
2013-12-14 00:37 8951.如何获得当前文件路径 常用: (1).Test.class ... -
Tomcat Content is not allowed in prolog
2013-07-10 10:19 1339Apache-Tomcat 运行问题 Content is n ... -
整站国际化方案
2012-11-28 17:46 1106当前常见的实现方式,主要由两种方案实现 1.通过locale ... -
java
2012-09-06 14:04 0循环的性能 考点说明 1 ... -
java
2012-09-06 14:01 0有继承关系的类之间的 ... -
在eclipse中启动tomcat很慢
2012-06-07 10:36 1682这个原因可能是断点过多,删除所有断点后,就不会了。 -
Unicode 各种特殊字符编码值
2012-02-25 15:13 6725https://developer.mozilla.org/c ... -
iframe下面的session问题
2011-12-04 19:52 5318在写iframe完成长连接获取上传状态的时候,有两次请求,一次 ... -
but failed to unregister it when the web application was stopped. To preven t a
2011-08-19 23:41 8517错误信息: 信息: Deploying configurati ... -
filter比servlet更适合做dispatcher filter servlet
2011-04-19 09:30 1142filter比servlet更适合做dispatcher。 原 ... -
request总结
2011-03-27 00:56 11581.getAuthType() 返回用来保护servlet的认 ... -
Java垃圾回收机制
2011-03-15 12:53 903转载自http://wcgdonot.iteye.com/bl ...
相关推荐
.net 视频编码转换技术 在本文中,我们将探讨如何使用 .net 实现视频编码转换,包括视频上传、格式转换、文件保存等步骤。 一、视频上传 在 .net 中,我们可以使用 ASP.NET 的 FileUpload 控件来实现视频上传。...
编码是将原始视频数据转化为特定格式的过程,这通常涉及到视频压缩,以减少文件大小而不显著降低质量。解码则是相反的过程,将已编码的视频数据还原为可播放的形式。转换器在执行格式转换时,会先解码源文件,然后以...
TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,在 Canopus ProCoder v2.0 Final 推出以前,一直是视频转换领域的画质冠军,支持 VCD、SVCD、DVD 以及所有主流媒体格式 (Windows Media、Real ...
总结来说,"视频上传并转换编码成flv格式"涉及了前端的文件上传,ASP后端的文件处理,FFmpeg进行视频编码转换,以及流媒体服务器的配置和使用。这些技术的组合使得在线视频服务能够高效、流畅地运行,为用户提供无缝...
从标签“h264 编码转换”我们可以看出,这个工具的核心功能就是处理视频编码转换,这涉及到视频编解码的原理和技术。视频编码涉及帧间预测、熵编码、变换编码等技术,通过这些技术去除视频数据中的冗余信息,降低...
TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,根据我的使用情况,比 Canopus ProCoder v2.0 Final 转换画质要高,速度要快,支持剪辑。应该是视频转换领域的画质冠军,支持 VCD、SVCD、DVD ...
在Android平台上进行视频编码涉及到多个技术领域,包括多媒体处理、编码算法、硬件加速以及第三方库的集成。FFmpeg是一个强大的开源跨平台多媒体框架,广泛应用于音频和视频处理,包括编码、解码、转换和流传输等...
视频编码是将原始视频数据转换为可传输或存储的形式的过程,它通过减少冗余和利用视觉感知特性来压缩数据。常见的视频编码标准有MPEG、H.264、H.265(HEVC)以及最新的AV1和VVC等。设计一个高效的视频编码芯片能够...
TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,在 Canopus ProCoder v2.0 Final 推出以前,一直是视频转换领域的画质冠军,支持 VCD、SVCD、DVD 以及所有主流媒体格式 (Windows Media、Real ...
视频编码是将原始视频数据转换为适合网络传输或存储的形式的过程。它通过去除冗余信息和利用人类视觉系统的特性来压缩视频数据,同时保持视觉质量。视频编码的基本思想包括帧内预测、帧间预测、变换编码、量化、熵...
高效视频编码(High Efficiency Video Coding,HEVC),也...`.yuv`到`.265`的转换过程是这一技术的实际应用,而`HomerHEVC-master`这样的项目则提供了学习和研究HEVC编码的平台,有助于进一步理解和优化视频编码技术。
鉴于当前的高效视频编码标准并未考虑人类视觉的特性,本文提出了一种基于恰到好处的失真模型(JND)的感知视频编码算法。 调整后的JND模型在高效视频编码(HEVC)中被组合到变换量化过程中,以消除更多的视觉冗余并...
视频编码是指将连续的图像帧转换为数字编码的过程,目的是在保证画质的前提下,尽可能减少数据量,以便于存储、传输和处理。编码过程包括帧间预测、变换、量化、熵编码等步骤,这些步骤旨在去除视频信号中的冗余信息...
视频编码和转换软件是数字媒体处理中的重要工具,主要用于将原始视频数据转化为不同的格式,以适应不同的设备播放、存储或网络传输的需求。在本场景中,我们关注的是将AVI格式的视频转换成MP4格式。 AVI(Audio ...
标签“编码器”明确了我们讨论的是视频编码工具,这关乎到将原始视频数据转换成可存储、传输或播放的格式。 压缩包内的文件“HapQuickTimeSetup.msi”很可能是hap codec的安装程序,针对QuickTime环境。这表明hap ...
视频编码技术是数字媒体处理中的核心部分,它用于将连续的图像帧转化为可以在网络上传输或存储的数字信号。在“视频编码技术介绍视频.zip”这个压缩包中,包含的两个FLV文件“视频压缩编码动画-1.flv”和“视频压缩...
分布式视频编码的核心概念是将传统的编码流程转换为两个主要部分:信源编码器和信道编码器。在DISCOVER框架中,信源编码器负责对原始视频流进行初步处理,生成一组带有冗余信息的编码片断。这些片断随后由信道编码器...
视频编码技术是数字媒体处理中的核心部分,它关乎着视频数据的高效存储和流畅传输。在本主题中,我们将深入探讨视频编码的全角度解析,包括其基本原理、主要技术以及常见编码标准。 首先,我们要理解视频编码的基本...
视频编码是数字媒体处理的关键技术,它通过高效的数据压缩方式,减少视频文件的大小,从而降低存储和传输的成本。在过去的几十年里,一系列的视频编码规范相继推出,如MPEG2、MPEG4、H.264以及更新的HEVC、AV1等。...
Android使用MediaCodec将摄像头采集的视频编码为h264 Android平台上,MediaCodec是Android 4.1(Jelly Bean)引入的一个新的多媒体编码解码器框架,它提供了一个统一的接口来访问各种硬件编码器和解码器。...