ZBLOG

ffmpeg获取摄像头分辨率列表

要获取摄像头的分辨率列表,您可以使用 FFmpeg 的 C API 来查询支持的分辨率。

下面是一个示例代码片段,展示了如何使用 FFmpeg 获取摄像头的分辨率列表:

extern "C" {
#include <libavutil/avutil.h>
#include <libavformat/avformat.h>
}

int main() {
    av_register_all();

    AVFormatContext* formatContext = nullptr;
    AVInputFormat* inputFormat = nullptr;

    // 打开摄像头设备
    if (avformat_open_input(&formatContext, "/dev/video0", inputFormat, nullptr) != 0) {
        printf("无法打开摄像头设备\n");
        return -1;
    }

    // 查找视频流信息
    if (avformat_find_stream_info(formatContext, NULL) < 0) {
        printf("无法获取流信息\n");
        return -1;
    }

    // 查找视频流索引
    int videoStreamIndex = -1;
    for (unsigned int i = 0; i < formatContext->nb_streams; ++i) {
        if (formatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
            videoStreamIndex = i;
            break;
        }
    }

   // 检查是否找到了视频流
   if (videoStreamIndex == -1) {
       printf("未找到视频流\n");
       return -1;
   }

   // 获取视频流参数
   AVCodecParameters* codecParams = formatContext->streams[videoStreamIndex]->codecpar;

   // 遍历支持的分辨率列表并输出
   for (int i = 0; i < codecParams->codec->supported_framerates->num; ++i) {
       AVFrameRate* frameRate = &(codecParams->codec->supported_framerates->list[i]);
       printf("分辨率: %dx%d\n", frameRate->width, frameRate->height);
   }

   // 清理资源
   avformat_close_input(&formatContext);

   return 0;
}

请注意,上述代码只是一个简单示例,您可能需要根据具体情况进行适当修改。确保在编译时链接 FFmpeg 库,并正确包含相关的头文件。

希望这可以帮助您获取摄像头的分辨率列表。如有需要,请参考 FFmpeg 官方文档以获取更多详细信息和更复杂的功能实现。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=4322

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?