2014-11-05 1015 views
1

我試圖將灰度效果應用到視頻文件中使用JavaCV在android.Everything工作正常,但沒有音頻出現在輸出文件中。以下是代碼。請幫助在使用FFmpegFrameGrabber,FrameRecorder JavaCv創建的視頻中沒有聲音捕獲Android

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:我發現frameGrabber.getAudioChannels()將返回0,而不是2(在情況下,它可以幫助)

回答

1

一旦我met一個問題,由於缺乏JavaCV文檔一樣的:

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

所以,你得到的音頻或視頻幀,然後你總是試圖處理此作爲圖像。您應該先檢查它是否是音頻或視頻幀,並且不要嘗試爲音頻調用cvCvtColor()。

+0

謝謝@Vit Shiryaev,但我得到了答案。我實際上使用的是javaCV 0.7,但它不工作。然後我更新到javaCV 0.9,現在就開始工作。謝謝 – Bharat 2014-11-06 06:26:56