如果管道中没有数据,FFmpeg 将静默写入:0

如果管道中没有数据,FFmpeg 将静默写入:0

我有一个 ffmpeg 进程,它不断将PCM数据从标准输入写入mp3文件。我从处理用户语音的远程 UDP 语音服务器接收语音数据。如果用户正在说话 - 数据被发送。收到语音后,我立即将其写入 ffmpeg 标准输入。但如果用户不说话,我不会收到任何数据。这个漏洞可能很大,但除非手动停止接收,否则我永远不会停止 ffmpeg 进程。如果没有数据,我想让 ffmpeg 将静音写入文件。pipe:0是否可以仅使用 ffmpeg 来做到这一点,或者我需要在我这边实现它?如果可能,那么我该怎么做?我尝试使用一些参数和过滤器,但没有找到我需要的东西。

我尝试使用lavfianullsrc使用这个命令:

ffmpeg -y -f lavfi -re -i anullsrc=r=48000:cl=mono -f s16le -ac {Channels} -ar 48000 -i pipe:0 -f segment -segment_time {SegmentSize} -segment_list \"{SegmentListPath}\" -segment_format mp3 -segment_wrap 2 -reset_timestamps 0 -shortest \"{FilePathFormat}\"

但它不起作用。

我是 ffmpeg 的新手,正在处理音频,因此很高兴看到任何帮助

相关内容