これは、AndroidでJavaCVとffmpegを使用してビデオのサイズを変更するために使用しているコードです-
FFmpegFrameGrabber grabber = new FmpegFrameGrabber("/sdcard/DCIM/100MEDIA/VIDEO0066.mp4");
grabber.start();
int w = (int)grabber.getImageWidth()/2;
int h = (int)grabber.getImageHeight()/2;
if (w%2 != 0) w=w-1;
if (h%2 != 0) h=h-1;
FrameRecorder recorder = new FFmpegFrameRecorder("/sdcard/DCIM/output.mov", w, h ,grabber.getAudioChannels());
recorder.setVideoCodec(avcodec.CODEC_ID_MPEG4);
recorder.setPixelFormat(avutil.PIX_FMT_YUV420P);
recorder.setAudioCodec(avcodec.CODEC_ID_PCM_S16LE);
recorder.start();
Frame frame = null;
while ((frame = grabber.grabFrame()) != null)
{
IplImage source = frame.image;
if (source!=null)
{
IplImage destination = cvCreateImage(cvSize(w , h), source.depth(), source.nChannels() );
cvResize(source, destination);
frame.image = destination;
recorder.record(frame);
}
}
ビデオよりも元の幅と高さを使用すると音声付きですが、w/2 と h/2 を使用すると出力ファイルは音声なしになります。お知らせ下さい。