gpt4 book ai didi

FFMPEG API 实时编码,跳帧

转载 作者:行者123 更新时间:2023-12-04 23:28:18 38 4
gpt4 key购买 nike

我正在使用 FFMPEG 对实时视频进行编码。如果我跟不上实时编码,我需要丢帧。目前,我只是跳过原始帧的编码,下一帧的 PTS 是相同的。意思是,即使有跳帧,pts总是1,2,3,4,5,6....

这会导致文件的回放及时跳过。相反,我想将空白帧添加到混合文件中。我尝试通过将 PTS 设置为 1、2、4、5、8、.... 来使 PTS 指示跳过的帧,但 FFMPEG h264 编码器依赖于 PTS 是连续的。

如何将空数据传递给我的 mp4/容器,及时指示空白,以便解码器不会出现及时跳转,而只是看到延迟/卡住。

最佳答案

您不需要创建空框架,在这种情况下,您应该自己管理 PTS。对于视频 PTS,它总是每帧增加 1。它是有保证的,所以你可以保证。

我还没有任何实时编码经验,但是只要实时进行,如果您只是丢弃视频帧,与音频帧的同步可能会发生冲突。

为避免这种情况,您应该保存前一帧,并在丢弃帧时进行克隆并填充它,或者您也应该丢弃音频帧。但正如我所说,这只是 gessing,所以我不知道什么最适合你。

在这种情况下,以下是 puedo 代码:

// you should drop / or drop and make the clone of previous frame.

static int64_t last_pts = 0; // just make sure initialize once.
if(frame->pts != AV_NOPTS_VALUE && is_video == true)
{
if(last_pts) frame->pts = last_pts + 1;
last_pts = frame->pts;
}

关于FFMPEG API 实时编码,跳帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304198/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com