- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
getBackendName() 是一个成员函数,用于获取当前使用的视频编解码器后端的名称。这个函数可以帮助开发者了解正在使用的编解码器是什么,这对于调试和兼容性检查非常有用。
函数原型
cpp
String cv::VideoWriter::getBackendName () const
参数
此函数不接受任何参数
返回值
getBackendName() 函数返回一个字符串,表示当前使用的视频编解码器的名称。例如,对于 XVID 编码器,返回值可能是 "XVID" 或者 "xvid"(具体取决于实现)。
代码示例
cpp
#include <iomanip>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <fstream>
int main()
{
// 设置视频的宽度和高度
int frameWidth = 640;
int frameHeight = 480;
// 设置视频编码器的 FourCC 代码
// 使用 XVID 编码器作为替代方案
int fourcc = cv::VideoWriter::fourcc( 'X', 'V', 'I', 'D' );
// 创建 VideoWriter 对象
cv::VideoWriter writer( "output.avi", // 输出视频文件名
fourcc, // 视频编码器的 FourCC 代码
25, // 帧率(每秒帧数)
cv::Size( frameWidth, frameHeight ), // 帧大小
true // 是否为彩色视频
);
if ( !writer.isOpened() )
{
std::cerr << "Failed to initialize the video writer." << std::endl;
return -1;
}
// 获取编解码器名称
std::string backendName = writer.getBackendName();
// 打印属性值
std::cout << "Initial Properties:" << std::endl;
std::cout << "VideoWriter Frame Width: " << writer.get( cv::CAP_PROP_FRAME_WIDTH ) << std::endl;
std::cout << "VideoWriter Frame Height: " << writer.get( cv::CAP_PROP_FRAME_HEIGHT ) << std::endl;
std::cout << "FPS: " << writer.get( cv::CAP_PROP_FPS ) << std::endl;
std::cout << "FourCC Code: " << writer.ge`在这里插入代码片`t( cv::CAP_PROP_FOURCC ) << std::endl;
std::cout << "Backend Name: " << backendName << std::endl;
// 创建一个示例帧
cv::Mat frame = cv::Mat::zeros( frameHeight, frameWidth, CV_8UC3 );
// 写入一帧到视频文件
writer.write( frame );
// 再次获取属性值,看看是否有变化
std::cout << "After writing a frame:" << std::endl;
std::cout << "VideoWriter Frame Width: " << writer.get( cv::CAP_PROP_FRAME_WIDTH ) << std::endl;
std::cout << "VideoWriter Frame Height: " << writer.get( cv::CAP_PROP_FRAME_HEIGHT ) << std::endl;
std::cout << "FPS: " << writer.get( cv::CAP_PROP_FPS ) << std::endl;
std::cout << "FourCC Code: " << writer.get( cv::CAP_PROP_FOURCC ) << std::endl;
std::cout << "Backend Name: " << writer.getBackendName() << std::endl;
// 检查视频文件是否存在
std::ifstream file( "output.avi" );
if ( file.good() )
{
std::cout << "Video file created successfully." << std::endl;
}
else
{
std::cerr << "Failed to create video file." << std::endl;
}
// 关闭文件流
file.close();
// 释放资源
writer.release();
return 0;
}
运行结果
bash
Initial Properties:
VideoWriter Frame Width: 0
VideoWriter Frame Height: 0
FPS: 0
FourCC Code: 0
Backend Name: FFMPEG
After writing a frame:
VideoWriter Frame Width: 0
VideoWriter Frame Height: 0
FPS: 0
FourCC Code: 0
Backend Name: FFMPEG
Video file created successfully.