2017-03-07 3 views
0

내 목표는 기존의 MP4 비디오를 열고 프레임을 처리 한 다음 주로 OpenCV을 통해 기본 개념 입증 앱을 만드는 것입니다.iOS 10에서 OpenCV 3.1을 사용하여 VideoWriter로 파일을 만들 수 없습니다.

비디오를 열고 프레임을 처리 할 수 ​​있지만 성공적으로 다시 쓸 수 없었습니다. 온라인에서 찾은 작은 문학은 효과가 없거나 답이 없습니다.

다음 내가 파일을 작성하기위한 시도 첫 번째 방법입니다 :

NSString *path = [[NSBundle mainBundle] pathForResource:@"MyVideo" ofType:@"mp4"]; 
std::string filename = path.UTF8String; 
self.videoCapture = cv::VideoCapture(filename); 
if(!self.videoCapture.isOpened()) std::cout << "Unable to open source" << std::endl; 

int width = static_cast<int>(self.videoCapture.get(CV_CAP_PROP_FRAME_WIDTH)); 
int height = static_cast<int>(self.videoCapture.get(CV_CAP_PROP_FRAME_HEIGHT)); 
double fps = self.videoCapture.get(CV_CAP_PROP_FPS); 
cv::VideoWriter videoWriter("output.mp4", self.videoCapture.get(CV_CAP_PROP_FOURCC), fps, cv::Size(width, height)); 
if (!videoWriter.isOpened()) 
{ 
    std::cout << "Unable to open writer" << std::endl; 
    return; 
} 

이 방법 한 가지 즉각적인 문제는 내가 폭, 높이, FPS와 다른 거의 아무것도 얻을 값이 CV_CAP에 관한 것입니다 항상 1입니다. 특정 파일 형식에 문제가 있다는 내용을 읽었지만 mp4, mov 및 mkv와 함께 발생하므로 도움이되지 않습니다.

다음으로 비디오에 대해 알고있는 것을 사용하여 값을 하드 코딩했지만 작성자를 열 수없는 동일한 결과를 얻었습니다. 그것은 가치가 무엇인지에 대한

NSString *path = [[NSBundle mainBundle] pathForResource:@"MyVideo" ofType:@"mp4"]; 
std::string filename = path.UTF8String; 
self.videoCapture = cv::VideoCapture(filename); 
if(!self.videoCapture.isOpened()) std::cout << "Unable to open source" << std::endl; 
cv::VideoWriter videoWriter("output.mkv", CV_FOURCC('m','p', '4', 'v'), 30, cv::Size(1920, 1080)); 

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

, 나는 기존 출력 파일 약이되는 문제를 읽었다, 그래서 나는 운이없이, &이 이름을 변경할 파일을 삭제.

또한 FOURCC 값을 몇 가지 다른 형식으로 변경했습니다. & 출력 이름을 업데이트했는데 성공하지 못했습니다.

답변

0

나는 또한 처리 된 비디오를 저장할 수 없기 때문에 cv::VideoWriter으로 고생했습니다.

마지막으로 지금은 내가 AVAssetWriter 사용하고,이를 주었다. 나는 누군가가이 문제를 해결하기를 바란다 (