我正在尝试使用FFmpeg.AutoGen lib从IP摄像机读取/解码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破坏了图片,上述代码也可以使用)