morris 发表于 2020-8-6 20:34:32

如何将实时图片编码为视频?

本帖最后由 morris 于 2020-8-6 20:35 编辑

动态输入一张一张的图片, 需要 ffmpeg 根据实际接收到的时间编码为视频, 而不是固定帧率生成视频.
比如:
1. 如果图片是 1 秒 1 张, 那么生成的视频帧率就是 1;
2. 如果图片是 1 秒 2 张, 那么生成的视频帧率就是 2;

事先并不知道每秒会收到多少张图片.

怎么做呢?

morris 发表于 2020-8-7 18:02:10

https://video.stackexchange.com/a/25813/23762

这个是以文件的 mtime 作为时间, 比较接近我的使用场景, 但还是有点差别, 我这视频是实时接收的, 而不是文件列表, 相当于文件列表是动态的.

孙悟空 发表于 2020-8-8 08:46:49

这个比较有难度,没搞过变帧率的

morris 发表于 2020-8-8 11:09:11

如果没有别的办法, 可能得定时(0.5s) 出一张图, 没新的就用上一张, 这样生成固定帧率 2 的视频.

还一个想法是, 既然可以 ts_from_file, 那么如果使用 concat 生成动态的列表文件, 然后再 ts_from_file 按说是可以实现的.

morris 发表于 2020-8-8 11:14:05

大师兄有时间麻烦再帮忙看一看另一个帖子的问题吧, http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=4829#lastpost

视频是一个网络摄像机出的, 用了 vlc mpv ffplay 播放都不流畅, 帧率在 13 帧左右, 但播放器应该都是按 25 帧播的, 导致视频一卡一卡的. 但是用厂家的播放器以及另一个私有的播放器播放是可以流畅的(不检查帧率, 因为是实时流, 所以是每解码一帧就直接显示一帧).

孙悟空 发表于 2020-8-8 11:38:27

morris 发表于 2020-8-8 11:09
如果没有别的办法, 可能得定时(0.5s) 出一张图, 没新的就用上一张, 这样生成固定帧率 2 的视频.

还一个想 ...

可以实现,但是可能会引起各种不适感的问题

morris 发表于 2020-8-8 12:11:46

孙悟空 发表于 2020-8-8 11:38
可以实现,但是可能会引起各种不适感的问题

多谢大师兄.

这个不适感主要是和 ffmpeg 哪些开发习惯不符还是什么? 可否在稍微具体举个例子, 避免后面再踩了坑:L

孙悟空 发表于 2020-8-8 12:17:16

morris 发表于 2020-8-8 12:11
多谢大师兄.

这个不适感主要是和 ffmpeg 哪些开发习惯不符还是什么? 可否在稍微具体举个例子, 避免后面 ...

前面是15fps,后面是30fps,突然又来一个5fps,如果做成文件,可能需要频繁的刷新pps sps了,要不挺难受的

morris 发表于 2020-8-8 12:39:30

多谢大师兄, 后面确实也需要存了再进行回放.
页: [1]
查看完整版本: 如何将实时图片编码为视频?