x264自带默认配置靠一个函数就行了
x264_param_t param;
x264_param_default(¶m);
if(preset_name||tune_name){
x264_param_default_preset(¶m,preset_name,tune_name);
}
if(profile_name){
x264_param_apply_profile(¶m,profile_name);
}
profile对时间以及文件大小的影响不大
如果要进行直播,那么文件大小以及消耗时间就极为重要
部分测试时间如下
使用zerolatency(0延时)可以保证输入一张图片就返回一帧数据,时间戳上可以保证,但时间以及文件大小不是最优的,
其它可能需要预缓存N张图片才有返回,得到的数据就会有几百ms到几秒的延时,这时候就需要特殊处理了。根据出x264_picture_t的信息可以计算出时间戳,想要音视频同步就必须要缓存才能发数据,就必然有少点的延时(编码,网络传输也要耗时,多点也能没关闭,我认为理想的0延时是不存在的,但是呢,呵呵呵)
如果还有B帧,除了flv文件更要特殊处理了
见x264自带的flv封装代码
全部测试数据见
https://gitee.com/zhujiatc/DesktopCapture/blob/master/doc/result.csv
电脑比较久,我们比较相对时间,大小就可以了
RGB数据无论是时间还是大小都比I420大
所以能用I420就优先用I420,RGB可以先转I420(会有耗时,但比编码的时差要好)
tune应该跟具体的图片内容有关
如果是静态图,例如显示PPT为主,stillimage好些
把单词翻译一下就行了