2014-12-03 3 views
2

opencv videoWriter를 사용하여 비디오 파일을 가져 오려고합니다. 하지만 다음과 같은 문제가 얻을 :OpenCV VideoWriter가 작동하지 않습니다.

>[libx264 @ 0x132b680] broken ffmpeg default settings detected 
>[libx264 @ 0x132b680] use an encoding preset (e.g. -vpre medium) 
>[libx264 @ 0x132b680] preset usage: -vpre <speed> -vpre <profile> 
>[libx264 @ 0x132b680] speed presets are listed in x264 --help 
>[libx264 @ 0x132b680] profile is optional; x264 defaults to high 
>Could not open codec 'libx264': Unspecified error!!! Output video could not be opened 

내 시스템에 libx264을 수행하십시오, 그래서이 마지막 줄에 그냥 부작용

내가 실행하는 데 노력하고있어 코드를 추측하는 것은 How to write video file in OpenCV 2.4.3에서 가져온 예입니다 .

int main (int argc, char *argv[]){ 
// Load input video 
VideoCapture input_cap("testi.mp4"); 
if (!input_cap.isOpened()) 
{ 
     std::cout << "!!! Input video could not be opened" << std::endl; 
     return -1; 
} 

// Setup output video 
cv::VideoWriter output_cap("testo.mp4", 
       input_cap.get(CV_CAP_PROP_FOURCC), 
       input_cap.get(CV_CAP_PROP_FPS), 
       cv::Size(input_cap.get(CV_CAP_PROP_FRAME_WIDTH), 
       input_cap.get(CV_CAP_PROP_FRAME_HEIGHT))); 

if (!output_cap.isOpened()) 
{ 
     std::cout << "!!! Output video could not be opened" << std::endl; 
     return -1; 
} 


// Loop to read from input and write to output 
cv::Mat frame; 

while (true) 
{  
    if (!input_cap.read(frame))    
     break; 

    output_cap.write(frame); 
} 

input_cap.release(); 
output_cap.release(); 

return 0; 
} 

비슷한 문제가있는 게시물을 발견했습니다. 아무도 아직 제대로 답변하지 않았습니다.
opencv가 libav 대신 old fmmpeg를 사용하고 있는지 확인하라는 메시지가 나타났습니다. libb는 신선한 빌드이고 우분투에는 ffmpeg가 없기 때문에 아닙니다.

답변

0

Dimazavr의 대답은 완전히 옳지 않습니다. 먼저 출력 비디오 파일 이름 확장자를 .mp4에서 .avi으로 변경해야합니다.

OpenCV Error: Unsupported format or combination of formats (Gstreamer Opencv backend does not support this codec.) in CvVideoWriter_GStreamer::open, file /home/rwduzhao/store/opencv-2.4.13/modules/highgui/src/cap_gstreamer.cpp, line 1372 
terminate called after throwing an instance of 'cv::Exception' 
    what(): /home/rwduzhao/store/opencv-2.4.13/modules/highgui/src/cap_gstreamer.cpp:1372: error: (-210) Gstreamer Opencv backend does not support this codec. in function CvVideoWriter_GStreamer::open 

Aborted (core dumped) 

중 하나 opencv2.4에서 cv::VideoWriterlibx264 형식이나 avi 확장 libx264 형식과 호환되지 않습니다 지원하지 않습니다 의미 : 당신이 코드를 실행하면 그런 다음, 다음과 같은 오류 정보를 얻을 것이다. libx264 코덱을 사용하지 않는 것이 좋습니다. 당신은 CV_FOURCC에서 지원하는 다음과 같은 코덱 형식 목록을 시도 할 수 있습니다 : 내 경험에서

CV_FOURCC('P','I','M','1') = MPEG-1 codec 
CV_FOURCC('M','J','P','G') = motion-jpeg codec 
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec 
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec 
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec 
CV_FOURCC('U', '2', '6', '3') = H263 codec 
CV_FOURCC('I', '2', '6', '3') = H263I codec 
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec 

CV_FOURCC('D', 'I', 'V', 'X')의 품질이 괜찮습니다. 또한 cv_fourcc-1으로 설정하면 시스템에서 지원되는 코덱 형식 중 하나를 GUI 창에서 선택할 수 있습니다. 실행중인 프로세스 here을 볼 수 있습니다.

2

VideoWriter는 .mp4 확장자를 지원하지 않습니다. 대신 .avi를 사용하십시오.

관련 문제