织梦CMS - 轻松建站从此开始!

罗索

ffmpeg下x264编码broken ffmpeg default settings detected问题

落鹤生 发布于 2010-12-08 11:17 点击:次 
之前我用同一份Source Code(包括ffmpeg 和x264及我上层调用的代码都是一样的),在Windows下和Linux下做同样的一件事情:编码H264视频,结果在Windows下跑是OK的,而在Linux下则一直报broken ffmpeg default settings detected这个错误
TAG:

之前我用同一份Source Code(包括ffmpeg 和x264及我上层调用的代码都是一样的),在Windows下和Linux下做同样的一件事情:编码H264视频,结果在Windows下跑是OK的,而在Linux下则一直报下面这个错误:

[libx264 @ 0x8b7d8b0]broken ffmpeg default settings detected
[libx264 @ 0x8b7d8b0]use an encoding preset (vpre)

详文请浏览:http://bbs.rosoo.net/thread-737-1-1.html

在翻阅了无数的文章后,发现其原因是在于x264内部的参数检测,归要到底还是由于自己在ffmpeg中设置的参数不正确导致的。以下是x264针对此判断代码如下:

相关判断位于encoder/encoder.c 393行:

  1. /* Detect default ffmpeg settings and terminate with an error. */ 
  2. int score = 0; 
  3. score += h->param.analyse.i_me_range == 0; 
  4. score += h->param.rc.i_qp_step == 3; 
  5. score += h->param.i_keyint_max == 12; 
  6. score += h->param.rc.i_qp_min == 2; 
  7. score += h->param.rc.i_qp_max == 31; 
  8. score += h->param.rc.f_qcompress == 0.5; 
  9. score += fabs(h->param.rc.f_ip_factor - 1.25) < 0.01; 
  10. score += fabs(h->param.rc.f_pb_factor - 1.25) < 0.01; 
  11. score += h->param.analyse.inter == 0 && h->param.analyse.i_subpel_refine == 8; 
  12. if( score >= 5 ) 
  13. x264_log( h, X264_LOG_ERROR, "broken ffmpeg default settings detected\n" ); 
  14. x264_log( h, X264_LOG_ERROR, "use an encoding preset (vpre)\n" ); 
  15. return -1; 

应用X264进行H.264编码,如果编码不能成功,大部分情况是编码参数选择不正确

请看图片:
这里边的编码参数大家应该看到了吧,那么如果我们用ffmpeg怎么设置这些编码参数呢?
代码为证:

 

  1. m_VCtx->codec_type = CODEC_TYPE_VIDEO; 
  2. m_VCtx->bit_rate = bitrate * 1000; 
  3. m_VCtx->width = width; 
  4. m_VCtx->height = height; 
  5. m_VCtx->time_base.den = fps; 
  6. m_VCtx->time_base.num = 1; 
  7. m_VCtx->gop_size = fps * 10; 
  8. //m_VCtx->gop_size = 1; 
  9. m_VCtx->crf = 26; 
  10. m_VCtx->refs = 3; 
  11. m_VCtx->flags2 = CODEC_FLAG2_MIXED_REFS; 
  12. m_VCtx->max_b_frames = 3; 
  13. m_VCtx->deblockbeta = -1; 
  14. m_VCtx->deblockalpha = -1; 
  15. m_VCtx->trellis = 2; 
  16. m_VCtx->partitions = X264_PART_I4X4 | X264_PART_I8X8
  17.  | X264_PART_P8X8 | X264_PART_P4X4 | X264_PART_B8X8; 
  18. m_VCtx->flags2 |= CODEC_FLAG2_8X8DCT; 
  19. m_VCtx->me_method = 8; 
  20. m_VCtx->me_range = 16; 
  21. m_VCtx->me_subpel_quality = 7; 
  22. m_VCtx->qmin = 10; 
  23. m_VCtx->qmax = 51; 
  24. m_VCtx->rc_initial_buffer_occupancy = 0.9; 
  25. m_VCtx->i_quant_factor = 1.0 / 1.40f;
  26.  // x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor); 
  27. m_VCtx->b_quant_factor = 1.30f; 
  28. m_VCtx->chromaoffset = 0; 
  29. m_VCtx->max_qdiff = 4; 
  30. m_VCtx->qcompress = 0.6f; 
  31. m_VCtx->complexityblur = 20.0f; 
  32. m_VCtx->qblur = 0.5f; 
  33. m_VCtx->directpred = 1; 
  34. m_VCtx->noise_reduction = 0; 
  35. m_VCtx->pix_fmt = PIX_FMT_YUV420P; 
  36.  
  37. m_VCtx->thread_count = 1; 
  38. m_VCtx->scenechange_threshold = 40; 
  39. m_VCtx->bframebias = 0; 
  40. m_VCtx->flags2 |= CODEC_FLAG2_AUD; 
  41. m_VCtx->coder_type = FF_CODER_TYPE_AC; 
  42. m_VCtx->flags |= CODEC_FLAG_LOOP_FILTER; 
  43. m_VCtx->me_cmp = FF_CMP_CHROMA; 
  44. m_VCtx->flags2 |= CODEC_FLAG2_FASTPSKIP; 
  45. m_VCtx->flags2 |= CODEC_FLAG2_BPYRAMID; 
  46. m_VCtx->flags2 |= CODEC_FLAG_NORMALIZE_AQP; 
  47. m_VCtx->flags2 |= CODEC_FLAG2_WPRED; 
  48. m_VCtx->keyint_min = 25; 
  49. m_VCtx->flags2 |= CODEC_FLAG2_MBTREE; 
  50.  
  51. //m_VCtx->rc_min_rate =1024 * 1000; 
  52. //m_VCtx->rc_max_rate = 1024 * 1000;   
  53. //m_VCtx->bit_rate_tolerance = 1024 * 1000; 
  54. //m_VCtx->rc_buffer_size=1024 * 1000; 
  55. //m_VCtx->rc_initial_buffer_occupancy = m_VCtx->rc_buffer_size*3/4; 
  56. //m_VCtx->rc_buffer_aggressivity= (float)1.0; 
  57. //m_VCtx->rc_initial_cplx= 0.5;  
  58.  
  59. //m_VCtx->ticks_per_frame = 2; 
  60. m_VCtx->level = 30; 
  61. m_VCtx->b_frame_strategy = 2; 
  62. m_VCtx->codec_tag = 7; // FLV must not = 0  {CODEC_ID_H264,FLV_CODECID_H264  }, 
(落鹤生)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201012/10576.html]
本文出处:罗索工作室 作者:落鹤生
顶一下
(5)
83.3%
踩一下
(1)
16.7%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容