如何在 FFmpeg.AutoGen 中设置 ffmpeg 命令行选项

How to set ffmpeg command line option in FFmpeg.AutoGen

我正在尝试使用 FFmpeg.AutoGen 库从我的网络摄像机 read/decode RTSP 流。 当 ffmpeg 尝试通过 UDP 连接时,服务器响应错误。 当我尝试通过 ffmpeg exe 连接时,同样的事情发生了:

ffmpeg -i rtsp://<url...> -vcodec h264 c:\out.mp4

但是当使用 -rtsp_transport tcp 时一切正常:

ffmpeg -rtsp_transport tcp -i rtsp://<url...> -vcodec h264 c:\out.mp4

任何人都可以建议如何在 FFmpeg.AutoGen 中启用此类选项(一般而言,或特别是 -rtsp_transport tcp 选项)吗?

首先,您应该像下面这样设置 AVDiconary 的值。

AVDictionary* opts = null;
ffmpeg.av_dict_set(&opts, "rtsp_transport", "tcp", 0);

其次,您应该像下面那样更改 'VideoStreamDecoder.cs' 中的一些源代码。

public VideoStreamDecoder(string url,AVDictionary* opts, AVHWDeviceType HWDeviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_NONE)
....
ffmpeg.avformat_open_input(&pFormatContext, url, null, &opts);

那么你的代码将在 TCP 上运行 (如果您使用 RTSP 损坏了图像,上面的代码也可以工作)