如何将 DShow 输入保存在文件上并同时将其发布到 rtst 流上?

How to save a DShow input on a file and simultaneously publish it on rtst stream?

当您的输入来自设备(例如网络摄像头)时,管道命令无法正常工作,因此您无法使用 2 输出。我需要将网络摄像头流保存在文件 (.mkv) 上,同时将其发布在 rtst 服务器上。我尝试了以下方法:

ffmpeg -y -f dshow -loglevel info -rtbufsize 2147.48M -i "video=my_camera" -vf hflip,rotate=PI ^ -c:v libx264 -preset fast -crf 25 -pix_fmt yuv420p ^ -minrate 2M -maxrate 4M -bufsize 3.5M -s 1920x1080 -f tee “[f=mkv]'C:\test.mkv'|[f=rtsp]rtsp://localhost:8554/mystream]”

我终于做到了。使用 -flags +global_header,与 -map 0:v 选项一样是强制性的。现在运行完美。

ffmpeg -y -f dshow -loglevel 信息 -rtbufsize 2147.48M -i "video=MY_CAMERA" ^ -flags +global_header -c:v libx264 -preset fast -crf 30 -pix_fmt yuv420p ^ -minrate 2M -maxrate 4M -bufsize 3.5M -s 1920x1080 -f tee -map 0:v "C:\out\test.mkv|[f=rtsp]rtsp://localhost:8554/mystream" =10=]