update plugins/input_rtsp/input_rtsp_node.cpp
This commit is contained in:
parent
831c47202e
commit
31a8a877d9
@ -41,6 +41,7 @@ public:
|
||||
height_ = config.ValueOr<int>("height", 1080);
|
||||
use_ffmpeg_ = config.ValueOr<bool>("use_ffmpeg", false);
|
||||
use_mpp_ = config.ValueOr<bool>("use_mpp", true);
|
||||
ffmpeg_force_tcp_ = config.ValueOr<bool>("force_tcp", true);
|
||||
if (ctx.output_queues.empty()) {
|
||||
std::cerr << "[input_rtsp] no downstream queue configured for node " << id_ << "\n";
|
||||
return false;
|
||||
@ -76,10 +77,10 @@ public:
|
||||
std::cout << "[input_rtsp] start url=" << url_ << " fps=" << fps_;
|
||||
#if defined(RK3588_ENABLE_MPP)
|
||||
if (use_mpp_) std::cout << " (ffmpeg demux + mpp decode)";
|
||||
else if (use_ffmpeg_) std::cout << " (ffmpeg cpu decode)";
|
||||
else if (use_ffmpeg_) std::cout << " (ffmpeg cpu decode" << (ffmpeg_force_tcp_ ? ", tcp" : ", udp") << ")";
|
||||
else std::cout << " (stub)";
|
||||
#else
|
||||
if (use_ffmpeg_) std::cout << " (ffmpeg cpu decode)";
|
||||
if (use_ffmpeg_) std::cout << " (ffmpeg cpu decode" << (ffmpeg_force_tcp_ ? ", tcp" : ", udp") << ")";
|
||||
else std::cout << " (stub)";
|
||||
#endif
|
||||
std::cout << "\n";
|
||||
@ -125,12 +126,16 @@ private:
|
||||
int video_stream = -1;
|
||||
AVRational time_base{1, 1000};
|
||||
|
||||
if (avformat_open_input(&fmt_ctx, url_.c_str(), nullptr, nullptr) < 0) {
|
||||
AVDictionary* opts = nullptr;
|
||||
if (ffmpeg_force_tcp_) av_dict_set(&opts, "rtsp_transport", "tcp", 0);
|
||||
if (avformat_open_input(&fmt_ctx, url_.c_str(), nullptr, &opts) < 0) {
|
||||
std::cerr << "[input_rtsp] avformat_open_input failed: " << url_ << "\n";
|
||||
av_dict_free(&opts);
|
||||
Cleanup(fmt_ctx, codec_ctx, pkt, frm);
|
||||
LoopStub();
|
||||
return;
|
||||
}
|
||||
av_dict_free(&opts);
|
||||
if (avformat_find_stream_info(fmt_ctx, nullptr) < 0) {
|
||||
std::cerr << "[input_rtsp] avformat_find_stream_info failed\n";
|
||||
Cleanup(fmt_ctx, codec_ctx, pkt, frm);
|
||||
@ -373,12 +378,16 @@ private:
|
||||
int video_stream = -1;
|
||||
AVRational time_base{1, 1000};
|
||||
|
||||
if (avformat_open_input(&fmt_ctx, url_.c_str(), nullptr, nullptr) < 0) {
|
||||
AVDictionary* opts = nullptr;
|
||||
if (ffmpeg_force_tcp_) av_dict_set(&opts, "rtsp_transport", "tcp", 0);
|
||||
if (avformat_open_input(&fmt_ctx, url_.c_str(), nullptr, &opts) < 0) {
|
||||
std::cerr << "[input_rtsp] avformat_open_input failed: " << url_ << "\n";
|
||||
av_dict_free(&opts);
|
||||
Cleanup(fmt_ctx, nullptr, pkt, nullptr);
|
||||
LoopStub();
|
||||
return;
|
||||
}
|
||||
av_dict_free(&opts);
|
||||
if (avformat_find_stream_info(fmt_ctx, nullptr) < 0) {
|
||||
std::cerr << "[input_rtsp] avformat_find_stream_info failed\n";
|
||||
Cleanup(fmt_ctx, nullptr, pkt, nullptr);
|
||||
@ -519,6 +528,7 @@ private:
|
||||
uint64_t frame_id_ = 0;
|
||||
bool use_ffmpeg_ = false;
|
||||
bool use_mpp_ = true;
|
||||
bool ffmpeg_force_tcp_ = true;
|
||||
};
|
||||
|
||||
REGISTER_NODE(InputRtspNode, "input_rtsp");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user