`
lyh20081984
  • 浏览: 4416 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

java flv转换 有感

阅读更多
最近一段时间由于工作原因所要求,开发的网站得有用户视频上传的功能.上传是好说,关键在于如何将用户上传视频的同时转换成flv格式,以便能便网页的flash播放器中正常播放.所以在网上寻觅了一些资料,最终确定ffmpeg这个插件.学习之后进行了些许配置,如下:
public static boolean processFLV(String ffmpegpath, String inputpath,
String outputpath) {
         List<String> commend = nejava.util.ArrayList<String>();
         commend.add(ffmpegpath);
         commend.add("-i");
commend.add(inputpath);
commend.add("-y");
commend.add("-ab");
commend.add("56");
commend.add("-ar");
commend.add("22050");
commend.add("-r");
commend.add("15");
commend.add("-s");
commend.add("300*200");
commend.add(outputpath);
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
存在的问题主要有以下几点:
其一:无法通过代码获知该上传的视频文件何时完成转换flv格式的文件(我的本意是在用户上传成功之后马上进行转换,然后删除用户上传的源视频文件,但是通过上面的代码配置,一个几M的视频文件所需要的转换时间都要几分钟,很郁闷,如何删除?).我的解决办法是在表里面加一个字段,一个字段手于保存用户上传的视频文件路径(上传到文件中,没有进数据库),另外一个字段用于保存奖要生成的flv格式的文件路径.展转反侧,还是觉得特别别扭,原本只要一个视频文件的想法现在却不得不要两个文件夹来单独保存...难道没有别的办法了?
分享到:
评论
12 楼 java新手上路 2010-07-31  
jay88489 写道
Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

http://zhanghaoeye.iteye.com/blog/552007

我就搞不懂你,为什么要用英文呢 ?
11 楼 viei 2010-01-27  
还是走异步处理,然后事后通知的路子把
10 楼 vb2005xu 2010-01-27  
就不能实现个类似触发器的功能么? 为每个视频转换加上 一个 完成事件,在这个事件中触发完成提示操作..

9 楼 snailq 2010-01-26  
我也做过这样的应用开发,我想你可能需要注意以下几个问题:
(1)首先视频转换应该作为一个单独的后台线程来处理,这样不会影响前台的其他操作。

(2)视频转换线程调用外部进程ffmpeg转换视频时,要用如下代码:

             ProcessBuilder builder = new ProcessBuilder(); 
            builder.command(commend); 
            String cmd=commend.toString();
            builder.redirectErrorStream(true);
            p=builder.start(); 
           
            //read the standard output
            stdout = new BufferedReader(new InputStreamReader(p
              .getInputStream()));
            while ((line = stdout.readLine()) != null) {
             //System.out.println(line);
             continue;
                 }
            int ret = p.waitFor();//这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行
              
            /*转换完后,进行后续操作,比如:在数据库中加一个字段,来判断是否转换成功了,是否可删除原
                视频文件;进行视频修复等*/

(3)、ffmpeg转换的视频,要flvtools修复,flash播放器才能计算出flv的播放时间,并进行拖放操作。因为ffmpeg转换原视频文件,都会破坏flv的关键帧和时间元数据。

(4) 、用mencoder在ffmpeg转flv格式前,把ffmpeg不能识别的格式,转为ffmpeg可以处理的格式。
8 楼 aoliwen521 2010-01-26  
我在linux下 wav转MP3,用的类似方式。
sox + lame
7 楼 jay88489 2010-01-26  
Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

http://zhanghaoeye.iteye.com/blog/552007
6 楼 jay88489 2010-01-26  
楼主和我几年前遇到同样的问题

http://topic.csdn.net/u/20070228/10/418a365d-cc3f-4ab7-ae4c-ccda40963a11.html
5 楼 lyh20081984 2010-01-25  
xiaoao808 写道
转换进程挂起是因为保存输出信息的缓冲区满了,我也为这个郁闷过好一阵,好在解决了,可以看看这里http://www.cnblogs.com/xiaoao808/archive/2009/08/04/1538824.html

感谢,这个困难上午已经克服了,可是我就是不懂,为啥支持的3gp格式却转换不了...
4 楼 xiaoao808 2010-01-25  
转换进程挂起是因为保存输出信息的缓冲区满了,我也为这个郁闷过好一阵,好在解决了,可以看看这里http://www.cnblogs.com/xiaoao808/archive/2009/08/04/1538824.html
3 楼 lyh20081984 2010-01-25  
为什么3gp的转换不了,生成出来的flv大小为零...
2 楼 lyh20081984 2010-01-25  
依照上面这位仁兄的说法,我加了如下代码:
Process process = builder.start();
process.waitFor();--这里未写判断,只是测试
可是出现了问题,这个方法是导致当前的本地线程等待,在此期间我反复观察转化的进度,发现一直没动,当我把整个项目停止运行之后他才又开始转换...郁闷不?
1 楼 xzqttt 2010-01-25  
使用waitFor确定builder执行成功之后,你就可以做你要的操作了

你的builder只start()了,没有判断是否执行成功

几M的要几分钟,可能是你转码服务器的性能问题,这个对服务器的CPU要求很高

相关推荐

    java源码转换FLV

    Java源码转换FLV是一项技术任务,涉及到Java编程语言与多媒体处理,特别是视频格式转换。在给定的压缩包文件中,我们预期找到的是一个Java项目,它包含了用于将源代码转换为FLV(Flash Video)格式的工具或库。FLV是...

    java把各种视频格式转化为flv

    在本场景中,我们关注的是如何使用Java将各种视频格式转换为FLV(Flash Video)格式。FLV是Adobe Flash Player支持的一种流式视频格式,常见于在线视频分享平台。 要实现这个功能,我们通常会借助于外部工具或库,...

    Easy-FLV: Java 实现的 RTSP/RTMP 到 FLV 转换器

    Easy-FLV 是一个用 Java 实现的库,它能够将 RTSP 或 RTMP 视频流转换为 FLV 格式,以便在浏览器中播放。它为实时视频监控、直播和视频流处理提供了一个高效、稳定且易于集成的解决方案。高效转换:快速将视频流转换...

    Java视频转换FLV

    Java视频转换FLV是一项在IT领域中常见的任务,主要用于将不同格式的视频文件转换为FLV(Flash Video)格式,这种格式广泛应用于网络流媒体播放。在这个过程中,我们通常会用到开源工具FFmpeg,它是一个强大的命令行...

    用java程序调用ffmpeg执行视频文件格式转换flv

    在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...

    全功能FLV转换工具

    《全面解析:FLV转换工具——Allok Video to FLV Converter》 在数字媒体的世界里,格式转换是一项不可或缺的任务,尤其是对于在线视频分享而言,FLV(Flash Video)格式因其小巧且兼容性好,被广泛应用于网站播放...

    java读取flv

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

    Flv转换器 flv转换软件

    然而,由于各种原因,我们可能需要将FLV文件转换为其他格式,如MP4、AVI或WMV等。这时,FLV转换器就派上用场了。本文将深入探讨FLV转换器及其相关知识点。 FLV转换器是一种软件工具,它的主要功能是将FLV格式的视频...

    java调用ffmpeg转换视频格式为flv

    Java调用FFmpeg转换视频格式为FLV是一个常见的任务,特别是在开发媒体处理应用程序时。FFmpeg是一个强大的跨平台命令行工具,用于处理音频和视频文件,包括转换、编码、解码、分割等操作。在Java中,我们通常通过...

    网页在线flv转换代码

    网页在线FLV转换代码主要涉及的是视频文件格式的转换技术,尤其关注FLV与其他常见视频格式(如RMVB、RM和AVI)之间的互转。在这个过程中,mencoder是一个重要的工具,它通常被用于视频编码和格式转换。下面将详细...

    原生java生成FLV格式视频文件 实现屏幕录制+录音

    刚开始学java就一直在想用java生成视频 以前用java做了个屏幕录制加录音 不过生成的不是标准的视频文件 无法通过播放器播放 下载的人还不少 因此这次参考了FLV文件规范 通过原生java生成FLV视频文件 录屏加录音 ...

    JAVA 视频转码FLV

    综上所述,JAVA实现的视频转码到FLV及截图功能,涉及到了多媒体处理的核心技术,包括视频编码与解码、流媒体格式转换以及图像处理。掌握这些知识点对于开发网络视频服务或相关应用程序至关重要。

    FLV转换器

    FLV转换器是一款高效实用的工具,专门设计用于将各种视频格式转换为FLV(Flash Video)格式。在数字化媒体盛行的时代,FLV因其体积小、加载快的特点,被广泛应用于网络流媒体播放,尤其在YouTube等视频分享网站上...

    基于Java的集视频压缩与格式转换功能的flv转mp4设计源码

    本项目是一款基于Java技术栈的视频处理工具源码,集成了视频压缩与格式转换功能,特别针对FLV到MP4的转换。项目结构包含40个文件,其中Java源文件28个,HTML文件2个,并涉及其他类型的文件如属性文件、Markdown文件...

    万能版FLV格式转换器(转换成FLV格式)

    《全面解析:万能版FLV格式转换器与FLV转换技术》 在数字媒体领域,FLV(Flash Video)格式因其在网络流媒体播放中的广泛使用而备受关注。这款名为“万能版FLV格式转换器”的工具,正如其名,能够将几乎所有的视频...

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

    本实例聚焦于Java如何实现AMR到MP3的转换,同时,该方法同样适用于其他类型的格式转换,如视频格式FLV转MP4。我们将探讨使用JAVE库、FTP协议以及Base64编码等相关技术。 首先,让我们深入了解JAVE(Java Audio ...

    网页播放FLV格式视频JAVA源码

    本文将深入探讨如何使用JAVA源码实现FLV视频在网页上的播放,并围绕这个主题分享相关知识点。 一、FLV格式视频 FLV是一种基于Adobe Flash Player的视频格式,它支持流式传输,可以实现视频的即时播放。FLV包含音频...

    纯java代码实现各种视频转flv格式,支持在线播放。

    本文将深入探讨如何使用纯Java代码实现视频转码至FLV(Flash Video)格式,并支持在线播放,而不依赖任何第三方库,从而确保高效、快速的转码过程。 首先,我们需要了解FLV格式。FLV是一种流行的网络流媒体格式,...

    FLV视频转换器绿色完美破解版

    FLV视频转换器绿色完美破解版

    BitComet FLV 转换器

    BitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet FLV 转换器 1.0.rarBitComet ...

Global site tag (gtag.js) - Google Analytics