我正在开发一些依赖于 Wi-Fi RAK5206 电子板的 C++ 项目。我正在使用 ffmpeg 库来获取视频和音频流,我遇到了可以启动和停止流四次的问题,但是当我想第五次启动时出现错误。错误描述是Invalid data found when processing input
当我调用avformat_open_input
函数并且我需要重新启动电子板,重新连接到 Wi-Fi 等时发生。
我通过 Wireshark 应用程序发现 VLC 正在工作,并且在TEARDOWN
被调用时它正在发送一些 BYE 数据包。我想知道错误是否取决于他们,因为我没有从我的应用程序发送。如何进行设置以强制 ffmpeg 发送 BYE 数据包?
我在rtpenc.h文件中找到了一些声明,当我想连接时设置和尝试这些选项,但显然没有成功。我用于设置选项和打开输入的代码:
AVDictionary* stream_opts = 0;
av_dict_set(&stream_opts, "rtpflags", "send_bye", 0);
avformat_open_input(&format_ctx, url.c_str(), NULL, &stream_opts);