![运行 `tail -F $file` 然后删除输出的行](https://linux22.com/image/1381944/%E8%BF%90%E8%A1%8C%20%60tail%20-F%20%24file%60%20%E7%84%B6%E5%90%8E%E5%88%A0%E9%99%A4%E8%BE%93%E5%87%BA%E7%9A%84%E8%A1%8C.png)
长话短说,我正在运行这个命令,将一个不断增长的音频文件传输audio.mpg
到ffmpeg
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 时,它会关闭操作。这样您就不必监视整个过程。