简体   繁体   English

无法使用Xuggler编码视频

[英]Can't encode video with Xuggler

I'm trying to create simple application with Xuggler, which has to encode sequence of pictures into video. 我正在尝试使用Xuggler创建简单的应用程序,该程序必须将图片序列编码为视频。 I've installed xuggler, as described in official site. 如官方网站所述,我已经安装了xuggler。 Here is example of code (which I've actually found on Xuggler wiki site) 这是代码示例(实际上我已经在Xuggler Wiki网站上找到了)

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.xuggle.mediatool.IMediaViewer;
import com.xuggle.mediatool.IMediaWriter;
import com.xuggle.mediatool.ToolFactory;
import com.xuggle.xuggler.ICodec;

import static com.xuggle.xuggler.Global.DEFAULT_TIME_UNIT;
import static java.util.concurrent.TimeUnit.SECONDS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;


public class Test {

    private static final Logger log = LoggerFactory.getLogger(Test.class);
    {
        log.trace("<init>");
    }

    public static void main(String[] args) {

        final long duration = DEFAULT_TIME_UNIT.convert( 3, SECONDS );

        final int videoStreamIndex = 0;
        final int videoStreamId = 0;
        final long frameRate = DEFAULT_TIME_UNIT.convert(15, MILLISECONDS);
        final int width = 320;
        final int height = 200;

        long nextFrameTime = 0;

        final IMediaWriter writer = ToolFactory.makeWriter("/out.mov");

        writer.addVideoStream(videoStreamIndex, videoStreamId, 
                      width, height);

        while ( nextFrameTime < duration )
            {
                BufferedImage frame = new BufferedImage( 320, 200, BufferedImage.TYPE_INT_RGB );
                Graphics2D gr = (Graphics2D) frame.getGraphics();
                gr.setColor(Color.RED);
                gr.drawLine(0, 0, 200, 200);
                writer.encodeVideo(videoStreamIndex, frame, nextFrameTime, 
                       DEFAULT_TIME_UNIT);
                nextFrameTime += frameRate;
            }

        writer.close();

    }

}

After launching, I've got exception: 启动后,我有一个例外:

Exception in thread "main" java.lang.UnsupportedOperationException: No converter "null" found.
    at com.xuggle.xuggler.video.ConverterFactory.createConverter(ConverterFactory.java:313)
    at com.xuggle.mediatool.MediaWriter.convertToPicture(MediaWriter.java:967)
    at com.xuggle.mediatool.MediaWriter.encodeVideo(MediaWriter.java:812)
    at Test.main(Test.java:48)

Could you advise me something to solve this problem? 您能建议我一些解决此问题的方法吗? Thanks 谢谢

Xuggler is complaining that it cannot find a converter for the BufferedImage. Xuggler抱怨找不到BufferedImage的转换器。

Create the BufferedImage with BufferedImage.TYPE_3BYTE_BGR instead of BufferedImage.TYPE_INT_RGB 使用BufferedImage.TYPE_3BYTE_BGR而不是BufferedImage.TYPE_INT_RGB创建BufferedImage.TYPE_INT_RGB

See http://wiki.xuggle.com/Encoding_Video_from_a_sequence_of_Images for more information 有关更多信息,请参见http://wiki.xuggle.com/Encoding_Video_from_a_sequence_of_Images

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM