采用“英特尔快速同步”的FFMPEG编码;访问冲突读取位置“;

采用“英特尔快速同步”的FFMPEG编码;访问冲突读取位置“;,ffmpeg,h.264,Ffmpeg,H.264,我正在使用来自的FFMPEGFFMPEG-20150610-git-913685f 使用这个库,我设置了一个应用程序,从我的帧抓取器中捕获UYVY帧,并使用libx264将它们编码/多路复用到MP4文件中。工作没有问题 现在,我想尝试启用“英特尔快速同步”,所以我更改了编码器 // old (libx264) //AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264); // new (Intel Quick Sync) AVCodec*

我正在使用来自的FFMPEG
FFMPEG-20150610-git-913685f

使用这个库,我设置了一个应用程序,从我的帧抓取器中捕获UYVY帧,并使用libx264将它们编码/多路复用到MP4文件中。工作没有问题

现在,我想尝试启用“英特尔快速同步”,所以我更改了编码器

// old (libx264)
//AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264);
// new (Intel Quick Sync)
AVCodec* codec = avcodec_find_encoder_by_name("h264_qsv");
它发现编码器正常。然而,在编码帧时,我得到了以下异常

中0x000000005D4DDC9E(avcodec-56.dll)处未处理的异常 MedXChangeDecLinkTest.exe:0xC0000005:访问冲突读取 位置0x0000000000000048

确切的API调用是:

avcodec_encode_video2(_internals->videoStream.stream->codec, &pkt, _internals->videoStream.frame, &got_packet);
我还需要做什么?我注意到有一个提交为QSV添加了一些额外的像素格式。与libx264相比,我需要做一些不同的事情吗

更新:我刚刚意识到我在标准输出上遇到了一个错误

[h264_qsv @ 000000c7e6d8e680] Specified pixel format yuv420p is invalid or not supported

结果表明,QSV需要NV12。转换我的源视频,它的作品

通常,编码器指定它们接受的格式,qsv列出了YUV420p,但这是错误的