FFMPEG设置摄像头编码器C ++

我试图在Windows中使用FFMPEG C API捕获网络摄像头流。 我可以使用以下命令行选项来执行我想要的操作:

ffmpeg -f dshow -vcodec mjpeg -s 1280x720 -framerate 30 -i video=HX-A1:audio="Microphone (HX-A1)" outputFile.mpg

我已经开始使用transcoding.c示例,并开始使用它来记录像捕获记录器这样的虚拟摄像头。 但是,我需要为我的真实摄像头设置编码器选项,因为它默认为160x120原始视频,而我更喜欢更高的分辨率。 我正在尝试以下设置相机编码器选项,但它似乎没有做任何事情。

AVDictionary *opt = NULL;
av_dict_set(&opt, "vcodec", "mjpeg", 0);
av_dict_set(&opt, "s", "1280x720", 0);
av_dict_set(&opt, "framerate", "30", 0);
if ((ret = avformat_open_input(&ifmt_ctx, filename, inputFormat, &opt)) < 0) {
    av_log(NULL, AV_LOG_ERROR, "Cannot open input filen");
    return ret;
}

有没有另外一种方法来设置输入选项来告诉相机在我的命令行示例中使用哪种编解码器?


解决了,我必须首先启动我的AVFormatContext,然后打开MJPEG解码器并在打开它之前设置AVFormatContext的视频解码器和编解码器ID。

AVDictionary* dictionary = NULL;
av_dict_set(&dictionary, "video_size", "1280x720", NULL);
av_dict_set(&dictionary, "framerate", "30", NULL);

ifmt_ctx = avformat_alloc_context();
ifmt_ctx->video_codec_id = AV_CODEC_ID_MJPEG;
av_format_set_video_codec(ifmt_ctx, opened_mjpeg_codec);

avformat_open_input(&ifmt_ctx, filename, inputFormat, &dictionary);
链接地址: http://www.djcxy.com/p/81081.html

上一篇: FFMPEG Set Webcam Encoder C++

下一篇: Solution for capture from webcam with several options