Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libav/ffmpeg:avcodec_decode_video2()在分离多路复用和解码时返回-1 我使用LBAV(从Linux和Windows上的C++程序)解码文件中的视频流,它使用AVFATATOPENGINING()、AVAQueReByFrand()和AVCODECPLACDEVIEVIDE2OR(./P>)进行工作(对H264和MPEG2等各种格式进行解码)。_Video_Ffmpeg_Decode_H.264_Libav - Fatal编程技术网

libav/ffmpeg:avcodec_decode_video2()在分离多路复用和解码时返回-1 我使用LBAV(从Linux和Windows上的C++程序)解码文件中的视频流,它使用AVFATATOPENGINING()、AVAQueReByFrand()和AVCODECPLACDEVIEVIDE2OR(./P>)进行工作(对H264和MPEG2等各种格式进行解码)。

libav/ffmpeg:avcodec_decode_video2()在分离多路复用和解码时返回-1 我使用LBAV(从Linux和Windows上的C++程序)解码文件中的视频流,它使用AVFATATOPENGINING()、AVAQueReByFrand()和AVCODECPLACDEVIEVIDE2OR(./P>)进行工作(对H264和MPEG2等各种格式进行解码)。,video,ffmpeg,decode,h.264,libav,Video,Ffmpeg,Decode,H.264,Libav,现在我必须分开解复用和解码。一个类将调用avformat_open_input()和av_read_frame(),然后将avpacket传递到另一个类读取的队列中。在这里,我使用avcodec_alloc_context3()获取avcodec_decode_video2()所需的avcodecext。我已经用一个MPEG2视频流测试过了,效果很好 如果我尝试解码H264流,就会出现问题:avcodec_decode_video2()总是返回-1并输出“无帧”。我知道解码此流需要额外的数据(S

现在我必须分开解复用和解码。一个类将调用avformat_open_input()和av_read_frame(),然后将avpacket传递到另一个类读取的队列中。在这里,我使用avcodec_alloc_context3()获取avcodec_decode_video2()所需的avcodecext。我已经用一个MPEG2视频流测试过了,效果很好

如果我尝试解码H264流,就会出现问题:avcodec_decode_video2()总是返回-1并输出“无帧”。我知道解码此流需要额外的数据(SPS/PPS),因此我尝试从解码器中的解复用器复制原始AVCodecContext,但它无法工作:

  • 复制extradata字段的内容并设置与解码器中默认值不同的所有其他值,返回:-1
  • 使用相同的上下文(即传递指针)会导致崩溃
我还尝试设置CODEC_FLAG2_块。avcodec_decode_video2()然后始终返回packet.size-3(?),frameFinished永远不会设置为1

在我看来,这里有一个普遍的问题,每当需要从原始CodecContext设置来解码avpacket时,就会出现这个问题。如果有任何关于如何解决这个问题的提示,我将不胜感激

编辑:有时写下你的问题有助于解决问题。。。使用上下文结构的副本(avcodec_copy_context)并仅在接收到副本后打开编解码器将导致解码帧。有人知道这是安全的还是最好的方法吗