C# 如何在ffmpeg.AutoGen中设置ffmpeg命令行选项
我正在尝试使用FFmpeg.AutoGenlib从我的ip摄像头读取/解码RTSP流。 当ffmpeg尝试通过UDP进行连接时,服务器会做出错误响应。 当我尝试通过ffmpeg exe连接时,也会发生同样的情况: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-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损坏了映像,上述代码也可以使用)