- 浏览: 139489 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
zheng_zhimeng:
这个版本在linux的版本下有问题,亲们用的没有问题么
文档展示:IcePDF 将PDF转换为图片 -
yuming.xiao:
转换的某些图片,有些模糊。不知道楼主遇到这个问题没有
文档展示:IcePDF 将PDF转换为图片 -
zenghongqing:
您好,请教您一个问题://cell内容字符串总宽度 doub ...
Java POI Excel 行高自适应 -
xiang37:
http://xiva.iteye.com/blog/2066 ...
视频分割项目预研 -
I白I:
怎么还配置数据库了?
视频分割项目预研
由于工作需要,研究下视频切割。
现在的情况:视频切割是重中之重,后续项目功能按照这个功能来扩展的。
由于ffmpeg名声太响,就从它开始了,开发平台暂时用windows;组件暂时用32位的。
第一步: 到ffmpeg官网下载ffmpeg组件
http://www.ffmpeg.org/
http://www.ffmpeg.org/download.html
http://ffmpeg.zeranoe.com/builds/
下载后的组件
第二部:搭建Java项目
新建Java项目
添加日志
jar包:log4j-1.2.13.jar
log4j配置
日志测试
配置配置文件
配置文件config.properties
读取配置文件
测试
第三步:使用ffmpeg获取视频信息
测试结果截图
然后再看一下怎么切割视频
测试结果
之后就是处理多种格式的视频,音频;结合原有项目添加视频切割功能;处理大文件时的考量;配置测试linux环境的视频切割功能等等杂事。
相当于截屏!
可以的,这就相当于把视频按帧分割
相当于截屏!
现在的情况:视频切割是重中之重,后续项目功能按照这个功能来扩展的。
由于ffmpeg名声太响,就从它开始了,开发平台暂时用windows;组件暂时用32位的。
第一步: 到ffmpeg官网下载ffmpeg组件
http://www.ffmpeg.org/
http://www.ffmpeg.org/download.html
http://ffmpeg.zeranoe.com/builds/
下载后的组件
第二部:搭建Java项目
新建Java项目
添加日志
jar包:log4j-1.2.13.jar
log4j配置
# Global logging configuration log4j.rootLogger=INFO,stdout,ADMINLOG,error #log4j.logger.common=DEBUG #log4j.category.common.TestLog4j=debug # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n log4j.appender.stdout.Target=System.out #File output... log4j.appender.ADMINLOG=org.apache.log4j.DailyRollingFileAppender log4j.appender.ADMINLOG.Append=true log4j.appender.ADMINLOG.DatePattern='_'yyyyMMdd'.log' log4j.appender.ADMINLOG.layout=org.apache.log4j.PatternLayout log4j.appender.ADMINLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n log4j.appender.ADMINLOG.File=Log.log log4j.appender.ADMINLOG.Threshold=INFO log4j.appender.error=org.apache.log4j.FileAppender log4j.appender.error.File=log_error.log log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n log4j.appender.error.Threshold=ERROR
日志测试
配置配置文件
配置文件config.properties
ffmpeg_home=D:/ffmpeg/ffmpeg-20140611-git-b2fb65c-win32-static/ db_url=jdbc:oracle:thin:@localhost:1521:orcl db_username=username db_password=password
读取配置文件
package com.zas.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesUtil { private static Properties properties = new Properties(); static{ try { InputStream in = new FileInputStream(new File("config.properties")); properties.load(in); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static String get(String key){ return properties.getProperty(key); } public static void set(String key, String value){ properties.setProperty(key, value); } public static int getForInt(String key){ String value = properties.getProperty(key); return Integer.valueOf(value); } }
测试
第三步:使用ffmpeg获取视频信息
package com.zas.ffmpeg; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.zas.util.PropertiesUtil; public class FFmpegHelloWord { static Logger logger = Logger.getLogger(FFmpegHelloWord.class); final static String FFMPEG_HOME = PropertiesUtil.get("ffmpeg_home"); final static String TEST_FILE = "D:/ffmpeg/video/Wildlife.wmv"; /** * ffmpeg之旅开始 获取一个视频的基本信息 */ private static void helloFFmpeg() { List<String> commandList = new ArrayList<String>(); commandList.add(FFMPEG_HOME + "/bin/ffmpeg "); commandList.add("-i"); commandList.add(TEST_FILE); ProcessBuilder builder = new ProcessBuilder(); builder.command(commandList); builder.redirectErrorStream(true); //视频信息结果 StringBuffer videoInfo = new StringBuffer(); long beginTime = System.nanoTime(); try { Process p = builder.start(); //保存ffmpeg的输出结果流 BufferedReader buf = null; buf = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while ((line = buf.readLine()) != null) { logger.info(line); videoInfo.append(line); } p.waitFor();// 这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行 } catch (IOException e) { e.printStackTrace(); logger.error(e); } catch (InterruptedException e) { e.printStackTrace(); logger.error(e); } long endTime = System.nanoTime(); logger.info("处理耗时: " + (endTime - beginTime) / 1000000 + " 毫秒。 "); logger.info("视频信息: " + videoInfo); } public static void main(String[] args) { FFmpegHelloWord.helloFFmpeg(); } }
测试结果截图
然后再看一下怎么切割视频
package com.zas.ffmpeg; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.zas.util.PropertiesUtil; public class VideoCutting { static Logger logger = Logger.getLogger(VideoCutting.class); final static String FFMPEG_HOME = PropertiesUtil.get("ffmpeg_home"); // final static String TEST_FILE = "D:/ffmpeg/video/Wildlife.wmv"; final static String TEST_FILE = "D:/ffmpeg/video/1111.wmv"; final static String OUTPUT_PATH = "D:/ffmpeg/video/output.wmv"; /** * 使用ffmpeg 截取特定时长视频 */ private static void cutting() { //ffmpeg -ss 00:5:28 -i "1111.wmv" -acodec copy -vcodec copy -t 00:03:25 output.wmv //这行命令解释为:从文件 1111.wmv 第 5:28 分秒开始,截取 03: 25 的时间,其中视频和音频解码不变,输出文件名为 output.wmv 。 List<String> commandList = new ArrayList<String>(); commandList.add(FFMPEG_HOME + "/bin/ffmpeg "); commandList.add("-ss"); commandList.add("00:5:28"); commandList.add("-i"); commandList.add(TEST_FILE); commandList.add("-acodec"); commandList.add("copy"); commandList.add("-vcodec"); commandList.add("copy"); commandList.add("-t"); commandList.add("00:03:25"); commandList.add(OUTPUT_PATH); ProcessBuilder builder = new ProcessBuilder(); builder.command(commandList); builder.redirectErrorStream(true); //视频信息结果 StringBuffer videoInfo = new StringBuffer(); long beginTime = System.nanoTime(); try { Process p = builder.start(); //保存ffmpeg的输出结果流 BufferedReader buf = null; buf = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while ((line = buf.readLine()) != null) { logger.info(line); videoInfo.append(line); } p.waitFor();// 这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行 } catch (IOException e) { e.printStackTrace(); logger.error(e); } catch (InterruptedException e) { e.printStackTrace(); logger.error(e); } long endTime = System.nanoTime(); logger.info("处理耗时: " + (endTime - beginTime) / 1000000 + " 毫秒。 "); logger.info("视频信息: " + videoInfo); } public static void main(String[] args) { VideoCutting.cutting(); } }
测试结果
之后就是处理多种格式的视频,音频;结合原有项目添加视频切割功能;处理大文件时的考量;配置测试linux环境的视频切割功能等等杂事。
- log4j-1.2.13.jar (349.8 KB)
- 下载次数: 7
评论
5 楼
xiang37
2014-06-12
http://xiva.iteye.com/blog/2066590 可以参考一下我博客写的,使用dll操作的,不过功能没有接全,也可以移植到liunx平台。
4 楼
I白I
2014-06-12
怎么还配置数据库了?
3 楼
zhuyufufu
2014-06-12
freezingsky 写道
bewithme 写道
好文章,这个东东能把视频文件切成一张张图片吗?
相当于截屏!
可以的,这就相当于把视频按帧分割
2 楼
freezingsky
2014-06-11
bewithme 写道
好文章,这个东东能把视频文件切成一张张图片吗?
相当于截屏!
1 楼
bewithme
2014-06-11
好文章,这个东东能把视频文件切成一张张图片吗?
发表评论
-
oracle按照某一字段里的数字排序
2014-10-21 19:59 1095select * from LSK_SBCAJ t ord ... -
JS onkeydown onenter
2014-10-20 16:53 1010html中 onenter不是一个标准的事件。 js 中仿o ... -
Java数组删除指定元素
2014-09-18 11:30 2264package com.zas.util; impo ... -
sql 去重
2014-09-18 10:43 660delete from table t1 where t1.i ... -
linux 干掉所有java进程
2014-08-07 12:31 1036ps -ef|grep java|grep -v grep|c ... -
Oracle自带连接池使用(转载收录)
2014-07-31 10:01 1415最近在搞数据迁移:从sql server 迁数据到oracle ... -
html dom jsoup httpclient
2014-07-10 21:45 1129xml dom 对大多数java程序员来说并不陌生,但是htm ... -
Oracle 清库脚本
2014-07-08 22:40 1320清库脚本一份 表dossier_group 的字段Dossi ... -
Java 对象存储到oracle Blob字段
2014-07-08 14:52 1106Java 数据对象在没有持久存储到业务表时,可能需要临时存 ... -
Java 科学计数法数字转字符串
2014-07-08 14:30 1519科学计数法数字转字符串,记录代码,留后使用 double ... -
突破tomcat jsp编译65535行的限制
2014-07-04 17:16 4805使用tomcat时有可能会遇到其对jsp编译行数的限制, ... -
oracle 函数中游标及递归的应用
2014-06-19 17:13 1429在代码中使用递归可能大部分程序员都不陌生,但是在存储过程或 ... -
视频操作类
2014-06-19 17:04 1149接 视频分割项目预研 http://zhuyufufu.i ... -
Java POI Excel 行高自适应
2014-03-28 14:08 15934在Excel处理的过程中,可能有需要用到行高自适应的时候。 ... -
Java POI Excel sheet 合并遇到的问题解决2
2014-03-25 18:03 3269上接 Java POI Excel sheet 合并 http ... -
文档展示:使用iText转换各种图片为PDF
2014-03-23 12:38 2925如题: 下面这段代码可以处理各种格式的图片,代码的出处忘记了 ... -
Java 进程执行外部程序,造成外部程序阻塞的一种原因
2014-03-23 12:06 1470前一阵子在研究文档展示时使用了java进程直接调用外部程序 ... -
Java POI Excel sheet 合并遇到的问题解决
2014-03-23 11:30 5134上接 Java POI Excel sheet http:// ... -
Java POI Excel sheet合并
2014-03-19 10:59 6640由于工作上的需要,特地研究了下Excel合并的问题,现贴出来, ... -
文档展示:IcePDF 将PDF转换为图片
2014-02-11 16:35 4982上接 文档展示:PDFRender 将PDF转换为图片 htt ...
相关推荐
在现代国防项目管理中,项目预研阶段的重要性不言而喻。它不仅仅是一个技术准备阶段,更是为整个项目奠定理论和实践基础的关键过程。预研的成败在很大程度上决定了后续项目的可行性和最终成果的实用性。本文将深入...
【企业管理项目预研】是企业或组织在开展大型项目前进行的一种重要准备工作,旨在降低风险、提高项目的成功率。预研管理涉及多个层面,包括技术、财务、人力资源等多个方面,尤其在国防项目中,预研更显得至关重要。...
【预研型项目管理】是企业为应对未来市场不确定性,提前投入研发的一种策略。预研项目分为技术预研和产品预研,它们都是为了在市场竞争中抢占先机,通过探索新技术或新产品的可行性,为企业长远发展奠定基础。 一、...
《项目管理技术预研报告模板》是一份针对项目管理中技术预研阶段的重要参考资料,它旨在为项目团队提供一个清晰、规范的框架,以便于系统地进行技术预研工作,确保项目的顺利启动和实施。这份报告通常包含了项目背景...
《企业管理项目预研管理》是关于企业如何有效地进行项目启动和管理的专业培训资料,由国家项目管理认证专家、客座教授以及国际项目管理资质认证评估师沈建明讲解。该内容着重介绍了项目启动阶段的关键步骤,包括识别...
在项目管理的专业培训项目中,预研管理是其至关重要的环节,它贯穿了项目启动至执行的全过程,涉及从项目识别到投标的各个环节。本文将深入探讨项目预研管理的内涵、实施步骤以及其在项目成功中所扮演的角色。 项目...
软件项目技术预研模板知识点 技术预研是软件项目中一个重要的过程,它涉及到技术的评估、选择和实施。技术预研模板是指在软件项目中,用于指导技术预研活动的文档模板。 技术预研的目的 技术预研的目的是为了评估...
项目管理是企业管理中的核心环节,尤其在项目预研阶段,其重要性不言而喻。项目预研管理涉及从项目识别到项目启动的全过程,它为项目的成功奠定了基础。在这个过程中,需求的识别和需求建议书的编写是关键步骤。 ...
项目管理在IT行业中扮演着至关重要的角色,尤其在企业项目预研阶段,有效的管理能确保项目的成功启动和执行。项目预研管理主要包括三个关键环节:识别需求、项目识别和项目投标。 1. 识别需求:这是项目管理的第一...
项目预研报告是进行项目立项前的关键步骤,它详尽地评估了项目的可行性和潜在价值。这份"(完整版)项目预研报告模板"涵盖了多个重要方面,为项目的成功执行提供了全面指导。 首先,项目研究的意义在于理解当前的国内...
技术预研作为项目初期的关键步骤,旨在探索并评估潜在的技术解决方案,以确保项目的技术可行性与创新性。本资源包——"IT项目管理表单大全-技术预研篇(10个文档)"提供了全面的工具和模板,帮助项目经理和团队高效...
《软件技术预研方案》是软件开发过程中至关重要的一步,它是对新技术或新方法进行探索和研究的蓝图,旨在确保项目的技术可行性,并为后续的软件开发阶段奠定基础。以下是基于提供的文档部分内容对软件技术预研方案的...
软件项目技术预研计划的目的是为了在项目启动之前,通过系统性的研究、调查和验证,提前评估和确定项目的关键技术、架构、方法和工具。以下是软件项目技术预研计划的主要目的: 1. **技术可行性验证:** 预研计划...
**软件项目技术预研报告**是项目管理中的关键文档,其主要目的是为项目干系人、决策者和团队成员提供关于技术预研活动的详细信息和结论,以便于制定明智的决策并规划项目的后续步骤。以下是对报告主要内容的详细解释...
项目预研报告是启动新项目前的关键步骤,它旨在评估项目的可行性和潜在价值。以下是基于提供的文件内容提炼出的关键知识点: 1. **项目研究的意义**:预研报告首先需要阐述项目研究的重要性和必要性,包括它对当前...
预研项目总结报告(模板).pdf
预研项目是企业为了应对未来的不确定性,尤其是面对潜在市场和技术发展趋势,而进行的一种前瞻性研究。这类项目通常不追求短期的经济效益,而是着眼于长远的战略优势和市场先机。 报告的结构清晰,包括多个关键部分...
《XXX技术预研计划》是项目管理中的一个重要文档模板,主要针对即将进行的技术探索和研究活动进行规划和安排。这份文档通常包含以下几个关键部分: 1. **技术预研目标**: - 这一部分需要清晰地定义技术预研的目标...
国防预研项目立项评价指标评价标准的制定与应用 在科技日新月异的今天,国防科技的发展已成为国家安全的重要保障。国防预研项目立项评价指标评价标准(以下简称“评价标准”)应运而生,成为评判项目合理性的关键。...
《XXX项目》技术预研报告,作为一份专业的软件开发过程控制文档,不仅对技术背景进行了深入的分析和研究,还对项目的后续开展提供了明确的技术方向和决策依据。 报告的撰写首要考虑的是目的性。通过阐明预研的目的...