公式チュートリアル:https://riptutorial.com/opencv/example/28548/creating-a-video-with-opencv--java-
一部の個人シンプルなパッケージ、応用例:
輸入org.opencv.core.Core; 輸入org.opencv.core.Mat。 輸入org.opencv.core.Size。 輸入org.opencv.videoio.VideoCapture。 輸入org.opencv.videoio.VideoWriter。 輸入org.opencv.videoio.Videoio; パブリック クラスVideoOperatorTest { 静的{ System.loadLibraryを(Core.NATIVE_LIBRARY_NAME)。 } パブリック 静的 ボイドメイン(文字列[]引数){ 文字列は、localUrl = " /home/lab/1111.mp4 " 。 文字列outputPath = " /home/lab/2222.mp4 " 。 videoReassemble(は、localUrl、outputPath)。 } パブリック 静的 ボイドvideoReassemble(文字列inputPath、列outputPath){ VideoCaptureキャプチャ = NULL ; 作家VideoWriter = nullを。 長いスタート= にSystem.currentTimeMillis(); 試す{ キャプチャ = 新しいVideoCapture(inputPath)。 INT FOURCC = VideoWriter.fourcc(' X '、' 2 '、' 6 '、 ' 4 '); //编码方式x264の ダブルFPS =キャプチャ。取得(Videoio.CV_CAP_PROP_FPS)。//帧率 サイズフレームサイズ = 新しいサイズ((int型)キャプチャ。取得(Videoio.CAP_PROP_FRAME_WIDTH)、(int型)キャプチャ。取得(Videoio.CAP_PROP_FRAME_HEIGHT)); //宽高 ライター = 新しい VideoWriter(outputPath、FOURCC、FPS、フレームサイズ、真の); int型私= 0 ; マットフレーム = 新しいマット()。 一方、(capture.read(フレーム)){ もし(I == 0 ){ バイトバフ[] = 新しい バイト [(INT)(frame.total()* frame.channels())]。 フレーム。取得(0、0 、バフ)。 // 修改首帧像素值 frame.put(0、0 、バフ)。 } writer.write(フレーム)。 I ++ ; } } キャッチ(例外e){ e.printStackTrace(); } 最後に{ 場合(!捕獲= NULL ){ capture.release()。 } であれば(ライター!= NULL ){ writer.release()。 } } 長い端= にSystem.currentTimeMillis(); システム。アウト .println(" コストミリ:" +(終了- 開始)); } }