1. 程式人生 > >[Java] 序列化 Images 轉換成 AVI/MOV 以及多個AVI的合併

[Java] 序列化 Images 轉換成 AVI/MOV 以及多個AVI的合併

Java Media Framework 中,有很完整的範例程式 JMF 2.1.1 Solutions ,它可以將 jpeg 弄成 mov 影片,並且又提供 merge 的範例,但無論我怎樣試,都沒辦法把兩個 mov 再串成一個 mov ,儘管程式在編譯或執行上都沒有顯示任何問題(除了範例程式使用 Vector 沒有指定 type),但合併的結果卻不是正常的,真讓我十分灰心。

import ch.randelshofer.media.avi.AVIOutputStream;
import java.io.*;
import java.awt.image.BufferedImage ;
import javax.imageio.ImageIO;

class test
{
        public static void main( String[] args ) throws Exception
        {
                if( args.length < 2 )
                {
                        System.out.println( "Usage> test file_out 1.jpg" );
                        System.exit( -1 );
                }
                AVIOutputStream out = null;
                out = new AVIOutputStream( new File( args[0] ) , AVIOutputStream.VideoFormat.JPG );
                out.setVideoCompressionQuality( 1f );
                out.setTimeScale(1);
                out.setFrameRate(1);

                for( int i=1 ; i <args.length ; ++i )
                {
                        out.writeFrame( ImageIO.read(new File( args[i] ) ) );
                }
                out.close();
        }
}

如此一來,就能夠用 java test out.avi 1.jpg 2.jpg 3.jpg 來產生影片啦!

關於 Merge 的部分,暫時沒有 Java 版的成果,以下是相關的參考資料,但我尚未測試成功。

關於將兩個影片串在一起,其實早就有範例可用啦!

用上述的範例程式就可以成功把我作的影片合併再一起!

如果是 C 的版本,那有 Transcode 可以用喔,裡頭有一支 tool 叫 avimerge ,它可以很成功的將我用上述 Java 程式產生影片合併串在一起。最後,若純粹只是想把 jpeg 串成影片,或將影片再合併起來,滿推薦使用 mencoderTranscode - avimerge ,前者有需要可以再參考這篇

製作 Motion JPEG (Mjpeg) 影片 - 將連續的照片串成影片