`
xiaoao808
  • 浏览: 43637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用commonsfileupload+ffmpeg+mencoder完成视频的上传与转换(2)

 
阅读更多

这两天完善了一下视频转换这个东西,以前做的那套东西上传完之后就开始转换,无法适应大并发量下的视频转换(我觉得同时有10个ffmpeg进程在转视频服务器肯定要挂掉),所以我用了另一套方案,视频上传之后先不转换,把视频的基本信息存到数据库中,然后由程序定时的从数据库中读取数据,依次转换视频。具体做法是:1、上传文件,将文件名存入数据库,同时在数据库标明videostat字段为0(表示未转换)

  2、通过程序,每隔30秒(根据不同情况可以改变)取出一个未转换(videostat=0)且失败次数小于5(confailtime<5)的纪录

  3、开始转换视频,这里要先将数据库中videostat字段改为2(表示正在转换)不然30秒钟转换不完下个进程又会读到这条纪录开始转换......

  4、等待转换进程结束,如果成功将相应纪录的videostat字段的值改为1(表示转换成功),若转换失败则将失败次数字段加一(confailtime=confailtime+1)

  在鼓捣这东西的过程中,遇到了一个问题,如果一个进程先执行p.waitFor();方法而后输出命令行中的结果是不行的,即:

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->int flag = p.waitFor();
InputStream inErr 
= p.getErrorStream();
            InputStream inIns 
= p.getInputStream();
            BufferedReader brErr 
= new BufferedReader(new InputStreamReader(
                    inErr));
            BufferedReader brIns 
= new BufferedReader(new InputStreamReader(
                    inIns));
            
// inErr读取输出信息开始
            String strsErr = "";
            String strErr 
= brErr.readLine();
            
while (strErr != null) {
                strsErr 
= strsErr + strErr + "\n";
                System.out.println(strErr);
                strErr 
= brErr.readLine();
            }
            
// inErr读取输出信息结束

            
// inIns读取输出信息开始
            String strsIns = "";
            String strIns 
= brIns.readLine();
            
while (strIns != null) {
                strsIns 
= strsIns + strIns + "\n";
                System.out.println(strIns);
                strIns 
= brErr.readLine();
            }

如果这样执行的话进程会挂起,无法继续下午,而正确的方法是先读取命令行的数据,再来waitFor();

还有一点需要注意的是获得命令行的输出结果先要从错误流中获得,即(ErrorStream),而非从输入流(InputStream)中获得,很有用的经验。

分享到:
评论

相关推荐

    文件上传_commonsfileupload.1.2.1.zip

    标题中的"文件上传_commonsfileupload.1.2.1.zip"表明这是一个关于Apache Commons FileUpload库的1.2.1版本的压缩包。Apache Commons FileUpload是一个Java库,专门用于处理HTTP请求中的多部分/form-data数据,也...

    使用ckeditor+struts2+freemaker的图片上传

    使用`CommonsFileUpload`库处理文件上传,将图片保存到服务器的指定位置。 3. **编写FreeMarker模板**:创建一个`.ftl`文件,用来显示上传结果,包括成功信息和错误信息。 4. **配置Struts2**:在`struts.xml`中配置...

    extjs3.2+struts2实现多文件上传excel并插入到数据库

    本项目“extjs3.2+struts2实现多文件上传excel并插入到数据库”是针对这一需求的具体解决方案,利用了ExtJS 3.2前端框架和Struts2后端框架进行开发。 **ExtJS 3.2** 是一个基于JavaScript的富客户端应用框架,提供...

    ckeditor+struts2上传图片

    在IT行业中,富文本编辑器(如CKEditor)与MVC框架(如Struts2)的结合使用是常见的应用场景,特别是在构建Web内容管理系统时。CKEditor是一款强大的在线文本编辑器,提供丰富的文字编辑功能,而Struts2则是一个Java...

    commonsfileupload1.2.1_itmop.com.zip

    标签"java"提示我们这是与Java编程语言相关的技术内容,具体来说是关于文件上传的库。 根据压缩包子文件的文件名称列表,我们可以推测包含以下内容: 1. `commons-fileupload-1.2.1.jar`:这是Apache Commons ...

    Struts2+上传进度条完美运行

    Struts2通过`struts2-core`库中的`CommonsFileUpload`插件支持文件上传。你需要在Struts2的配置文件(struts.xml或struts.properties)中启用该插件,并配置相应的拦截器,如`params`和`fileUpload`拦截器。`...

    struts2 上传文件及打包下载zip

    在Struts2中,我们可以使用`Struts2`提供的`CommonsFileUpload`插件来处理文件上传。这个插件基于Apache Commons FileUpload库,允许用户通过表单提交文件。在Action类中,我们需要创建一个`File`类型的属性,与表单...

    strurs2上传 上传进度条 apple上传 等资料

    在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传。这个库提供了处理大型文件上传的能力,并允许我们跟踪上传进度。为了实现文件上传,你需要在Action类中创建一个`List&lt;CommonsFileUpload&gt;`类型的...

    strut上传详解附视频

    总之,"Struts上传详解附视频"这一主题覆盖了Struts2框架下实现文件上传的关键技术和实践技巧,对于想要学习或优化Java Web应用文件上传功能的开发者来说,是一个非常有价值的资源。通过学习这些内容,你可以更好地...

    Ext3.2 + struts 文件上传实例

    在本文中,我们将深入探讨如何使用Ext3.2与Struts框架实现文件上传功能,同时解决中文乱码问题。这两个技术结合在一起,可以为Web应用提供高效、稳定的文件上传解决方案。 首先,Ext3.2是一个JavaScript库,它提供...

    文件上传两个jar包commons-fileupload-1.3.1和commons-io-2.4

    在文件上传过程中,`commons-io`可能会被用来处理临时文件、读取文件内容或者进行文件流的转换。 这两个库的结合使用,使得在Java中实现文件上传功能变得更加简单和可靠。首先,通过Servlet容器接收HTTP请求,然后...

    struts2异步多文件上传和下载

    在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...

    使用commons-fileupload-1.2.1实现文件上传操作

    2. **配置Servlet容器**:确保Servlet容器(如Tomcat)配置允许文件上传。这通常涉及修改`web.xml`文件,增加对POST请求的最大大小限制,以防文件过大导致服务器崩溃。 3. **创建解析器**:FileUpload库提供了`...

    struts2实现文件上传显示进度条效果

    在Struts2框架中,实现文件上传并展示进度条效果是一项常见的需求,尤其对于大型文件上传,用户界面的进度反馈能提供更好的用户体验。本文将详细讲解如何在Struts2中实现这一功能。 首先,我们需要理解Struts2处理...

    struts2文件上传实例

    10. **测试**:在开发完成后,务必进行充分的测试,包括正常情况下的上传、边界条件测试(如上传空文件、超大文件、非法文件类型等)以及并发上传的测试。 以上是基于Struts2框架实现文件上传的基本步骤和关键知识...

    struts2实现多文件异步上传

    在Struts2中实现多文件异步上传是一个常见的需求,它能够提高用户体验,因为用户可以在不等待所有文件上传完成的情况下继续浏览其他页面。下面将详细解释如何在Struts2中实现这一功能。 首先,我们需要理解异步上传...

    struts2上传下载项目

    在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...

    struts2文件上传与下载

    Struts2是一个非常流行的...以上就是Struts2中文件上传与下载的基本实现,通过这些步骤,你可以实现用户在Web应用中上传和下载文件的功能。在实际项目中,还需要根据具体需求进行调整和优化,如错误处理、进度显示等。

    struts2文件上传的两种方法

    2. **Action处理**:与单文件上传类似,但在Action中需要处理一个文件数组。使用`CommonsMultipartRequestHandler`拦截器代替`params`,它可以处理多部分请求。 ```java public class MultiUploadAction extends ...

Global site tag (gtag.js) - Google Analytics