当前位置: 首页 > 知识库问答 >
问题:

使用ffmpeg转换视频不丢失帧,具有相同的fps和tbr

陶弘业
2023-03-14

我的原始视频“test1.mp4”有以下属性

Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 283 kb/s, 34.55 fps, 50 tbr, 50k tbn, 50 tbc (default).

我是从运行ffmpeg-i test1.mp4中获得的。

然而,转换视频的道具已经改变。fps是50,tbr是50。与原始视频相比,帧数也有所增加。

 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 114 kb/s, 50 fps, 50 tbr, 12800 tbn, 100 tbc (default)

在打开这个链接https://superuser.com/questions/1307863/why-is-ffmpeg-changing-framerate-from-60-to-120之后,我发现ffmpeg在转换时使用TBR值而不是FPS,这样就不会丢失任何帧,但代价是重复的帧。正如上面的链接所建议的,我在转换视频时使用了vsync0选项。

ffmpeg -i test1.mp4 -vsync 0 test1_sync.mp4.

现在帧计数与输入视频相同(使用ffprobe检查)。但是fps仍然与原始视频没有什么不同。

 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 61 kb/s, 12.88 fps, 50 tbr, 12800 tbn, 100 tbc (default).

我怎样才能做到这一点?

共有1个答案

鄢英哲
2023-03-14

使用-r可以指示fps

ffmpeg -i test1.mp4 -r 34.55 test1_sync.mp4

持续时间:00:00:54.18,开始时间:0.000000,比特率:273 kb/s流#0:0(und):视频:h264(高)(avc1/0x31637661),yuv420p,202x360[SAR 1:1 DAR 101:180],269 kb/s,34.55 fps,34.55 tbr,11056 tbn,69.10 tbc(默认值)

 类似资料:
  • 我有一个30 fps的视频。我需要提取帧从视频在1 fps。在Python中这是怎么可能的? 我有下面的代码,我从网上得到,但我不确定如果它提取帧在1 fps。请救命!

  • 我需要从30fps的视频中提取帧两次:(I)720p png帧,(ii)270p tiff帧。 我分别使用以下命令来实现这一点: 然而,这导致第一命令输出35,776帧,第二命令输出35,812帧,尽管视频是相同的,并且所请求的framerate是30fps。 这是什么原因造成的?如何确保ffmpeg输出相同数量的(同步)帧?

  • ffmpeg 是 *nix 系统下最流行的音视频处理库,功能强大,并且提供了丰富的终端命令,实是日常视频处理的一大利器! 实例 flac 格式转 mp3 音频格式转换非常简单:ffmpeg -i input.flac -acodec libmp3lame output.mp3。 ffmpeg 将会使用 libmp3lame 解码器将 input.flac 文件转换为 mp3 格式的 output.

  • 我试图提取帧使用FFMPEG使用以下命令: 它提取帧并以顺序方式分配帧名称,例如0,1,... 作为提取的一部分,是否可以指定实际帧号? 例如,如果ffmpeg提取10、20。。。帧,它应该将其命名为img00010、img00020,而不是img00000、img00001。。。。

  • 使用ffmpeg concat连接多个文件似乎会导致音频的时间戳或偏移不匹配。我试过几个视频,发现H.264/MP4也有同样的问题。 使用并对视频进行编码似乎可以很好地工作。当ffmpeg执行全部转换计算时,音频保持同步,似乎可以得到所有正确的结果。 然而,简单地将视频级联而不进行任何转换或编码会导致同步问题缓慢增加。显然,对视频进行编码而不是简单地加入它们将导致信息/质量的损失,所以我宁愿找到一

  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求