【发布时间】:2019-12-09 14:17:15
【问题描述】:
我正在编写一个应用程序,它将传入的视频记录到一个文件中,每隔 't' 秒,保存该文件并记录到一个新文件中。 splitmuxsink 似乎确实做到了这一点,但没有达到我的目的,因为 -
- 它不允许连续文件之间重叠。我希望一个文件的最后几秒钟也出现在下一个文件中。
- splitmuxsink 还存在其他奇怪的问题(与普通文件接收器相比延迟巨大、不记录音频以及文件接收器、文件时间戳不正确等)
所以,我想让应用程序每隔 't' 秒触发一次基于时间的回调。在我的管道中,我有一个多路复用器,我通过它同时写入两个文件一段时间(取决于重叠),然后基于另一个计时器回调,断开旧文件接收器。
我有以下问题 -
- 上述方案是个好主意吗?有更好的想法吗?
- 如何注册定时器回调?只是操作系统系统调用还是 gstreamer 提供任何 API?
- 断开旧文件接收器的安全方法是什么?是不是应该先断开再发送EOS信号?我在这里有点困惑。
- 为新文件更改管道中的时间。 splitmuxsink 中的一个问题是文件带有管道运行时间的时间戳,但这实际上应该在每次创建新文件时重置。 (我不介意目前还没有得到答案;这应该完全是一个单独的问题。)
为了了解所涉及的时间,每个文件的持续时间可能是 5 分钟,重叠可能是 1%,3 秒。
【问题讨论】:
标签: gstreamer