JAVE视频处理

Posted kdes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVE视频处理相关的知识,希望对你有一定的参考价值。

一.通过JAVE可以实现视频剪切,压缩,提取音乐等操作

   1.jar包的导入请看这里:https://www.cnblogs.com/KdeS/p/13215089.html

   2.参考文档:http://www.sauronsoftware.it/projects/jave/manual.php#6

二 .关键文档介绍

音频/视频编码

最重要的JAVE类是it.sauronsoftware.jave.Encoder编码器对象公开了许多用于多媒体转码的方法。为了使用JAVE,您始终必须创建一个Encoder

Encoder encoder = new Encoder();

创建实例后,您可以开始调用encode()方法进行转码

public void encode(java.io.File source,
                   java.io.File target,
                   it.sauronsoftware.jave.EncodingAttributes attributes)
            throws java.lang.IllegalArgumentException,
                   it.sauronsoftware.jave.InputFormatException,
                   it.sauronsoftware.jave.EncoderException

第一个参数source表示要解码的源文件。

第二个参数target,是将要创建和编码的目标文件。

所述属性参数,其类型为it.sauronsoftware.jave.EncodingAttributes,是含有由编码器所需要的任何信息的数据结构。

请注意,对encode()的调用是一个阻塞的调用:该方法仅在转码操作完成(或失败)后才返回。如果您有兴趣监视代码转换操作,请查看“ 监视代码转换操作 ”部分。

 

编码属性

要指定有关转码操作的首选项,您必须向encode()调用提供it.sauronsoftware.jave.EncodingAttributes实例您可以创建自己的EncodingAttributes实例,并可以使用以下方法填充它:

  • public void setAudioAttributes(it.sauronsoftware.jave.AudioAttributes audioAttributes)
    设置音频编码属性。如果从未在新的EncodingAttributes实例上调用,或者给定参数为null,则编码文件中将不包含音频流。另请参阅“ 音频编码属性 ”。
  • public void setVideoAttributes(it.sauronsoftware.jave.AudioAttributes videoAttributes)
    它设置视频编码属性。如果从未在新的EncodingAttributes实例上调用,或者给定参数为null,则编码文件中将不包含任何视频流。另请参阅“ 视频编码属性 ”。
  • public void setFormat(java.lang.String format)
    它设置将用于新编码文件的流容器的格式。给定的参数表示格式名称。编码格式名称仅当出现在使用Encoder实例getSupportedEncodingFormats()方法返回的列表中时才有效且受支持
  • public void setOffset(java.lang.Float offset)
    它设置代码转换操作的偏移量。源文件将从其开始的偏移秒数开始重新编码例如,如果您想剪切源文件的前五秒,则应传递给编码器EncodingAttributes对象调用setOffset(5)
  • public void setDuration(java.lang.Float duration)
    它设置代码转换操作的持续时间。源的持续时间秒数将被重新编码到目标文件中。例如,如果您想从源中提取并转码三十秒的一部分,则应传递给编码器EncodingAttributes对象调用setDuration(30)

音频编码属性

音频编码属性由it.sauronsoftware.jave.AudioAttributes的实例表示此类对象的可用方法是:

  • public void setCodec(java.lang.String codec)
    它设置将用于音频流的代码转换的编解码器的名称。您必须从当前Encoder实例getAudioEncoders()方法返回的列表中选择一个值否则,您可以传递AudioAttributes.DIRECT_STREAM_COPY特殊值,该值需要从源文件复制原始音频流。
  • public void setBitRate(java.lang.Integer bitRate)
    它为新的重新编码的音频流设置比特率值。如果未设置比特率值,则编码器将选择默认值。该值应以每秒位数表示。例如,如果您想要128 kb / s的比特率,则应调用setBitRate(new Integer(128000))
  • public void setSamplingRate(java.lang.Integer bitRate)
    它为新的重新编码的音频流设置采样率。如果未设置采样率值,则编码器将选择默认值。该值应以赫兹表示。例如,如果您想要类似CD的44100 Hz采样率,则应调用setSamplingRate(new Integer(44100))
  • public void setChannels(java.lang.Integer channels)
    它设置将在重新编码的音频流中使用的音频通道数(1 =单声道,2 =立体声)。如果未设置任何通道值,则编码器将选择默认值。
  • public void setVolume(java.lang.Integer volume)
    可以调用此方法来更改音频流的音量。值为256表示音量不变。因此,小于256的值表示音量减小,而大于256的值将增大音频流的音量。

视频编码属性

视频编码属性由it.sauronsoftware.jave.VideoAttributes的实例表示此类对象的可用方法是:

    • public void setCodec(java.lang.String codec)
      它设置将用于视频流转码的编解码器的名称。您必须从当前Encoder实例getVideoEncoders()方法返回的列表中选择一个值否则,您可以传递VideoAttributes.DIRECT_STREAM_COPY特殊值,该值需要从源文件复制原始视频流。
    • public void setTag(java.lang.String tag)
      它设置与重新编码的视频流关联的标签/ fourcc值。如果未设置任何值,则编码器将选择默认值。多媒体播放器通常使用标签值来选择在流上运行哪个视频解码器。在示例中,将使用播放器使用的默认DivX解码器对带有“ DIVX”标签值的MPEG 4视频流进行解码。顺便说一下,这就是DivX的确切含义:带有附加的“ DIVX”标签/ fourcc值的MPEG 4视频流!
    • public void setBitRate(java.lang.Integer bitRate)
      它为新的重新编码的视频流设置比特率值。如果未设置比特率值,则编码器将选择默认值。该值应以每秒位数表示。例如,如果您想要360 kb / s的比特率,则应调用setBitRate(new Integer(360000))
    • public void setFrameRate(java.lang.Integer bitRate)
      它为新的重新编码的音频流设置帧速率值。如果未设置比特率帧速率,则编码器将选择默认值。该值应以每秒帧数表示。例如,如果您想要30 f / s的帧速率,则应调用setFrameRate(new Integer(30))
    • public void setSize(it.sauronsoftware.jave.VideoSize size)
      它设置视频流中图像的大小和比例。如果未设置任何值,则编码器将保留原始大小和比例。否则,您可以使用首选大小传递 it.sauronsoftware.java.VideoSize实例。您可以使用像素值设置新编码视频的宽度和高度,并缩放原始视频。例如,如果您要将视频缩放到宽度为512像素,高度为384像素,则应调用setSize(new VideoSize(512,384))

获取有关多媒体文件的信息

在对现有多媒体文件进行转码之前,可以调用编码器getInfo()方法来获取有关现有多媒体文件的信息的getInfo()方法为您提供了有关文件和有关其包裹音频和视频流所用的容器的信息:

public it.sauronsoftware.jave.MultimediaInfo getInfo(java.io.File source)
                                             throws it.sauronsoftware.jave.InputFormatException,
                                                    it.sauronsoftware.jave.EncoderException

一个it.sauronsoftware.jave.MultimediaInfo对象使用it.sauronsoftware.jave.AudioInfoit.sauronsoftware.jave.VideoInfo的实例来封装有关整个多媒体内容及其流的信息,以描述包装的音频和视频。这些对象类似于 EncodingAttributesAudioAttributesVideoAttributes的对象,但是它们以只读模式工作。查看与JAVE发行版捆绑在一起的JAVE API javadoc文档,以获取有关它们的更多详细信息。

以上是关于JAVE视频处理的主要内容,如果未能解决你的问题,请参考以下文章

jave 获取音视频文件的大小以及播放时长

java 视频压缩

java 视频压缩

JAVE实现音频截取并上传OSS

java 代码获取视频时长

Android YouTube Player API Fragment无法手动处理触摸事件