不建议使用AVStream.codec.time_base作为muxer的时基提示。改为设置AVStream.time_base

时间:2018-02-28 08:13:35

标签: c++ ffmpeg

我正在使用C MMPEG来获取此消息。所以我在帖子中添加了time_base

videoStream = avformat_new_stream(formatContext, codec);
videoStream->time_base = AVRational{1, fps};

并在上下文中摆脱它

codecContext->bit_rate = 400000;
codecContext->width = width;
codecContext->height = height;
codecContext->gop_size = 10;
codecContext->max_b_frames = 1;
//codecContext->time_base = AVRational{1, fps};
codecContext->pix_fmt = AV_PIX_FMT_YUV420P;

avcodec_open2(codecContext, codec, NULL)立即中断

为什么?我是否需要将值应用于它们?我对这两个值都重复了,消息也消失了。但这不是错误吗?

1 个答案:

答案 0 :(得分:1)

设置codecContext->time_base值是必需的,不应跳过。取消注释,你应该没事。另请参阅ffmpeg提供的code example

至于为什么需要这两个值:AVStreamAVCodecContext是两种不同的结构,可能会也可能不会一起使用,具体取决于您的代码需要做什么。他们都需要一个time_base所以他们都有它们。您可以将其称为ffmpeg代码库中的众多特性之一。