我的电脑上有一个ffmpeg设置,它使用以下代码传输mp3:
ffmpeg -f dshow -i audio="Input device" -c:a libmp3lame -f mpegts udp://192.168.1.2:7777
此外,我有一台服务器,我希望我的python脚本在服务器上全天候运行,并在每次打开/关闭电脑时开始/停止将流写入mp3文件。每次打开电脑时我都需要新文件(例如,使用文件名的时间和日期)来绕过覆盖。使用python的子进程模块和ffmpeg我可以像这样在我的服务器上保存文件:
subprocess.call('ffmpeg -y -i udp://192.168.1.2:7777 -acodec copy output.mp3')
但是我需要条件,什么时候开始录制(如果7777端口正在恢复数据或类似的东西),是否有可能使用python实现这样的事情? 附:抱歉我的英语不好。
答案 0 :(得分:0)
您将遇到的基本问题是UDP是一种无连接协议。换句话说,很难确定“连接”何时不再存在(发送数据的程序已经消失)。
如果你切换到TCP,你应该能够编写一个Python脚本,在循环中运行你的subprocess.call(),每次都给它一个新的文件名。每次PC关闭并且TCP连接关闭时,服务器上运行的ffmpeg应该(你需要测试它以确保)退出,循环将启动一个带有新输出文件名的新连接。