当前位置: 代码迷 >> 多媒体/流媒体开发 >> 用H264编码时,av_interleaved_write_frame返回值为0,但是却没有写入视频数据,小弟我没有编解码,就是想复制原来的源视频
  详细解决方案

用H264编码时,av_interleaved_write_frame返回值为0,但是却没有写入视频数据,小弟我没有编解码,就是想复制原来的源视频

热度:4062   发布时间:2013-02-26 00:00:00.0
用H264编码时,av_interleaved_write_frame返回值为0,但是却没有写入视频数据,我没有编解码,就是想复制原来的源视频
用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等都不能写入视频数据,
每明白你说的什么意思?