参考x264工程中的实现,关键的几个地方:
p_read_frame( &pic, opt->hin, i_frame + opt->i_seek )//实际是int read_frame_yuv( x264_picture_t *p_pic, hnd_t handle, int i_frame )
i_file += Encode_frame( h, opt->hout, &pic );
i_size = x264_nal_encode( data, &i_data, 1, &nal[i] ) ) > 0
i_file += p_write_nalu( hout, data, i_size );
最关键的应用接口基本上就是这几个。
如果要编码摄像头出来的yuv数据,就要实现与read_frame_yuv等效的动作,把帧内容放到
x264_picture_t.img.plane[0]
x264_picture_t.img.plane[1]
x264_picture_t.img.plane[2]
x264_picture_t pic;
然后循环调用:
x264_encoder_encode( h, &nal, &i_nal, pic, &pic_out )
x264_nal_encode( data, &i_data, 1, &nal[i] )
实现编码,至于编码后的数据,可以发往网络,同时也可以存起来。
编码时有许多参数要设置,这里都没提到,因为我也没搞明白了,慢慢来吧。
转载来自加菲的http://wmnmtm.blog.163.com/blog/static/38245714201163125710855/,谢谢加菲了,一直看你的日志,非常有用