Ffmpeg ts文件中的帧数

Ffmpeg ts文件中的帧数,ffmpeg,mpeg2-ts,Ffmpeg,Mpeg2 Ts,我从我的网络摄像机获取视频数据,并使用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_S

我从我的网络摄像机获取视频数据,并使用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的播放时间

您可以在编码器上下文中设置GOP大小:

codec = avcodec_find_encoder(AV_CODEC_ID_H264);
c = avcodec_alloc_context3(codec);
[...]
c->gop_size = 10;

doc/examples/encode\u video.c(或参见)中的完整示例。

您可以在编码器上下文中设置GOP大小:

codec = avcodec_find_encoder(AV_CODEC_ID_H264);
c = avcodec_alloc_context3(codec);
[...]
c->gop_size = 10;

doc/examples/encode\u video.c
(或请参阅)中的完整示例。

H.264非常有效,部分原因是数据流最小化算法是由输入像素流的变化驱动的。。。您对恒定数据块的渴望与这些效率驱动的设计目标背道而驰。。。请用您试图达到的目标更新您的问题achieve@ScottStensland他可能需要关键帧对齐的流,并且他使用一个活动源,因此他不能通过两次来获得同步的自适应GOP。H.264非常有效,部分原因是数据流最小化算法是由输入像素流的变化驱动的... 您对恒定数据块的渴望与这些效率驱动的设计目标背道而驰。。。请用您试图达到的目标更新您的问题achieve@ScottStensland他可能需要关键帧对齐的流,并且他使用一个活动源,因此他不能通过两次来获得同步的自适应GOP。是的,我已经完成了。。使用此代码ptr->output_vctx->gop_size=8;ptr->output\U vctx->keyint\U min=8;ptr->output_vctx->scenechange_threshold=1;但在ts文件中,关键帧的位置如下。。0 - 8 - 12 - 20 - 26 - 34 - 41 - 49 - 54 ... 为什么@j、 柚木尝试禁用场景检测(将
sc\u阈值设置为零)。先在CLI中试试。是的,我已经做了。。使用此代码ptr->output_vctx->gop_size=8;ptr->output\U vctx->keyint\U min=8;ptr->output_vctx->scenechange_threshold=1;但在ts文件中,关键帧的位置如下。。0 - 8 - 12 - 20 - 26 - 34 - 41 - 49 - 54 ... 为什么@j、 柚木尝试禁用场景检测(将
sc\u阈值设置为零)。首先在CLI中尝试它。