x264实时解码问题

c_hash 2011-09-08 03:41:52
实在不好意思啊,网上关于x264实时的文章都看遍了,还是有疑问,所以只能发新贴求助了.希望大家能帮下我.

首先我说下我的目的吧,

我要用x264库(各种版本都可能会要)提供的接口,做一个实时编码的测试程序.现在测试是从yuv文件里面读帧出来,读一帧编一帧.读到末尾又从第一帧开始.

因为据说新版本的x264库好像有内存泄漏的问题,我要用写好的测试程序,测试不同版本的x264库,比较效率后再用一个,再优化这个采用的版本.

我要自己用不同代码生成库再测试,所以firstime老大提供的那个基于"FFMPEG的H.264编码器VC工程"我是不能用了.

在网上找遍了所有文章,发现好像都是在提问,并没有解决的办法,而大多数建议也是结合x264.c,仿照着写.

仿照的程序已经写完了,但是碰到了这样的问题,

x264_encoder_open 返回 NULL

我的思路是,初始化,把必须要的参数写死,然后按照Encode里的步骤来,不知道我说的有没有太罗说,问题有没说清楚.

如果大家有好的现成的例子,实时的,能给我一份就最好了,不能给的话,关键的函数代码告诉我也行.

不行的话,大家告诉我,像我这样最开始的最简单的一个测试,哪些参数是必须的,才能过x264_encoder_open 这个函数,跑下面读帧编码的函数.

真心求教........................

no_th@qq.com




...全文
694 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
美丽海洋 2012-07-04
  • 打赏
  • 举报
回复
我的机器编码一振需要50ms左右 怎么办 希望能给点明鉴
美丽海洋 2012-07-04
  • 打赏
  • 举报
回复
这个性能问题目前有说法吗
美丽海洋 2011-09-29
  • 打赏
  • 举报
回复
我说的不能播放问题已经解决了,是因为我的某个参数配置问题:
对于编码效率都是那几个参数有关系,我测试了一下我这边编码一帧视频大约需要30多毫秒要是这样的话,是不能接受的,我的pc配置不能说顶级,但是也是差不多的(Q8200 2.33G 4核),要这样的话,在系统中只能编码一路视频;
c_hash 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 guyue6670 的回复:]
按着楼主说的 我用2009的版本,但是不知道为什么编码没有视频(ffplay播放);楼主遇到过这样的情况吗
[/Quote]

我不太明白你说的是什么意思,“编码没有视频(ffplay播放)”,是不是说编码后不能播放?

编码时有输出文件选择,mp4还有264等,解码后是可以播放的.
ullman76 2011-09-29
  • 打赏
  • 举报
回复
用vs2008,找d264,编译好的
美丽海洋 2011-09-28
  • 打赏
  • 举报
回复
还有我试了 解码与x264的配置也有关系,楼主怎么配置的使效率达到最好,希望楼主明示
美丽海洋 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 c_hash 的回复:]
引用 4 楼 guyue6670 的回复:
楼主有什么问题我们可以一起研究,不知道你测试的那个版本的速度最快


我这边已经做完了,用的是09年发布的一个版本.

参数我都搞明白了,有问题当然可以一起研究.
[/Quote]

不知道解码一帧需要多少时间,楼主测过吗,要是侧过给贴出来,我qq:24146171
chen43030 2011-09-28
  • 打赏
  • 举报
回复
新版本的X264在windows平台不好编译吧?以前的旧版本直接带有VS的工程文件,很容易编译,我也想用新版本的,可是编译太麻烦
美丽海洋 2011-09-28
  • 打赏
  • 举报
回复
按着楼主说的 我用2009的版本,但是不知道为什么编码没有视频(ffplay播放);楼主遇到过这样的情况吗
c_hash 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 guyue6670 的回复:]
还有我试了 解码与x264的配置也有关系,楼主怎么配置的使效率达到最好,希望楼主明示
[/Quote]

我是用在手机上的,主要是运行估计的几个参数会有影响.

--merange 32 --me dia --subme 1

me用dia或默认就好,subme用5效果是最好的,但太慢,用1是性价比最高的.

编码这边,再把fps,bitrate这二个参数根据需要设好了,就好控制.1000左右.


我只负责编码,解码那端的速度没测过.

c_hash 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chen43030 的回复:]
新版本的X264在windows平台不好编译吧?以前的旧版本直接带有VS的工程文件,很容易编译,我也想用新版本的,可是编译太麻烦
[/Quote]

编译成库还好说,但不好建VC工程,不能调试,而且我用最新版本的x264测出来的Psnr跟09年这个版本的提高不到0.2,而程序去大了将近3M,我是用在手机上,所以就没花时间去用最新的.
yupengchen951124 2011-09-27
  • 打赏
  • 举报
回复
为什么不用新一些的版本来调试呢,2011版的早出来啦
c_hash 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guyue6670 的回复:]
楼主有什么问题我们可以一起研究,不知道你测试的那个版本的速度最快
[/Quote]

我这边已经做完了,用的是09年发布的一个版本.

参数我都搞明白了,有问题当然可以一起研究.
美丽海洋 2011-09-20
  • 打赏
  • 举报
回复
楼主有什么问题我们可以一起研究,不知道你测试的那个版本的速度最快
美丽海洋 2011-09-20
  • 打赏
  • 举报
回复
我给你一段代码吧

x264_param_default( &m_x264_param_t );
m_x264_param_t.i_width = w;
m_x264_param_t.i_height = h;
m_x264_param_t.i_csp = X264_CSP_I420; // 设置输入的视频采样的格式

m_x264_param_t.rc.i_rc_method = X264_RC_CRF; m_x264_param_t.rc.i_rf_constant = 26.0;

m_px264_t = x264_encoder_open( &m_x264_param_t );

memset( &m_x264Picture_t, 0, sizeof( x264_picture_t ) );

x264_picture_alloc( &m_x264Picture_t, m_x264_param_t.i_csp, m_x264_param_t.i_width, m_x264_param_t.i_height );


if (m_px264_t == NULL)
return FALSE;
return TRUE;
「已注销」 2011-09-08
  • 打赏
  • 举报
回复
你debug方式把程序运行起来,看看x264_encoder_open在哪里返回NULL,不就行了
vansbluge 2011-09-08
  • 打赏
  • 举报
回复
直接调ffmpeg不好吗


网上关于x264实时的文章都看遍了
-------------------------------
x264官网的邮件列表你全看遍了?

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧