实验环境:
Windows 10 : 话筒连接处,我在这里讲话。
树莓派:外置声卡连接处,这里要播放出来我讲话的声音。
两者都联网。
(这里为了说话端随用随开,将接受播放端作为Server。倒过来也其实也可以。)
说话端:(cmd)
更改代码页为utf-8,防止ffmpeg中文乱码
chcp 65001
查看支持的音频设备
ffmpeg -list_devices true -f dshow -i dummy
从里面选取音频输入设备,例如:(-ar (audio rate)采样率, -ac (audio channel)音频频道数)
ffmpeg -f dshow -i audio="麦克风阵列 (USB PnP Audio Device)" -ar 16000 -ac 1 -f mp3 - | nc [IP] [PORT]
播放端:(shell)
nc -lkp [PORT] | ffplay -
成功。
不过这种方法测试出来延迟比较高,在局域网下测试大约延迟在5秒左右。
不过通过修改-ar -ac,可以将带宽占用缩小到很少,只需要20kbps左右。2.5kB/s。
降低延迟的尝试
查阅了相关资料,应该是ffplay本身的问题产生延迟的可能更大一些,在我选定固定的codec的时候,就要开始调整ffplay的参数。
https://stackoverflow.com/questions/16658873/how-to-minimize-the-delay-in-a-live-streaming-with-ffmpeg
https://stackoverflow.com/questions/12020430/look-for-fastest-video-encoder-with-least-lag-to-stream-webcam-streaming-to-ipad/12085571#12085571
https://trac.ffmpeg.org/wiki/StreamingGuide#Latency
最后局域网测试下,这样组合,延迟在1-1.5秒左右,也还行吧,先这样凑合着用。后面再想办法。
nc -lkp [PORT] | ffplay - -probesize 32 -analyzeduration 0 -sync ext