/ / Žiadny zvuk nie je zachytený vo videu vytvorenom pomocou FFmpegFrameGrabber, FrameRecorder JavaCv v android - android, opencv, ffmpeg, video-spracovanie, javacv

Nie je zvuk zachytený vo videu vytvorenom pomocou FFmpegFrameGrabber, FrameRecorder JavaCv v android - android, opencv, ffmpeg, video-spracovanie, javacv

Snažím sa použiť efekt šedej farby na video súbor pomocou JavaCV v android.Everything funguje dobre, ale vo výstupnom súbore nie je žiadny zvuk. Nižšie je uvedený kód. Prosím pomôžte

   File file = new File(Environment.getExternalStorageDirectory() + File.separator + "test3.mp4");

FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath());

FrameRecorder recorder = null;

Log.d("bharat", " Audio channels = " + frameGrabber.getAudioChannels()); // THIS IS RETurnING 0 and not 2

recorder = new FFmpegFrameRecorder("/mnt/sdcard/streaml_t.mp4", 270, 480, frameGrabber.getAudioChannels());

recorder.setVideoCodec(AV_CODEC_ID_H264);

recorder.setFormat("mp4");

recorder.setFrameRate(frameGrabber.getFrameRate());

recorder.setSampleFormat(frameGrabber.getSampleFormat());

recorder.setSampleRate(frameGrabber.getSampleRate());

try {
recorder.start();
frameGrabber.start();
int count = 0;
while (true) {

try {

Frame grabFrame = frameGrabber.grabFrame();
Log.d("bharat:", "frame " + count++);

if (grabFrame == null) {
System.out.println("!!! Failed cvQueryFrame");
break;

}

IplImage frame_copy = cvCreateImage(cvSize(grabFrame.image.width(), grabFrame.image.height()), IPL_DEPTH_8U, 1);

cvCvtColor(grabFrame.image, frame_copy, CV_RGB2GRAY);
grabFrame.image = frame_copy;
recorder.setTimestamp(frameGrabber.getTimestamp());
recorder.record(grabFrame);
} catch (Exception e) {
e.printStackTrace();
}

}

Log.d("bharat:", "frame done");

recorder.stop();
recorder.release();

} catch (Exception e) {

e.printStackTrace();

}

}

P. S: Zistil som, že frameGrabber.getAudioChannels () vracia 0 a nie 2 (v prípade, že to pomáha)

odpovede:

1 pre odpoveď č. 1

Raz som stretol problém v dôsledku nedostatku dokumentov v jazyku JavaCV, ako napríklad:

/**  Grab next videoframe */
public IplImage grab()
/** Grab next video or audio frame */
public Frame grabFrame()

Získate tak zvukový alebo obrazový rámec a potom sa vždy pokúsite spracovať tento obrázok ako obrázok. Mali by ste si skontrolovať, či je zvuk alebo video rámec predtým a či sa nepokúsite zavolať cvCvtColor () pre zvuk.