运行 `tail -F $file` 然后删除输出的行

运行 `tail -F $file` 然后删除输出的行

长话短说,我正在运行这个命令,将一个不断增长的音频文件传输audio.mpgffmpeg

tail -F audio.mp3 | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

audio.mp3正在通过 SSH 从另一台服务器接收数据,该服务器有一个捕获设备,用于传输数据。它工作正常,但是数据量audio.mp3不断增长,我真正需要的是将尾部mp3数据发送到ffmpeg以便ffserver在同一台机器上进行编码和发送。

是否有一个命令可以运行来输出 tail -F 并从中删除输出的数据audio.mp3

本质上,我想将文件大小限制为 1MBaudio.mp3

提前致谢

答案1

这听起来像是一个“命名管道”问题(福尔摩斯,请原谅我)。由于数据不应该保留在您的系统中,因此您应该创建一个命名管道,

 mkfifo my_pipe

然后让 SSH 进程写入它,您就可以从中读取:

cat < my_pipe | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

当写入数据的过程完成后,cat 中会出现 EOF,您可以自由地通过 Ctrl+C 停止 cat-ing。当然,您也可以更聪明,编写一个等待 EOF 的小脚本;只要它没有找到 EOF,它就会传递数据,当它找到 EOF 时,它会关闭操作。这样您就不必监视整个过程。

相关内容