如何在 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 损坏了图像,上面的代码也可以工作)
我正在尝试使用 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 损坏了图像,上面的代码也可以工作)