2011-06-02 81 views
1

av_register_all();ffmpeg + libx264 iPhone - >'avcodec_encode_video'return always 0。請諮詢

  AVCodec *codec; 
     AVCodecContext *c= NULL; 
     int out_size, size, outbuf_size; 
     //FILE *f; 
     uint8_t *outbuf; 

     printf("Video encoding\n"); 

     /* find the mpeg video encoder */ 
     codec =avcodec_find_encoder(CODEC_ID_H264);//avcodec_find_encoder_by_name("libx264"); //avcodec_find_encoder(CODEC_ID_H264);//CODEC_ID_H264); 
     NSLog(@"codec = %i",codec); 
     if (!codec) { 
      fprintf(stderr, "codec not found\n"); 
      exit(1); 
     } 
c= avcodec_alloc_context(); 

     /* put sample parameters */ 
     c->bit_rate = 400000; 
     c->bit_rate_tolerance = 10; 
     c->me_method = 2; 
     /* resolution must be a multiple of two */ 
     c->width = 352;//width;//352; 
     c->height = 288;//height;//288; 
     /* frames per second */ 
     c->time_base= (AVRational){1,25}; 
     c->gop_size = 10; /* emit one intra frame every ten frames */ 
     //c->max_b_frames=1; 
     c->pix_fmt = PIX_FMT_YUV420P; 

     c ->me_range = 16; 
     c ->max_qdiff = 4; 
     c ->qmin = 10; 
     c ->qmax = 51; 
     c ->qcompress = 0.6f; 

'avcodec_encode_video'總是0。

我想那是因爲'非嚴格單調的PTS'警告,你知道同樣的情況嗎?

+0

您是否遇到過這個問題?我遇到同樣的問題,看起來它與PTS值有關。 – 2011-11-03 00:46:35

回答

0

對於我也總是返回0。但編碼很好。如果它返回0,我不認爲有問題。在avcodec.h中,您可以看到這個

「出錯時,返回負值,成功爲0或輸出緩衝區使用的字節數爲 * 「。