Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用FFmpegFrameGrabber和FrameRecorder JavaCv创建的视频中没有捕获声音_Android_Opencv_Ffmpeg_Video Processing_Javacv - Fatal编程技术网

在android中使用FFmpegFrameGrabber和FrameRecorder JavaCv创建的视频中没有捕获声音

在android中使用FFmpegFrameGrabber和FrameRecorder JavaCv创建的视频中没有捕获声音,android,opencv,ffmpeg,video-processing,javacv,Android,Opencv,Ffmpeg,Video Processing,Javacv,我正在尝试在android中使用JavaCV对视频文件应用灰度效果。一切正常,但输出文件中没有音频。下面是代码。请帮忙 File file = new File(Environment.getExternalStorageDirectory() + File.separator + "test3.mp4"); FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath());

我正在尝试在android中使用JavaCV对视频文件应用灰度效果。一切正常,但输出文件中没有音频。下面是代码。请帮忙

   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(); 

     } 

     }
注意:我发现frameGrabber.getAudioChannel()返回0而不是2(如果有帮助的话)

一旦我发现问题,因为JavaCV中缺少文档,比如:

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

所以你们得到音频或视频帧,然后你们总是试图把它处理成图像。您应该先检查是音频还是视频帧,不要尝试调用CVTColor()获取音频。

谢谢@Vit Shiryaev,但我已经得到了答案。我实际上使用的是javaCV 0.7,但它不起作用。然后,我更新到javaCV 0.9,它现在可以工作了。谢谢