【发布时间】:2017-04-04 21:28:29
【问题描述】:
非常感谢您在这个问题上提供的帮助。我是FFmpeg的新手,如果这是一个愚蠢的问题,请原谅我
我有一个应用程序通过 UDP 从相机传输 H264 原始数据。这种沟通工作正常。问题是在尝试解码时
我只是想对收到的数据进行解码,以便将一些计算机视觉技术应用于另一个项目。
我在调用后立即收到错误-22
avcodec_send_packet
你们中有人知道它是什么吗?这是我的部分代码
Mat DecodificadorH264::h264decode(char* rawH264, int size){
...
...
AVPacket av_packet;
av_init_packet(&av_packet);
uint8_t data;
data = *rawH264;
av_packet.data = &data;
av_packet.size = size;
cout << "size = "<<av_packet.size;
int frame_finished = 0;
l_pCodec = avcodec_find_decoder(AV_CODEC_ID_H264);
l_pAVCodecContext = avcodec_alloc_context3(l_pCodec);
l_pAVCodecContext->width = FRAME_WIDTH;
l_pAVCodecContext->height = FRAME_HEIGHT;
l_pAVCodecContext->extradata = NULL;
l_pAVCodecContext->pix_fmt = AV_PIX_FMT_YUV420P;
int av_return = avcodec_send_packet(l_pAVCodecContext,
(AVPacket*)&av_packet);
if (av_return == AVERROR(EINVAL))cout << "codec not opened, or it is an encoder" << endl;
....
av_return 返回“AVERROR(EINVAL)”,定义为-22
可能是什么问题?
提前致谢!
【问题讨论】: