[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 串成影片,或將影片再合併起來,滿推薦使用 mencoder
和 Transcode
- avimerge ,前者有需要可以再參考這篇