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

C# 如何在ffmpeg.AutoGen中设置ffmpeg命令行选项,c#,tcp,ffmpeg,udp,rtsp,C#,Tcp,Ffmpeg,Udp,Rtsp,我正在尝试使用FFmpeg.AutoGenlib从我的ip摄像头读取/解码RTSP流。 当ffmpeg尝试通过UDP进行连接时,服务器会做出错误响应。 当我尝试通过ffmpeg exe连接时,也会发生同样的情况: ffmpeg-i rtsp://-vcodec h264 c:\out.mp4 但是当使用-rtsp_传输tcp时,一切正常: ffmpeg-rtsp\u传输tcp-i rtsp://-vcodec h264 c:\out.mp4 有谁能建议如何在FFmpeg.AutoGen中启用这些

我正在尝试使用FFmpeg.AutoGenlib从我的ip摄像头读取/解码RTSP流。 当ffmpeg尝试通过UDP进行连接时,服务器会做出错误响应。 当我尝试通过ffmpeg exe连接时,也会发生同样的情况:

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

但是当使用-rtsp_传输tcp时,一切正常:

ffmpeg-rtsp\u传输tcp-i rtsp://-vcodec h264 c:\out.mp4


有谁能建议如何在FFmpeg.AutoGen中启用这些选项(一般来说,或者特别是-rtsp_transport tcp option)?

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

AVDictionary* opts = null;
ffmpeg.av_dict_set(&opts, "rtsp_transport", "tcp", 0);
public VideoStreamDecoder(string url,AVDictionary* opts, AVHWDeviceType HWDeviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_NONE)
....
ffmpeg.avformat_open_input(&pFormatContext, url, null, &opts);
其次,您应该更改“VideoStreamDecoder.cs”中的一些源代码,如下所示

AVDictionary* opts = null;
ffmpeg.av_dict_set(&opts, "rtsp_transport", "tcp", 0);
public VideoStreamDecoder(string url,AVDictionary* opts, AVHWDeviceType HWDeviceType = AVHWDeviceType.AV_HWDEVICE_TYPE_NONE)
....
ffmpeg.avformat_open_input(&pFormatContext, url, null, &opts);
那么你的代码就可以工作了 (如果您使用RTSP损坏了映像,上述代码也可以使用)