我从网络摄像头获取视频数据,并使用ffmpeg制作ts,m3u8
但是ts由ffmpeg做出的,每个ts都有不同的帧数。
那么,我怎样才能使帧数相等?
并且ts中的每个gop大小也不同..
我怎样才能使gop大小不变?
avformat_alloc_output_context2(&ptr->hls_ctx, NULL, "hls", "hls.m3u8");
((HLSContext*)ptr->hls_ctx->priv_data)->flags = HLS_DELETE_SEGMENTS | HLS_ROUND_DURATIONS;
((HLSContext*)ptr->hls_ctx->priv_data)->max_nb_segments = 2;
((HLSContext*)ptr->hls_ctx->priv_data)->time = 2;
我已经使用时间参数来设置ts的播放时间
答案 0 :(得分:0)
您可以在编码器上下文中设置GOP大小:
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
c = avcodec_alloc_context3(codec);
[...]
c->gop_size = 10;
doc/examples/encode_video.c
中的完整示例(或参见Github)。