答案1
MP4 容器的设计并不具备容错性。
您可以尝试更宽松的容器格式,如 FLV、TS、WebM、MJPEG 等。
您可以尝试设置timeout
参数:
ffmpeg -timeout 10000000 -i "http://ultimakersystem:8080/?action=stream" Ultimaker.mp4
对于 HTTP,超时以微秒为单位。
您也可以尝试添加-listen 1
。
我不知道它是否会起作用...
作为“开箱即用思维”的解决方案,您可以尝试 RTMP 流式传输到本地主机。
执行一个 FFmpeg 作为监听器:
start ffmpeg -y -listen 1 -timeout 10 -f flv -i rtmp://127.0.0.1:5000/mystream/test -vcodec copy test.mp4
执行第二个 FFmpeg 作为 RTMP 流媒体:
使用测试模式的示例:
ffmpeg -re -f lavfi -i testsrc=duration=25000:size=192x108:rate=25 -f lavfi -vcodec libx264 -crf 17 -pix_fmt yuv420p -f flv rtmp://127.0.0.1:5000/mystream/test
当您终止流媒体进程时,监听器进程也将正常关闭。
在批处理文件中使用它的示例:
start ffmpeg -y -listen 1 -timeout 10 -f flv -i rtmp://127.0.0.1:5000/mystream/test -vcodec copy test.mp4
ffmpeg -i "http://ultimakersystem:8080/?action=stream" -f lavfi -vcodec libx264 -crf 17 -pix_fmt yuv420p -f flv rtmp://127.0.0.1:5000/mystream/test