这几天在研究如何使用ffmpeg向rtsp服务器推送视频文件的问题,通过上网查询得到的命令基本都是:ffmpeg -re -i *.mp4 -vcodec libx264 -acodec copy -f rtsp rtsp://ip:port/*.sdp,
但是使用该命令向rtsp服务器EasyDarwin推送时,在内网环境下只能偶尔成功,但如果向公网服务器推送是失败的。
通过询问EasyDarwin群主Babosa,发现需要指定tcp的方式才能成功。
因此,具体的命令是: ffmpeg -re -i *.mp4 -vcodec libx264 -acodec copy -f rtsp -rtsp_transport tcp rtsp://ip:port/*.sdp。需要注意的是,-rtsp_transport 参数需要设置在流格式-f rtsp 后面,这样该命令的执行才是成功的。经过测试,或许是因为视频文件的音频出现了问题,也也许是ffmpeg中没有对应的音频编码器,使用vlc播放,只有视频流,没有音频流。