用H264编码时,av_interleaved_write_frame返回值为0,但是却没有写入视频数据,我没有编解码,就是想复制原来的源视频
文件,其他格式测试都没有问题,就是H264编码的有问题,已知前面H264编码器已经打开了,av_interleaved_write_frame
返回值为0,但是却没有写入视频数据。主要代码如下:
while(av_read_frame(pSelf->ic,&pSelf->packet)>=0)//从输入文件中读取一个包
{
if(pSelf->packet.stream_index==pSelf->videoindex)
{
AVPacket pkt;
av_init_packet(&pkt);
pkt.pts =pSelf->packet.pts ;
pkt.dts = pSelf->packet.dts;
pkt.flags = pSelf->packet.flags;
pkt.stream_index= pSelf->video_st->index;
pkt.data= pSelf->packet.data;
pkt.size= pSelf->packet.size;
pSelf->ret=av_interleaved_write_frame(pSelf->oc, &pkt);
if (pSelf->ret < 0)
break;
av_free_packet(&pkt);
}
if(pSelf->packet.stream_index==pSelf->audioindex)
{
AVPacket pkt;
av_init_packet(&pkt);
pkt.flags = pSelf->packet.flags;
pkt.stream_index= pSelf->audio_st->index;
pkt.data= pSelf->packet.data;
pkt.size= pSelf->packet.size;
pSelf->ret=av_interleaved_write_frame(pSelf->oc, &pkt);
if (pSelf->ret < 0)
break;
av_free_packet(&pkt);
}
}
------解决方案--------------------------------------------------------
经过测试,H264编码的AVI文件可以写入视频数据,其他格式比如H264编码的MP4,MKV等都不能写入视频数据,
每明白你说的什么意思?