FFmpeg打开一个h264文件,将读取的包给mpp进行硬解码,现在mpi->decode_put_packet(ctx, packet)(给mpp喂包)这一步失败,返回值为3(看了返回值只有0和负数,根本没有3这个值!不知道怎么来的!),不知道是什么错误。更神奇的是,虽然输入包失败,但是接下来的decode_get_frame的返回值却是0(0表示成功)。
我的流程:
ffmpeg通过av_read_frame得到AVPacket,mpp通过mpp_packet_init将AVPacket转换成MppPacket,然后通过mpi->decode_put_packet将包送入mpp解码器,在这一步出现了错误,返回值为3.
百思不得其解,求各位解惑!
根据你提供的信息,我猜测可能是以下原因导致的:
MPP解码器没有正确初始化。你需要确保MPP解码器已经正确初始化,包括设置解码器参数、创建解码器上下文等。
MPP解码器不支持输入的H264码流。你需要检查MPP解码器支持的输入码流格式,确保输入的H264码流符合解码器要求。
MPP解码器的输入缓冲区已满。你需要检查MPP解码器的输入缓冲区是否已满,如果已满需要等待解码器处理完当前的输入包后再喂包。
MPP解码器的版本不兼容。你需要检查MPP解码器的版本是否与FFmpeg兼容,如果不兼容可能会导致解码失败。
你可以根据以上原因逐一排查,找出导致