[h264 @ 0x833680] No start code is found. [h264 @ 0x833680] Error
splitting the input into NAL units.
执行avcodec_send_packet(decodec_ctx_v, &read_pkt);
这个有两个原因:
一是解码器上下文decodec_ctx_v结构体内参数配置缺少
二是解码器上下文decodec_ctx_v结构体内参数配置与read_pkt内的数据不匹配,比如视频,width不同。
如果从输入流中获取decodec_ctx_v内的各种参数,这两中错误就可以避免,如下
avformat_open_input(&ic, URL, NULL, NULL); ...//伪代码 avcodec_parameters_to_context(decodec_ctx_v, ic->streams[video_index]->codecpar);
注意:
当decodec_ctx_v是视频的解码上下文,而read_pkt是音频数据时,也会发生错误,其实就是错误二。
这时候要判断从av_read_frame(ic, &read_pkt);中读取的数据是视频还是音频。
判断read_pkt是视频还是音频帧,详见另一篇文章:AVPacket结构体内几个变量分析