`
liyixing1
  • 浏览: 957171 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

视频编码转化

阅读更多
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。
本文有很多不足之处,来源于自身知识的浅薄,请大家指出并探讨。
分享到:
评论

相关推荐

    .net 视频编码转换.docx

    .net 视频编码转换技术 在本文中,我们将探讨如何使用 .net 实现视频编码转换,包括视频上传、格式转换、文件保存等步骤。 一、视频上传 在 .net 中,我们可以使用 ASP.NET 的 FileUpload 控件来实现视频上传。...

    万能视频格式转换器

    编码是将原始视频数据转化为特定格式的过程,这通常涉及到视频压缩,以减少文件大小而不显著降低质量。解码则是相反的过程,将已编码的视频数据还原为可播放的形式。转换器在执行格式转换时,会先解码源文件,然后以...

    TMPGEncVideoMasteringWorks5.1.0.46视频编码转换工具中文汉化

    TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,在 Canopus ProCoder v2.0 Final 推出以前,一直是视频转换领域的画质冠军,支持 VCD、SVCD、DVD 以及所有主流媒体格式 (Windows Media、Real ...

    视频上传并转换编码成flv格式

    总结来说,"视频上传并转换编码成flv格式"涉及了前端的文件上传,ASP后端的文件处理,FFmpeg进行视频编码转换,以及流媒体服务器的配置和使用。这些技术的组合使得在线视频服务能够高效、流畅地运行,为用户提供无缝...

    h264编码转换工具

    从标签“h264 编码转换”我们可以看出,这个工具的核心功能就是处理视频编码转换,这涉及到视频编解码的原理和技术。视频编码涉及帧间预测、熵编码、变换编码等技术,通过这些技术去除视频数据中的冗余信息,降低...

    视频编码转换工具软件TMPGEncXpress绿色特别版V4.7.3.292

    TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,根据我的使用情况,比 Canopus ProCoder v2.0 Final 转换画质要高,速度要快,支持剪辑。应该是视频转换领域的画质冠军,支持 VCD、SVCD、DVD ...

    android 视频编码

    在Android平台上进行视频编码涉及到多个技术领域,包括多媒体处理、编码算法、硬件加速以及第三方库的集成。FFmpeg是一个强大的开源跨平台多媒体框架,广泛应用于音频和视频处理,包括编码、解码、转换和流传输等...

    视频编码芯片的设计方法

    视频编码是将原始视频数据转换为可传输或存储的形式的过程,它通过减少冗余和利用视觉感知特性来压缩数据。常见的视频编码标准有MPEG、H.264、H.265(HEVC)以及最新的AV1和VVC等。设计一个高效的视频编码芯片能够...

    小日本视频转换器

    TMPGEnc 是日本人堀浩行开发的一套老牌的高画质视频编码转换工具软件,在 Canopus ProCoder v2.0 Final 推出以前,一直是视频转换领域的画质冠军,支持 VCD、SVCD、DVD 以及所有主流媒体格式 (Windows Media、Real ...

    最新通用视频编码标准H.266VVC.pdf

    视频编码是将原始视频数据转换为适合网络传输或存储的形式的过程。它通过去除冗余信息和利用人类视觉系统的特性来压缩视频数据,同时保持视觉质量。视频编码的基本思想包括帧内预测、帧间预测、变换编码、量化、熵...

    高效视频编码(HEVC)实现视频编码

    高效视频编码(High Efficiency Video Coding,HEVC),也...`.yuv`到`.265`的转换过程是这一技术的实际应用,而`HomerHEVC-master`这样的项目则提供了学习和研究HEVC编码的平台,有助于进一步理解和优化视频编码技术。

    论文研究 - 基于JND模型的感知视频编码

    鉴于当前的高效视频编码标准并未考虑人类视觉的特性,本文提出了一种基于恰到好处的失真模型(JND)的感知视频编码算法。 调整后的JND模型在高效视频编码(HEVC)中被组合到变换量化过程中,以消除更多的视觉冗余并...

    视频编码全角度详解

    视频编码是指将连续的图像帧转换为数字编码的过程,目的是在保证画质的前提下,尽可能减少数据量,以便于存储、传输和处理。编码过程包括帧间预测、变换、量化、熵编码等步骤,这些步骤旨在去除视频信号中的冗余信息...

    视频编码、视频转换软件

    视频编码和转换软件是数字媒体处理中的重要工具,主要用于将原始视频数据转化为不同的格式,以适应不同的设备播放、存储或网络传输的需求。在本场景中,我们关注的是将AVI格式的视频转换成MP4格式。 AVI(Audio ...

    hap gup加速视频编码器

    标签“编码器”明确了我们讨论的是视频编码工具,这关乎到将原始视频数据转换成可存储、传输或播放的格式。 压缩包内的文件“HapQuickTimeSetup.msi”很可能是hap codec的安装程序,针对QuickTime环境。这表明hap ...

    视频编码技术介绍视频.zip

    视频编码技术是数字媒体处理中的核心部分,它用于将连续的图像帧转化为可以在网络上传输或存储的数字信号。在“视频编码技术介绍视频.zip”这个压缩包中,包含的两个FLV文件“视频压缩编码动画-1.flv”和“视频压缩...

    DISCOVER-分布式视频编码框架

    分布式视频编码的核心概念是将传统的编码流程转换为两个主要部分:信源编码器和信道编码器。在DISCOVER框架中,信源编码器负责对原始视频流进行初步处理,生成一组带有冗余信息的编码片断。这些片断随后由信道编码器...

    视频编码全角度解析

    视频编码技术是数字媒体处理中的核心部分,它关乎着视频数据的高效存储和流畅传输。在本主题中,我们将深入探讨视频编码的全角度解析,包括其基本原理、主要技术以及常见编码标准。 首先,我们要理解视频编码的基本...

    各主要视频编码规范的比较

    视频编码是数字媒体处理的关键技术,它通过高效的数据压缩方式,减少视频文件的大小,从而降低存储和传输的成本。在过去的几十年里,一系列的视频编码规范相继推出,如MPEG2、MPEG4、H.264以及更新的HEVC、AV1等。...

    Android使用MediaCodec将摄像头采集的视频编码为h264

    Android使用MediaCodec将摄像头采集的视频编码为h264 Android平台上,MediaCodec是Android 4.1(Jelly Bean)引入的一个新的多媒体编码解码器框架,它提供了一个统一的接口来访问各种硬件编码器和解码器。...

Global site tag (gtag.js) - Google Analytics