【发布时间】:2017-11-29 14:07:04
【问题描述】:
我正在尝试将两个视频与 FFmpeg 的过滤图一起附加。一个视频的大小为 1920x1080,速度为 30fps,另一个视频大小为 1280x720,速度为 25fps。两者都使用 yuv420p,并且具有相同的像素密度。我目前正在忽略音轨。以下是我的过滤图:
[video2]fifo[video3];
[video3]pad=width=1920:height=1080[video9];
[video9]fps=fps=25[video11];
[video11]setpts=expr=PTS-STARTPTS[video17];
[video6]fifo[video7];
[video7]pad=width=1920:height=1080[video13];
[video13]fps=fps=25[video15];
[video15]setpts=expr=PTS-STARTPTS[video19];
[video17][video19]concat=v=1:a=0:n=2[video21];
[video21]pad=width=1920:height=1080[video23];
[video23]fps=fps=25[video25];
[video25]format=pix_fmts=yuv420p[video27]
第一个链尝试将第一个视频转换为通用格式,该格式从 0 开始用于 concat 过滤器。第二条链的作用与第一条相同。最后,第三条链将它们连接在一起,并为生成的播放列表设置一些属性。
不幸的是,当我运行这个错误时,ffmpeg 反复输出:
[mpeg4 @ 0x7fc16a810600] warning, too many B-frames in a row
完成后,我看到第一个视频,填充到正确的分辨率和帧速率,但我看到的是黑色而不是第二个视频。此外,整个视频有几天的长度,从第一个视频开始,到几天的黑色结束。
我无法弄清楚为什么会出现此错误,因为我似乎将视频设置为具有相同的属性。我错过了什么?
另外,我使用的是 FFmpeg 的 C API,而不是命令行工具。我正在使用 libavformat/libavcodec/libavutil 为 filtergraph 进行编码/解码和 libavfilter。
【问题讨论】:
-
这个问题似乎离题了,因为它不在帮助中心所述的讨论范围内。
-
违反了哪一点?
-
我的意思是,这似乎是一个特定的编程相关问题。
-
用ffmpeg编码视频跟写软件到底有什么关系?
-
(FFmpeg CLI Qs go on SuperUser。)该错误看起来像解码器错误。当您在那里交叉发布时,请包含完整的日志。
标签: c video filter ffmpeg racket