【发布时间】:2021-10-01 12:41:16
【问题描述】:
我试过了
cv::VideoCapture cap( argv[1] );
unsigned f = (unsigned)cap.get( cv::CAP_PROP_FOURCC );
cout << "f: " << f << endl;
但 f 的输出为 0。 视频文件的编解码器是H.264。
【问题讨论】:
标签: c++ xcode opencv ffmpeg codec
我试过了
cv::VideoCapture cap( argv[1] );
unsigned f = (unsigned)cap.get( cv::CAP_PROP_FOURCC );
cout << "f: " << f << endl;
但 f 的输出为 0。 视频文件的编解码器是H.264。
【问题讨论】:
标签: c++ xcode opencv ffmpeg codec
首先,您的类型转换是基于 unsigned 的。最好使用以下类型:
int f = static_cast<int>(cap.get(cv::CAP_PROP_FOURCC));
之后根据documentation,您应该通过位运算符进行从 int 到 char 的转换。
cv::VideoCapture cap("/ur/video/dir/video.mp4");
int ex = static_cast<int>(cap.get(cv::CAP_PROP_FOURCC)); // Get Codec Type- Int form
char EXT[] = {(char)(ex & 0XFF) , (char)((ex & 0XFF00) >> 8),(char)((ex & 0XFF0000) >> 16),(char)((ex & 0XFF000000) >> 24), 0};
std::cout<<ex<<std::endl;
【讨论】: