当ffmpeg到达命名管道的末尾时,如何阻止ffmpeg退出?

约书亚·沃尔什(Joshua Walsh)

我正在使用一个程序,该程序在运行时将MPEG-TS视频数据连续写入文件中。我希望它可以连续运行很多天。

我想使用ffmpeg对视频数据进行实时转码。为了使.mts文件不会连续增长,直到我用完硬盘空间后,我正在尝试使第一个程序写入命名管道并ffmpeg从该管道读取。

我尝试做,ffmpeg -i /tmp/test.mts -c:v libx264 test.mp4但是ffmpeg似乎在到达管道末端时退出,而不是等待新数据。例如,如果我启动程序,等待30秒钟,然后运行ffmpeg,我将只能获得大约50秒钟的视频。(30秒+ ffmpeg赶上所需的时间)

我已经设法通过使其工作而工作,ffmpeg -i pipe:0 -c:v libx264 test.mp4 < /tmp/test.mts但是使用stdin做到这一点对我来说有点不客气。有没有一种方法可以直接将命名管道作为ffmpeg的输入,并让其在到达当前数据末尾时等待新数据?

谢谢!

满天星

只需打开该fifo即可从另一个地方进行书写(并保持打开状态)。例子:

在一个窗口中:

mkfifo /tmp/test.mts
exec 7<>/tmp/test.mts
ffmpeg -i /tmp/test.mts out.mp4

在另一个窗口中:

cat ... >/tmp/test.mts
cat ... >/tmp/test.mts

这样的想法是,在打开了要写入的所有进程都将其关闭之前,阅读器不会从管道中接收到EOF:

$ mkfifo /tmp/fifo
$ cat /tmp/fifo &
[1] 26437
$ exec 7>/tmp/fifo
$ echo yes >/tmp/fifo
yes
$ echo yes >/tmp/fifo
yes
$ echo yes >/tmp/fifo
yes
$ exec 7>&-
$
[1]+  Done                    cat /tmp/fifo

如果没有exec 7>/tmp/fifo这使打开的句柄到书写结束/tmp/fifo时,cat将第一后已终止echo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

管道生产商如何告知管道使用者它已到达“文件末尾”?”(未命名管道,而非命名管道)

来自分类Dev

如何通过管道输出ffmpeg?

来自分类Dev

如何识别ffmpeg管道结束?

来自分类Dev

到达卡的末尾时如何返回行?

来自分类Dev

如何给ffmpeg中的文件命名

来自分类Dev

如何从 ffmpeg 到 ffplay 寻找 ffplay 或管道

来自分类Dev

如何到达文件末尾

来自分类Dev

如何连接视频直到达到特定的视频长度 FFMPEG

来自分类Dev

当管道到ffmpeg时如何在python3中使用stdout.write?

来自分类Dev

到达末尾时如何返回数组的第一行?

来自分类Dev

编写器进程退出后,如何从命名管道读取?

来自分类Dev

当scrollBy到达网页底部时如何退出循环?

来自分类Dev

在bash管道中的ffmpeg

来自分类Dev

ffmpeg管道图像重做

来自分类Dev

当到达底部时如何阻止UIScrollView滚动

来自分类Dev

到达列表末尾时的链表

来自分类Dev

FFMPEG仅在写入管道时才会引发异常

来自分类Dev

jQuery如何到达对象的末尾

来自分类Dev

如何阻止ffmpeg向元数据添加“ handler_name”

来自分类Dev

如何修复我的 ffmpeg 命令以阻止终端挂起?

来自分类Dev

如何在C#中的ffmpeg中使用管道

来自分类Dev

如何通过管道将多个文件传输到ffmpeg?

来自分类Dev

如何并行运行实时ffmpeg(管道)转换?

来自分类Dev

如何阻止酒吧退出

来自分类Dev

使用ffmpeg concat时如何删除重叠?

来自分类Dev

当输入停止时,如何使ffmpeg保持静音?

来自分类Dev

如何在管道关闭时提早退出?

来自分类Dev

阻止自动EOF到命名管道,并在需要时发送EOF

来自分类Dev

到达末尾时重置字符java

Related 相关文章

热门标签

归档