当我打电话
frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out);
然后将每个NAL写入如下文件:
if (frame_size >= 0)
{
int i;
int j;
for (i = 0; i < i_nals; i++)
{
printf("******************* NAL %d (%d bytes) *******************\n", i, nals[i].i_payload);
fwrite(&(nals[i].p_payload[0]), 1, nals[i].i_payload, fid);
}
}
然后我得到这个
我的问题是:
1)文件开头有可读参数是否正常?
2)如何配置X264编码器,以便编码器返回可以通过UDP发送的帧,而不会使数据包变得碎片化(大小必须小于1390或在其附近)。
3)使用x264.exe输入以下选项:
"--threads 1 --profile baseline --level 3.2 --preset ultrafast --bframes 0 --force-cfr --no-mbtree --sync-lookahead 0 --rc-lookahead 0 --keyint 1000 --intra-refresh"
如何将这些映射到X264参数结构中的设置?(x264参数)
4)我被告知x264静态库不支持向编码器输入位图,我必须使用libswscale将24位RGB输入位图转换为YUV2编码器,应该只接受YUV2作为输入?这是真的吗?如果是,如何为x264静态库构建libswscale?
最佳答案
1)是的。x264包括自动。这是一个SEI切片,如果你想的话你可以把它扔掉。
2)设置i_slice_max_size=1390
3)查看x264.h中的x264参数。这些设置相当简单。至于设置配置文件和预设呼叫int x264_param_apply_profile( x264_param_t *, const char *profile )
和int x264_param_default_preset( x264_param_t *, const char *preset, const char *tune )
4)是的,这是真的,我说这话的时候想撒谎。联机查看/堆栈溢出编译ffmpeg有一百万个资源。事实上,如果您使用avcodec支持编译了x264,那么您的系统上已经有了它。
5)是的!,你应该是一个好的堆积如山的市民,向上投票,接受人们的答案,他们会在那里无偿奉献时间和知识(这需要几年时间才能获得)来帮助你。