提交 e631e90c authored 作者: blu's avatar blu

big refacting of communitation architect

上级 576d5a09
...@@ -639,7 +639,7 @@ protected: ...@@ -639,7 +639,7 @@ protected:
av_packet_unref(&packet); av_packet_unref(&packet);
if (ret < 0) { if (ret < 0) {
spdlog::error("error muxing packet"); spdlog::error("evmlmotion error muxing packet");
} }
} }
......
...@@ -188,7 +188,7 @@ private: ...@@ -188,7 +188,7 @@ private:
ipcPort = to_string(ipc["port"]); ipcPort = to_string(ipc["port"]);
} }
urlIn = "rtsp://" + user + ":" + passwd + "@" + ipc["addr"].get<string>() + ":" + ipcPort + "/h264/ch1/sub/av_stream"; urlIn = "rtsp://" + user + ":" + passwd + "@" + ipc["addr"].get<string>() + ":" + ipcPort + "/h264/ch1/main/av_stream";
addr = evpuller["addr"].get<string>(); addr = evpuller["addr"].get<string>();
spdlog::info("evpuller {} connecting to IPC {}", selfId, urlIn); spdlog::info("evpuller {} connecting to IPC {}", selfId, urlIn);
if(addr == "*" || addr == "0.0.0.0") { if(addr == "*" || addr == "0.0.0.0") {
...@@ -401,7 +401,7 @@ public: ...@@ -401,7 +401,7 @@ public:
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
av_log_set_level(AV_LOG_ERROR); av_log_set_level(AV_LOG_INFO);
spdlog::set_level(spdlog::level::info); spdlog::set_level(spdlog::level::info);
//DB::exec(NULL, NULL, NULL,NULL); //DB::exec(NULL, NULL, NULL,NULL);
auto evp = EvPuller(); auto evp = EvPuller();
......
...@@ -316,12 +316,8 @@ protected: ...@@ -316,12 +316,8 @@ protected:
zmq_msg_t msg; zmq_msg_t msg;
AVPacket packet; AVPacket packet;
uint64_t pktCnt = 0; uint64_t pktCnt = 0;
int pktIgnore = 0;
while (true) { while (true) {
if(checkStop() == true) {
bStopSig = true;
break;
}
// if(1 == getppid()) { // if(1 == getppid()) {
// spdlog::error("evpusher {} exit since evdaemon is dead", selfId); // spdlog::error("evpusher {} exit since evdaemon is dead", selfId);
// exit(1); // exit(1);
...@@ -354,6 +350,12 @@ protected: ...@@ -354,6 +350,12 @@ protected:
} }
zmq_msg_close(&msg); zmq_msg_close(&msg);
if(pktCnt == 0 && pktIgnore < 18*7) {
pktIgnore++;
av_packet_unref(&packet);
continue;
}
spdlog::debug("packet stream indx: {:d}", packet.stream_index); spdlog::debug("packet stream indx: {:d}", packet.stream_index);
// relay // relay
AVStream *in_stream =NULL, *out_stream = nullptr; AVStream *in_stream =NULL, *out_stream = nullptr;
...@@ -378,11 +380,10 @@ protected: ...@@ -378,11 +380,10 @@ protected:
ret = av_interleaved_write_frame(pAVFormatRemux, &packet); ret = av_interleaved_write_frame(pAVFormatRemux, &packet);
av_packet_unref(&packet); av_packet_unref(&packet);
if (ret < 0) { if (ret < 0) {
spdlog::error("error muxing packet: {}, {}, {}, {}, restreaming...", av_err2str(ret), packet.dts, packet.pts, packet.dts==AV_NOPTS_VALUE); spdlog::error("evpusher {} error muxing packet: {}, {}, {}, {}, restreaming...", selfId, av_err2str(ret), packet.dts, packet.pts, packet.dts==AV_NOPTS_VALUE);
if(pktCnt != 0 && packet.pts == AV_NOPTS_VALUE) { if(pktCnt != 0 && packet.pts == AV_NOPTS_VALUE) {
// reset // reset
av_write_trailer(pAVFormatRemux); av_write_trailer(pAVFormatRemux);
this_thread::sleep_for(chrono::seconds(5));
freeStream(); freeStream();
getInputFormat(); getInputFormat();
setupStream(); setupStream();
...@@ -467,7 +468,7 @@ public: ...@@ -467,7 +468,7 @@ public:
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
av_log_set_level(AV_LOG_ERROR); av_log_set_level(AV_LOG_INFO);
spdlog::set_level(spdlog::level::info); spdlog::set_level(spdlog::level::info);
EvPusher pusher; EvPusher pusher;
pusher.join(); pusher.join();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论