我需要从服务器流式传输音频并一次性保存到文件。
我试过这个。
ssh -p 22 SERVER "ffmpeg -f pulse -i default -b:a 32k -f avi -" | mpv - &>/dev/null 1> file.mp3
但是它运行流并且仅保存来自 mpv 的信息,而不是流输出。
我怎样才能做到这一点?
谢谢。
答案1
--流记录
使用--stream-record
在mpv
:
ssh -p 22 SERVER "ffmpeg -f pulse -i default -b:a 32k -f mp3 -" | mpv --stream-record=output.mp3 -
来自文档:
由于它使用 FFmpeg 的 libavformat 来写入输出文件,因此存在一些问题。例如,通常只有当输出格式与输入格式相同时,它才会起作用。即使它与 ffmpeg 工具一起使用也是如此。其中一个原因是 ffmpeg 及其库包含针对这些问题的某些技巧和解决方法,而外部用户无法使用。
三通复用器
或者三通复用器:
ssh -p 22 SERVER "ffmpeg -f pulse -i default -b:a 32k -f mp3 -" | ffmpeg -y -i - -map 0 -c copy -f tee "output.mp3|[f=mp3]pipe:" | mpv pipe:
不太方便,但可能比使用更强大和灵活--stream-record
。
我没有测试这些命令。