我从我的网络摄像头获取视频数据,并使用 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;
我已经使用 time 参数来设置 ts 的播放时间
最佳答案
您可以在编码器上下文中设置 GOP 大小:
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
c = avcodec_alloc_context3(codec);
[...]
c->gop_size = 10;
doc/examples/encode_video.c
中的完整示例(或见 Github)。
关于ffmpeg - ts 文件中的帧数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490626/