OpenCV を試すことができます。ビデオファイルを読み取って変更する機能があり、さまざまな形式を開くことができます。C++ で利用できますが、JAVA で利用できるかどうかはわかりません。また、オーディオを解析しません。
これは、コンピュータービジョンプロジェクトで使用する私のサンプル実装です
.h ファイル
#ifndef _VPLAYER_H_
#define _VPLAYER_H_
#include #include #include #include "cv.h" #include "highgui.h"
クラスVPlayer {
パブリック: VPlayer(); 〜VPlayer();
プライベート:
CvCapture* pAvi;
IplImage* pFrame;
public: int 高さ; int 幅。int fps; int numFrames; ダブル CodecCode;
公衆:
bool LoadVideo(char * fname);
void GetFrame(int FrameNo);
void GetImage (IplImage* &pOutBuffer);
void GetProperties();
};
#endif
.cpp ファイル
#include "stdafx.h" #include "VideoPlayer_PB_1.h"
bool VPlayer::LoadVideo(char * fname){
if(pAvi)cvReleaseCapture(&pAvi);
if(!(pAvi = cvCaptureFromAVI(fname)))return false;
GetProperties();
return true;
}
VPlayer::VPlayer(){ pAvi = 0; pFrame = 0; }
VPlayer::~VPlayer(){
cvReleaseCapture(&pAvi);
}
ボイド VPlayer::GetFrame(int FrameNo){
cvSetCaptureProperty(pAvi,CV_CAP_PROP_POS_FRAMES,FrameNo);
if(!cvGrabFrame(pAvi)){ // capture a frame
printf("Could not grab a frame\n\7");
exit(0);
}
pFrame = cvRetrieveFrame(pAvi);
}
void VPlayer::GetImage (IplImage* &pOutBuffer){
pOutBuffer = cvCloneImage(pFrame);
}
void VPlayer::GetProperties(){ if(pAvi){ cvQueryFrame(pAvi); // この呼び出しは、正しいキャプチャ プロパティを取得するために必要です
Height = (int) cvGetCaptureProperty(pAvi, CV_CAP_PROP_FRAME_HEIGHT);
Width = (int) cvGetCaptureProperty(pAvi, CV_CAP_PROP_FRAME_WIDTH);
fps = (int) cvGetCaptureProperty(pAvi, CV_CAP_PROP_FPS);
numFrames = (int) cvGetCaptureProperty(pAvi, CV_CAP_PROP_FRAME_COUNT);
CodecCode = cvGetCaptureProperty(pAvi, CV_CAP_PROP_FOURCC);
}
}