ZLMediaKit webrtc录像

简介: ZLMediaKit webrtc录像

webrtc录像

请求录制

HTTP调用流程

  ZLM将HTTP统一在WebApi.cpp中注册并处理,调用录制接口/index/api/startRecord,我们可以查找此接口找到处理的流程:

  1. 首先根据请求参数找到流(MediaSource)
  2. 调用setupRecord设置开始录像
  3. 响应HTTP请求
    // 开始录制hls或MP4
    api_regist("/index/api/startRecord",[](API_ARGS_MAP_ASYNC){
        CHECK_SECRET();
        CHECK_ARGS("type","vhost","app","stream");
    // 找到MediaSource
        auto src = MediaSource::find(allArgs["vhost"], allArgs["app"], allArgs["stream"] );
        if (!src) {
            throw ApiRetException("can not find the stream", API::NotFound);
        }
    // 异步执行
        src->getOwnerPoller()->async([=]() mutable {
        // 
            auto result = src->setupRecord((Recorder::type)allArgs["type"].as<int>(), true, allArgs["customized_path"], allArgs["max_second"].as<size_t>());
            val["result"] = result;
            val["code"] = result ? API::Success : API::OtherFailed;
            val["msg"] = result ? "success" :  "start record failed";
            invoker(200, headerOut, val.toStyledString());
        });
    });

  ‍

bool MediaSource::setupRecord(Recorder::type type, bool start, const string &custom_path, size_t max_second){
    auto listener = _listener.lock();
    if (!listener) {
        WarnL << "未设置MediaSource的事件监听者,setupRecord失败:" << getSchema() << "/" << getVhost() << "/" << getApp() << "/" << getId();
        return false;
    }
    return listener->setupRecord(*this, type, start, custom_path, max_second);
}

bool MediaSourceEventInterceptor::setupRecord(MediaSource &sender, Recorder::type type, bool start, const string &custom_path, size_t max_second) {
    auto listener = _listener.lock();
    if (!listener) {
        return false;
    }
    return listener->setupRecord(sender, type, start, custom_path, max_second);
}

bool MultiMediaSourceMuxer::setupRecord(MediaSource &sender, Recorder::type type, bool start, const string &custom_path, size_t max_second) {
    switch (type) {
        case Recorder::type_hls : {
            if (start && !_hls) {
                //开始录制
                auto hls = dynamic_pointer_cast<HlsRecorder>(makeRecorder(sender, getTracks(), type, custom_path, max_second));
                if (hls) {
                    //设置HlsMediaSource的事件监听器
                    hls->setListener(shared_from_this());
                }
                _hls = hls;
            } else if (!start && _hls) {
                //停止录制
                _hls = nullptr;
            }
            return true;
        }
        case Recorder::type_mp4 : {
            if (start && !_mp4) {
                //开始录制
        // sender  - MediaSource
        // type - mp4
        // custom_path - 录像文件存放路径(默认使用配置文件中的路径)
        // max_second - 录制的最长时间
                _mp4 = makeRecorder(sender, getTracks(), type, custom_path, max_second);
            } else if (!start && _mp4) {
                //停止录制
                _mp4 = nullptr;
            }
            return true;
        }
        default : return false;
    }
}

// 创建Recorder对象
static std::shared_ptr<MediaSinkInterface> makeRecorder(MediaSource &sender, const vector<Track::Ptr> &tracks, Recorder::type type, const string &custom_path, size_t max_second){
    auto recorder = Recorder::createRecorder(type, sender.getVhost(), sender.getApp(), sender.getId(), custom_path, max_second);
    for (auto &track : tracks) {
    // 添加轨道
        recorder->addTrack(track);
    }
    return recorder;
}


std::shared_ptr<MediaSinkInterface> Recorder::createRecorder(type type, const string &vhost, const string &app, const string &stream_id, const string &customized_path, size_t max_second){
    auto path = Recorder::getRecordPath(type, vhost, app, stream_id, customized_path);
    auto backPath = Recorder::getBackRecordPath(type, vhost, app, stream_id, customized_path);
    switch (type) {
        case Recorder::type_hls: {
#if defined(ENABLE_HLS)
            GET_CONFIG(bool, enable_vhost, General::kEnableVhost);
            auto ret = std::make_shared<HlsRecorder>(path, enable_vhost ? string(VHOST_KEY) + "=" + vhost : "");
            ret->setMediaSource(vhost, app, stream_id);
            return ret;
#else
            throw std::invalid_argument("hls相关功能未打开,请开启ENABLE_HLS宏后编译再测试");
#endif

        }

        case Recorder::type_mp4: {
#if defined(ENABLE_MP4)
        // 创建MP4Recoder对象
            return std::make_shared<MP4Recorder>(path, backPath, vhost, app, stream_id, max_second);
#else
            throw std::invalid_argument("mp4相关功能未打开,请开启ENABLE_MP4宏后编译再测试");
#endif
        }

        default: throw std::invalid_argument("未知的录制类型");
    }
}

创建

自动录制

[MediaServer] mediakit::MP4Recorder::MP4Recorder MP4Recorder.cpp:24
[MediaServer] __gnu_cxx::new_allocator<mediakit::MP4Recorder>::construct<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> new_allocator.h:146
[MediaServer] std::allocator_traits<std::allocator<mediakit::MP4Recorder> >::construct<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> alloc_traits.h:483
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:548
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:679
[MediaServer] std::__shared_ptr<mediakit::MP4Recorder, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:1344
[MediaServer] std::shared_ptr<mediakit::MP4Recorder>::shared_ptr<std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:359
[MediaServer] std::allocate_shared<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:702
[MediaServer] std::make_shared<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:718
[MediaServer] mediakit::Recorder::createRecorder Recorder.cpp:76
[MediaServer] mediakit::MultiMediaSourceMuxer::MultiMediaSourceMuxer MultiMediaSourceMuxer.cpp:114
[MediaServer] __gnu_cxx::new_allocator<mediakit::MultiMediaSourceMuxer>::construct<mediakit::MultiMediaSourceMuxer, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> new_allocator.h:146
[MediaServer] std::allocator_traits<std::allocator<mediakit::MultiMediaSourceMuxer> >::construct<mediakit::MultiMediaSourceMuxer, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> alloc_traits.h:483
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::MultiMediaSourceMuxer, std::allocator<mediakit::MultiMediaSourceMuxer>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr_base.h:548
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<mediakit::MultiMediaSourceMuxer, std::allocator<mediakit::MultiMediaSourceMuxer>, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr_base.h:679
[MediaServer] std::__shared_ptr<mediakit::MultiMediaSourceMuxer, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<mediakit::MultiMediaSourceMuxer>, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr_base.h:1344
[MediaServer] std::shared_ptr<mediakit::MultiMediaSourceMuxer>::shared_ptr<std::allocator<mediakit::MultiMediaSourceMuxer>, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr.h:359
[MediaServer] std::allocate_shared<mediakit::MultiMediaSourceMuxer, std::allocator<mediakit::MultiMediaSourceMuxer>, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr.h:702
[MediaServer] std::make_shared<mediakit::MultiMediaSourceMuxer, const std::string &, const std::string &, const std::string &, float, mediakit::ProtocolOption &> shared_ptr.h:718
[MediaServer] mediakit::RtspMediaSourceImp::setProtocolOption RtspMediaSourceImp.h:84
[MediaServer] <lambda>::operator()(const std::string &, const mediakit::ProtocolOption &) WebRtcTransport.cpp:1171
[MediaServer] std::_Function_handler<void (const std::string &, const mediakit::ProtocolOption &), <lambda> >::_M_invoke(const std::_Any_data &, const std::string &, const mediakit::ProtocolOption &) std_function.h:300
[MediaServer] std::function<void (const std::string &, const mediakit::ProtocolOption &)>::operator()(const std::string &, const mediakit::ProtocolOption &) const std_function.h:688
[MediaServer] <lambda>::operator()(const mediakit::MediaOriginType &, const mediakit::MediaInfo &, const mediakit::Broadcast::PublishAuthInvoker &, toolkit::SockInfo &) const WebHook.cpp:302
[MediaServer] std::_Function_handler<void (const mediakit::MediaOriginType &, const mediakit::MediaInfo &, const std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &), <lambda> >::_M_invoke(const std::_Any_data &, const mediakit::MediaOriginType &, const mediakit::MediaInfo &, const std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &) std_function.h:300
[MediaServer] std::function<void (mediakit::MediaOriginType &&, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &)>::operator()(mediakit::MediaOriginType &&, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &) const std_function.h:688
[MediaServer] toolkit::EventDispatcher::emitEvent<mediakit::MediaOriginType, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &>(mediakit::MediaOriginType &&, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &) NoticeCenter.h:57
[MediaServer] toolkit::NoticeCenter::emitEvent<mediakit::MediaOriginType, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &>(const std::string &, mediakit::MediaOriginType &&, mediakit::MediaInfo &, std::function<void (const std::string &, const mediakit::ProtocolOption &)> &, toolkit::SockInfo &) NoticeCenter.h:102
[MediaServer] push_plugin(toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &) WebRtcTransport.cpp:1180
[MediaServer] std::_Function_handler<void (toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &), void (*)(toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &)>::_M_invoke(const std::_Any_data &, toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &) std_function.h:300
[MediaServer] std::function<void (toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &)>::operator()(toolkit::Session &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &) const std_function.h:688
[MediaServer] WebRtcPluginManager::getAnswerSdp(toolkit::Session &, const std::string &, const std::string &, const WebRtcArgs &, const std::function<void (const WebRtcInterface &)> &) WebRtcTransport.cpp:1118
[MediaServer] <lambda>::operator()(toolkit::SockInfo &, mediakit::HttpSession::KeyValue &, const HttpAllArgs<std::string> &, Json::Value &, const mediakit::HttpSession::HttpResponseInvoker &) const WebApi.cpp:1529
[MediaServer] std::_Function_handler<void (toolkit::SockInfo &, mediakit::StrCaseMap &, const HttpAllArgs<std::string> &, Json::Value &, const mediakit::HttpResponseInvokerImp &), <lambda> >::_M_invoke(const std::_Any_data &, toolkit::SockInfo &, mediakit::StrCaseMap &, const HttpAllArgs<std::string> &, Json::Value &, const mediakit::HttpResponseInvokerImp &) std_function.h:300
[MediaServer] std::function<void (toolkit::SockInfo &, mediakit::StrCaseMap &, const HttpAllArgs<std::string> &, Json::Value &, const mediakit::HttpResponseInvokerImp &)>::operator()(toolkit::SockInfo &, mediakit::StrCaseMap &, const HttpAllArgs<std::string> &, Json::Value &, const mediakit::HttpResponseInvokerImp &) const std_function.h:688
[MediaServer] <lambda>::operator()(const mediakit::Parser &, const mediakit::HttpSession::HttpResponseInvoker &, toolkit::SockInfo &) const WebApi.cpp:154
[MediaServer] std::_Function_handler<void (const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, toolkit::SockInfo &), <lambda> >::_M_invoke(const std::_Any_data &, const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, toolkit::SockInfo &) std_function.h:300
[MediaServer] std::function<void (const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, toolkit::SockInfo &)>::operator()(const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, toolkit::SockInfo &) const std_function.h:688
[MediaServer] <lambda>::operator()(const mediakit::Parser &, const mediakit::HttpSession::HttpResponseInvoker &, bool &, toolkit::SockInfo &) const WebApi.cpp:273
[MediaServer] std::_Function_handler<void (const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &), <lambda> >::_M_invoke(const std::_Any_data &, const mediakit::Parser &, const mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &) std_function.h:300
[MediaServer] std::function<void (mediakit::Parser &, mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &)>::operator()(mediakit::Parser &, mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &) const std_function.h:688
[MediaServer] toolkit::EventDispatcher::emitEvent<mediakit::Parser &, mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &> NoticeCenter.h:57
[MediaServer] toolkit::NoticeCenter::emitEvent<mediakit::Parser &, mediakit::HttpResponseInvokerImp &, bool &, toolkit::SockInfo &> NoticeCenter.h:102
[MediaServer] mediakit::HttpSession::emitHttpEvent HttpSession.cpp:665
[MediaServer] mediakit::HttpSession::<lambda>::operator()(const char *, size_t) const HttpSession.cpp:700
[MediaServer] std::_Function_handler<bool (const char *, long unsigned int), <lambda> >::_M_invoke(const std::_Any_data &, const char *&&, unsigned long &&) std_function.h:285
[MediaServer] std::function<bool (const char *, unsigned long)>::operator()(const char *, unsigned long) const std_function.h:688
[MediaServer] mediakit::HttpSession::onRecvContent HttpSession.cpp:90
[MediaServer] mediakit::HttpRequestSplitter::input HttpRequestSplitter.cpp:95
[MediaServer] mediakit::HttpSession::onRecv HttpSession.cpp:98
[MediaServer] toolkit::TcpSessionWithSSL<mediakit::HttpSession>::public_onRecv TcpSession.h:43
[MediaServer] <lambda#2>::operator()(const std::shared_ptr<toolkit::Buffer> &) const TcpSession.h:29
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &), <lambda#2> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &)>::operator()(const std::shared_ptr<toolkit::Buffer> &) const std_function.h:688
[MediaServer] toolkit::SSL_Box::flushReadBio SSLBox.cpp:430
[MediaServer] toolkit::SSL_Box::flush SSLBox.cpp:451
[MediaServer] toolkit::SSL_Box::onRecv SSLBox.cpp:335
[MediaServer] toolkit::TcpSessionWithSSL<mediakit::HttpSession>::onRecv TcpSession.h:38
[MediaServer] toolkit::TcpServer::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const TcpServer.cpp:122
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

http接口请求录制

  • ::::operator()(void) WebApi.cpp:1254
  • mediakit::MediaSource::setupRecord MediaSource.cpp:259
  • mediakit::MediaSourceEventInterceptor::setupRecord MediaSource.cpp:744
  • mediakit::MultiMediaSourceMuxer::setupRecord MultiMediaSourceMuxer.cpp:220
  • mediakit::makeRecorder MultiMediaSourceMuxer.cpp:41
  • mediakit::Recorder::createRecorder Recorder.cpp:76
  • mediakit::MP4Recorder::MP4Recorder MP4Recorder.cpp:24
[MediaServer] mediakit::MP4Recorder::MP4Recorder MP4Recorder.cpp:24
[MediaServer] __gnu_cxx::new_allocator<mediakit::MP4Recorder>::construct<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> new_allocator.h:146
[MediaServer] std::allocator_traits<std::allocator<mediakit::MP4Recorder> >::construct<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> alloc_traits.h:483
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:548
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:679
[MediaServer] std::__shared_ptr<mediakit::MP4Recorder, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr_base.h:1344
[MediaServer] std::shared_ptr<mediakit::MP4Recorder>::shared_ptr<std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:359
[MediaServer] std::allocate_shared<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:702
[MediaServer] std::make_shared<mediakit::MP4Recorder, std::string &, const std::string &, const std::string &, const std::string &, unsigned long &> shared_ptr.h:718
[MediaServer] mediakit::Recorder::createRecorder Recorder.cpp:76
[MediaServer] mediakit::makeRecorder MultiMediaSourceMuxer.cpp:41
[MediaServer] mediakit::MultiMediaSourceMuxer::setupRecord MultiMediaSourceMuxer.cpp:220
[MediaServer] mediakit::MediaSourceEventInterceptor::setupRecord MediaSource.cpp:744
[MediaServer] mediakit::MediaSource::setupRecord MediaSource.cpp:259
[MediaServer] <lambda>::<lambda>::operator()(void) WebApi.cpp:1254
[MediaServer] std::_Function_handler<void (), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &) std_function.h:300
[MediaServer] std::function<void ()>::operator()() const std_function.h:688
[MediaServer] toolkit::TaskCancelableImp<void ()>::operator()() const TaskExecutor.h:111
[MediaServer] <lambda#1>::operator()(const std::shared_ptr<toolkit::TaskCancelableImp<void ()> > &) const EventPoller.cpp:237
[MediaServer] toolkit::List<std::shared_ptr<toolkit::TaskCancelableImp<void ()> > >::for_each<<lambda#1> >(<lambda#1> &&) List.h:203
[MediaServer] toolkit::EventPoller::onPipeEvent EventPoller.cpp:235
[MediaServer] toolkit::EventPoller::<lambda>::operator()(int) const EventPoller.cpp:67
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

  ‍

addTrack

[MediaServer] mediakit::MP4Recorder::addTrack MP4Recorder.cpp:127
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackReady MultiMediaSourceMuxer.cpp:341
[MediaServer] mediakit::MediaSink::<lambda>::operator()(void) const MediaSink.cpp:36
[MediaServer] std::_Function_handler<void (), <lambda> >::_M_invoke(const std::_Any_data &) std_function.h:300
[MediaServer] std::function<void ()>::operator()() const std_function.h:688
[MediaServer] mediakit::MediaSink::checkTrackIfReady MediaSink.cpp:91
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:80
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:191
[MediaServer] mediakit::H264Track::<lambda>::operator()(const char *, size_t, size_t) const H264.cpp:160
[MediaServer] std::_Function_handler<void (const char *, long unsigned int, long unsigned int), <lambda> >::_M_invoke(const std::_Any_data &, const char *&&, unsigned long &&, unsigned long &&) std_function.h:300
[MediaServer] std::function<void (const char *, unsigned long, unsigned long)>::operator()(const char *, unsigned long, unsigned long) const std_function.h:688
[MediaServer] mediakit::splitH264(const char *, unsigned long, unsigned long, const std::function<void (const char *, unsigned long, unsigned long)> &) H264.cpp:77
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:158
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264RtpDecoder::outputFrame H264Rtp.cpp:189
[MediaServer] mediakit::H264RtpDecoder::singleFrame H264Rtp.cpp:81
[MediaServer] mediakit::H264RtpDecoder::unpackStapA H264Rtp.cpp:97
[MediaServer] mediakit::H264RtpDecoder::decodeRtp H264Rtp.cpp:157
[MediaServer] mediakit::H264RtpDecoder::inputRtp H264Rtp.cpp:50
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:58
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:137
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

http接口请求录制

  • ::::operator()(void) WebApi.cpp:1254
  • mediakit::MediaSource::setupRecord MediaSource.cpp:259
  • mediakit::MediaSourceEventInterceptor::setupRecord MediaSource.cpp:744
  • mediakit::MultiMediaSourceMuxer::setupRecord MultiMediaSourceMuxer.cpp:220
  • mediakit::makeRecorder MultiMediaSourceMuxer.cpp:43
  • mediakit::MP4Recorder::addTrack MP4Recorder.cpp:127
[MediaServer] mediakit::MP4Recorder::addTrack MP4Recorder.cpp:127
[MediaServer] mediakit::makeRecorder MultiMediaSourceMuxer.cpp:43
[MediaServer] mediakit::MultiMediaSourceMuxer::setupRecord MultiMediaSourceMuxer.cpp:220
[MediaServer] mediakit::MediaSourceEventInterceptor::setupRecord MediaSource.cpp:744
[MediaServer] mediakit::MediaSource::setupRecord MediaSource.cpp:259
[MediaServer] <lambda>::<lambda>::operator()(void) WebApi.cpp:1254
[MediaServer] std::_Function_handler<void (), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &) std_function.h:300
[MediaServer] std::function<void ()>::operator()() const std_function.h:688
[MediaServer] toolkit::TaskCancelableImp<void ()>::operator()() const TaskExecutor.h:111
[MediaServer] <lambda#1>::operator()(const std::shared_ptr<toolkit::TaskCancelableImp<void ()> > &) const EventPoller.cpp:237
[MediaServer] toolkit::List<std::shared_ptr<toolkit::TaskCancelableImp<void ()> > >::for_each<<lambda#1> >(<lambda#1> &&) List.h:203
[MediaServer] toolkit::EventPoller::onPipeEvent EventPoller.cpp:235
[MediaServer] toolkit::EventPoller::<lambda>::operator()(int) const EventPoller.cpp:67
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

[MediaServer] mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:101
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
[MediaServer] std::_Function_handler<bool (const std::shared_ptr<mediakit::Frame> &), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<mediakit::Frame> &) std_function.h:285
[MediaServer] std::function<bool (const std::shared_ptr<mediakit::Frame> &)>::operator()(const std::shared_ptr<mediakit::Frame> &) const std_function.h:688
[MediaServer] mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:75
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:162
[MediaServer] toolkit::List<std::shared_ptr<mediakit::Frame> >::for_each<<lambda> >(mediakit::MediaSink::<lambda> &&) List.h:203
[MediaServer] mediakit::MediaSink::emitAllTrackReady MediaSink.cpp:161
[MediaServer] mediakit::MediaSink::checkTrackIfReady MediaSink.cpp:113
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:80
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::CommonRtpDecoder::inputRtp CommonRtp.cpp:44
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:64
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:129
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

http接口请求

  • toolkit::EventPoller:: EventPoller.cpp:304
  • toolkit::Socket::::operator()(int) const Socket.cpp:259
  • toolkit::Socket:: Socket.cpp:318
  • toolkit::UdpServer::::::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
  • toolkit:: UdpServer.cpp:134
  • WebRtcSession:: WebRtcSession.cpp:70
  • WebRtcTransport:: WebRtcTransport.cpp:320
  • WebRtcTransportImp:: WebRtcTransport.cpp:856
  • WrappedRtpTrack:: WebRtcTransport.cpp:884
  • RtpChannel:: WebRtcTransport.cpp:635
  • mediakit::RtpTrack:: RtpReceiver.cpp:106
  • mediakit::PacketSortorstd::shared_ptr:: RtpReceiver.h:76
  • mediakit::PacketSortorstd::shared_ptr:: RtpReceiver.h:129
  • mediakit::PacketSortorstd::shared_ptr:: RtpReceiver.h:91
  • mediakit::PacketSortorstd::shared_ptr:: RtpReceiver.h:122
  • mediakit::RtpTrack::::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
  • mediakit::RtpTrackImp:: RtpReceiver.cpp:133
  • WebRtcTransportImp::::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
  • WebRtcTransportImp:: WebRtcTransport.cpp:950
  • WebRtcPusher:: WebRtcPusher.cpp:83
  • mediakit::RtspMediaSourceImp:: RtspMediaSourceImp.h:59
  • mediakit::RtspDemuxer:: RtspDemuxer.cpp:64
  • mediakit::CommonRtpDecoder::inputRtp CommonRtp.cpp:44
  • mediakit::FrameDispatcher::inputFrame Frame.h:331

  • mediakit::FrameDispatcher::inputFrame Frame.h:331

  • mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
  • mediakit::MediaSink::::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
  • mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
  • mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:101
[MediaServer] mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:101
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
[MediaServer] std::_Function_handler<bool (const std::shared_ptr<mediakit::Frame> &), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<mediakit::Frame> &) std_function.h:285
[MediaServer] std::function<bool (const std::shared_ptr<mediakit::Frame> &)>::operator()(const std::shared_ptr<mediakit::Frame> &) const std_function.h:688
[MediaServer] mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:75
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::CommonRtpDecoder::inputRtp CommonRtp.cpp:44
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:64
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:129
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

2

[MediaServer] mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:101
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
[MediaServer] std::_Function_handler<bool (const std::shared_ptr<mediakit::Frame> &), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<mediakit::Frame> &) std_function.h:285
[MediaServer] std::function<bool (const std::shared_ptr<mediakit::Frame> &)>::operator()(const std::shared_ptr<mediakit::Frame> &) const std_function.h:688
[MediaServer] mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:206
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:153
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:75
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:206
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:153
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264RtpDecoder::outputFrame H264Rtp.cpp:189
[MediaServer] mediakit::H264RtpDecoder::mergeFu H264Rtp.cpp:139
[MediaServer] mediakit::H264RtpDecoder::decodeRtp H264Rtp.cpp:161
[MediaServer] mediakit::H264RtpDecoder::inputRtp H264Rtp.cpp:50
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:58
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:129
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

  ‍

创建文件

  在输入帧)时时如果满足下来条件会创建文件

  1. _muxer为空
  2. 到了切片时间,并且只有音频
  3. 到了切片时间,有视频并且遇到视频关键帧
[MediaServer] mediakit::MP4Recorder::createFile MP4Recorder.cpp:39
[MediaServer] mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:116
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
[MediaServer] std::_Function_handler<bool (const std::shared_ptr<mediakit::Frame> &), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<mediakit::Frame> &) std_function.h:285
[MediaServer] std::function<bool (const std::shared_ptr<mediakit::Frame> &)>::operator()(const std::shared_ptr<mediakit::Frame> &) const std_function.h:688
[MediaServer] mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:185
[MediaServer] mediakit::H264Track::<lambda>::operator()(const char *, size_t, size_t) const H264.cpp:160
[MediaServer] std::_Function_handler<void (const char *, long unsigned int, long unsigned int), <lambda> >::_M_invoke(const std::_Any_data &, const char *&&, unsigned long &&, unsigned long &&) std_function.h:300
[MediaServer] std::function<void (const char *, unsigned long, unsigned long)>::operator()(const char *, unsigned long, unsigned long) const std_function.h:688
[MediaServer] mediakit::splitH264(const char *, unsigned long, unsigned long, const std::function<void (const char *, unsigned long, unsigned long)> &) H264.cpp:77
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:158
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:75
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:162
[MediaServer] toolkit::List<std::shared_ptr<mediakit::Frame> >::for_each<<lambda> >(mediakit::MediaSink::<lambda> &&) List.h:203
[MediaServer] mediakit::MediaSink::emitAllTrackReady MediaSink.cpp:161
[MediaServer] mediakit::MediaSink::checkTrackIfReady MediaSink.cpp:113
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:80
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::CommonRtpDecoder::inputRtp CommonRtp.cpp:44
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:64
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:129
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

  http接口请求

[MediaServer] mediakit::MP4Recorder::createFile MP4Recorder.cpp:39
[MediaServer] mediakit::MP4Recorder::inputFrame MP4Recorder.cpp:116
[MediaServer] mediakit::MultiMediaSourceMuxer::onTrackFrame MultiMediaSourceMuxer.cpp:430
[MediaServer] mediakit::MediaSink::<lambda>::operator()(const mediakit::Frame::Ptr &) const MediaSink.cpp:42
[MediaServer] std::_Function_handler<bool (const std::shared_ptr<mediakit::Frame> &), <lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<mediakit::Frame> &) std_function.h:285
[MediaServer] std::function<bool (const std::shared_ptr<mediakit::Frame> &)>::operator()(const std::shared_ptr<mediakit::Frame> &) const std_function.h:688
[MediaServer] mediakit::FrameWriterInterfaceHelper::inputFrame Frame.h:293
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:206
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:153
[MediaServer] mediakit::MediaSink::inputFrame MediaSink.cpp:75
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264Track::inputFrame_l H264.cpp:206
[MediaServer] mediakit::H264Track::inputFrame H264.cpp:153
[MediaServer] mediakit::FrameDispatcher::inputFrame Frame.h:331
[MediaServer] mediakit::H264RtpDecoder::outputFrame H264Rtp.cpp:189
[MediaServer] mediakit::H264RtpDecoder::mergeFu H264Rtp.cpp:139
[MediaServer] mediakit::H264RtpDecoder::decodeRtp H264Rtp.cpp:161
[MediaServer] mediakit::H264RtpDecoder::inputRtp H264Rtp.cpp:50
[MediaServer] mediakit::RtspDemuxer::inputRtp RtspDemuxer.cpp:58
[MediaServer] mediakit::RtspMediaSourceImp::onWrite RtspMediaSourceImp.h:59
[MediaServer] WebRtcPusher::onRecvRtp WebRtcPusher.cpp:83
[MediaServer] WebRtcTransportImp::onSortedRtp WebRtcTransport.cpp:950
[MediaServer] WebRtcTransportImp::<lambda>::operator()(mediakit::RtpPacket::Ptr) WebRtcTransport.cpp:830
[MediaServer] std::_Function_handler<void (std::shared_ptr<mediakit::RtpPacket>), <lambda> >::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket> &&) std_function.h:300
[MediaServer] std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const std_function.h:688
[MediaServer] mediakit::RtpTrackImp::onRtpSorted RtpReceiver.cpp:133
[MediaServer] mediakit::RtpTrack::<lambda>::operator()(uint16_t, mediakit::RtpPacket::Ptr &) const RtpReceiver.cpp:18
[MediaServer] std::_Function_handler<void (short unsigned int, std::shared_ptr<mediakit::RtpPacket> &), <lambda> >::_M_invoke(const std::_Any_data &, unsigned short &&, std::shared_ptr<mediakit::RtpPacket> &) std_function.h:300
[MediaServer] std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket> &)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket> &) const std_function.h:688
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator RtpReceiver.h:122
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket RtpReceiver.h:91
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket RtpReceiver.h:129
[MediaServer] mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket RtpReceiver.h:76
[MediaServer] mediakit::RtpTrack::inputRtp RtpReceiver.cpp:106
[MediaServer] RtpChannel::inputRtp WebRtcTransport.cpp:635
[MediaServer] WrappedRtpTrack::inputRtp WebRtcTransport.cpp:884
[MediaServer] WebRtcTransportImp::onRtp WebRtcTransport.cpp:856
[MediaServer] WebRtcTransport::inputSockData WebRtcTransport.cpp:320
[MediaServer] WebRtcSession::onRecv WebRtcSession.cpp:70
[MediaServer] toolkit::emitSessionRecv UdpServer.cpp:134
[MediaServer] toolkit::UdpServer::<lambda>::<lambda>::operator()(const toolkit::Buffer::Ptr &, sockaddr *, int) const UdpServer.cpp:257
[MediaServer] std::_Function_handler<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int), <lambda>::<lambda> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *&&, int &&) std_function.h:300
[MediaServer] std::function<void (const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int)>::operator()(const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) const std_function.h:688
[MediaServer] toolkit::Socket::onRead Socket.cpp:318
[MediaServer] toolkit::Socket::<lambda>::operator()(int) const Socket.cpp:259
[MediaServer] std::_Function_handler<void (int), <lambda> >::_M_invoke(const std::_Any_data &, int &&) std_function.h:300
[MediaServer] std::function<void (int)>::operator()(int) const std_function.h:688
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:304
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263

关闭文件

[MediaServer] mediakit::MP4Recorder::asyncClose MP4Recorder.cpp:66
[MediaServer] mediakit::MP4Recorder::closeFile MP4Recorder.cpp:96
[MediaServer] mediakit::MP4Recorder::~MP4Recorder MP4Recorder.cpp:36
[MediaServer] __gnu_cxx::new_allocator<mediakit::MP4Recorder>::destroy<mediakit::MP4Recorder> new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<mediakit::MP4Recorder> >::destroy<mediakit::MP4Recorder> alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::MP4Recorder, std::allocator<mediakit::MP4Recorder>, (__gnu_cxx::_Lock_policy)2>::_M_dispose shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<mediakit::MediaSinkInterface, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<mediakit::MediaSinkInterface>::~shared_ptr shared_ptr.h:103
[MediaServer] mediakit::MultiMediaSourceMuxer::~MultiMediaSourceMuxer MultiMediaSourceMuxer.h:74
[MediaServer] __gnu_cxx::new_allocator<mediakit::MultiMediaSourceMuxer>::destroy<mediakit::MultiMediaSourceMuxer> new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<mediakit::MultiMediaSourceMuxer> >::destroy<mediakit::MultiMediaSourceMuxer> alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::MultiMediaSourceMuxer, std::allocator<mediakit::MultiMediaSourceMuxer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<mediakit::FrameWriterInterface, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<mediakit::FrameWriterInterface>::~shared_ptr shared_ptr.h:103
[MediaServer] std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> >::~pair stl_pair.h:208
[MediaServer] __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::destroy<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > > >::destroy<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > alloc_traits.h:496
[MediaServer] std::_Rb_tree<void *, std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> >, std::_Select1st<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > >, std::less<void *>, std::allocator<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::_M_destroy_node stl_tree.h:642
[MediaServer] std::_Rb_tree<void *, std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> >, std::_Select1st<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > >, std::less<void *>, std::allocator<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::_M_drop_node stl_tree.h:650
[MediaServer] std::_Rb_tree<void *, std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> >, std::_Select1st<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > >, std::less<void *>, std::allocator<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::_M_erase stl_tree.h:1920
[MediaServer] std::_Rb_tree<void *, std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> >, std::_Select1st<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > >, std::less<void *>, std::allocator<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::~_Rb_tree stl_tree.h:1000
[MediaServer] std::map<void *, std::shared_ptr<mediakit::FrameWriterInterface>, std::less<void *>, std::allocator<std::pair<void *const, std::shared_ptr<mediakit::FrameWriterInterface> > > >::~map stl_map.h:300
[MediaServer] mediakit::FrameDispatcher::~FrameDispatcher Frame.h:306
[MediaServer] mediakit::Track::~Track Track.h:30
[MediaServer] mediakit::VideoTrack::~VideoTrack Track.h:77
[MediaServer] mediakit::H264Track::~H264Track H264.h:94
[MediaServer] __gnu_cxx::new_allocator<mediakit::H264Track>::destroy<mediakit::H264Track> new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<mediakit::H264Track> >::destroy<mediakit::H264Track> alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::H264Track, std::allocator<mediakit::H264Track>, (__gnu_cxx::_Lock_policy)2>::_M_dispose shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<mediakit::Track, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<mediakit::Track>::~shared_ptr shared_ptr.h:103
[MediaServer] std::_Destroy<std::shared_ptr<mediakit::Track> > stl_construct.h:98
[MediaServer] std::_Destroy_aux<false>::__destroy<std::shared_ptr<mediakit::Track> *> stl_construct.h:108
[MediaServer] std::_Destroy<std::shared_ptr<mediakit::Track> *> stl_construct.h:137
[MediaServer] std::_Destroy<std::shared_ptr<mediakit::Track> *, std::shared_ptr<mediakit::Track> > stl_construct.h:206
[MediaServer] std::vector<std::shared_ptr<mediakit::Track> >::~vector stl_vector.h:677
[MediaServer] mediakit::Demuxer::~Demuxer PlayerBase.h:261
[MediaServer] mediakit::RtspDemuxer::~RtspDemuxer RtspDemuxer.h:25
[MediaServer] __gnu_cxx::new_allocator<mediakit::RtspDemuxer>::destroy<mediakit::RtspDemuxer> new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<mediakit::RtspDemuxer> >::destroy<mediakit::RtspDemuxer> alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::RtspDemuxer, std::allocator<mediakit::RtspDemuxer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<mediakit::RtspDemuxer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<mediakit::RtspDemuxer>::~shared_ptr shared_ptr.h:103
[MediaServer] mediakit::RtspMediaSourceImp::~RtspMediaSourceImp RtspMediaSourceImp.h:36
[MediaServer] __gnu_cxx::new_allocator<mediakit::RtspMediaSourceImp>::destroy<mediakit::RtspMediaSourceImp> new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<mediakit::RtspMediaSourceImp> >::destroy<mediakit::RtspMediaSourceImp> alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<mediakit::RtspMediaSourceImp, std::allocator<mediakit::RtspMediaSourceImp>, (__gnu_cxx::_Lock_policy)2>::_M_dispose shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<mediakit::RtspMediaSourceImp, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<mediakit::RtspMediaSourceImp>::~shared_ptr shared_ptr.h:103
[MediaServer] WebRtcPusher::<lambda>::~<lambda>(void) WebRtcPusher.cpp:141
[MediaServer] std::_Function_base::_Base_manager<<lambda> >::_M_destroy(std::_Any_data &, std::false_type) std_function.h:191
[MediaServer] std::_Function_base::_Base_manager<<lambda> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation) std_function.h:215
[MediaServer] std::_Function_base::~_Function_base std_function.h:260
[MediaServer] std::function<unsigned long ()>::~function() std_function.h:369
[MediaServer] __gnu_cxx::new_allocator<std::function<unsigned long ()> >::destroy<std::function<unsigned long ()> >(std::function<unsigned long ()> *) new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<std::function<unsigned long ()> > >::destroy<std::function<unsigned long ()> >(std::allocator<std::function<unsigned long ()> > &, std::function<unsigned long ()> *) alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<std::function<unsigned long ()>, std::allocator<std::function<unsigned long ()> >, (__gnu_cxx::_Lock_policy)2>::_M_dispose() shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<std::function<unsigned long ()>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<std::function<unsigned long ()> >::~shared_ptr() shared_ptr.h:103
[MediaServer] toolkit::TaskCancelableImp<unsigned long ()>::~TaskCancelableImp() TaskExecutor.h:88
[MediaServer] __gnu_cxx::new_allocator<toolkit::TaskCancelableImp<unsigned long ()> >::destroy<toolkit::TaskCancelableImp<unsigned long ()> >(toolkit::TaskCancelableImp<unsigned long ()> *) new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<toolkit::TaskCancelableImp<unsigned long ()> > >::destroy<toolkit::TaskCancelableImp<unsigned long ()> >(std::allocator<toolkit::TaskCancelableImp<unsigned long ()> > &, toolkit::TaskCancelableImp<unsigned long ()> *) alloc_traits.h:496
[MediaServer] std::_Sp_counted_ptr_inplace<toolkit::TaskCancelableImp<unsigned long ()>, std::allocator<toolkit::TaskCancelableImp<unsigned long ()> >, (__gnu_cxx::_Lock_policy)2>::_M_dispose() shared_ptr_base.h:557
[MediaServer] std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release shared_ptr_base.h:155
[MediaServer] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count shared_ptr_base.h:730
[MediaServer] std::__shared_ptr<toolkit::TaskCancelableImp<unsigned long ()>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() shared_ptr_base.h:1169
[MediaServer] std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> >::~shared_ptr() shared_ptr.h:103
[MediaServer] std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >::~pair() stl_pair.h:208
[MediaServer] __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > >::destroy<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >(std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > *) new_allocator.h:152
[MediaServer] std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > > >::destroy<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >(std::allocator<std::_Rb_tree_node<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > > &, std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > *) alloc_traits.h:496
[MediaServer] std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >, std::_Select1st<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >, std::less<unsigned long>, std::allocator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > *) stl_tree.h:642
[MediaServer] std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >, std::_Select1st<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >, std::less<unsigned long>, std::allocator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > *) stl_tree.h:650
[MediaServer] std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >, std::_Select1st<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >, std::less<unsigned long>, std::allocator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >) stl_tree.h:2516
[MediaServer] std::_Rb_tree<unsigned long, std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >, std::_Select1st<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >, std::less<unsigned long>, std::allocator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >) stl_tree.h:1225
[MediaServer] std::multimap<unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<const unsigned long, std::shared_ptr<toolkit::TaskCancelableImp<unsigned long ()> > > >) stl_multimap.h:707
[MediaServer] toolkit::EventPoller::flushDelayTask EventPoller.cpp:386
[MediaServer] toolkit::EventPoller::getMinDelay EventPoller.cpp:423
[MediaServer] toolkit::EventPoller::runLoop EventPoller.cpp:286
[MediaServer] std::__invoke_impl<void, void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:73
[MediaServer] std::__invoke<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> invoke.h:95
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::_M_invoke<0ul, 1ul, 2ul, 3ul> thread:244
[MediaServer] std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> >::operator() thread:251
[MediaServer] std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (toolkit::EventPoller::*)(bool, bool), toolkit::EventPoller *, bool, bool> > >::_M_run thread:195
[libstdc++.so.6] <unknown> 0x00007ffff7b1cde4
[libpthread.so.0] start_thread 0x00007ffff7c31609
[libc.so.6] clone 0x00007ffff780a263
相关文章
|
6月前
|
网络协议 Linux
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
603 0
|
11月前
|
Web App开发 前端开发
ZLMediaKit解决webrtc前端replaceTrack断流问题
ZLMediaKit解决webrtc前端replaceTrack断流问题
|
监控 开发工具 C++
Windows平台RTMP/RTSP播放器如何实现实时音量调节
RTMP或RTSP直播播放音量调节,主要用于多实例(多窗口)播放场景下,比如同时播放4路RTMP或RTSP流,如果音频全部打开,几路audio同时打开,可能会影响用户体验,我们通用的做法是支持播放端实时静音,更细粒度的做法是可以实时调节每一路RTMP/RTSP流的音量。
244 0
|
网络协议 编译器 Linux
FFMPEG音视频开发: 发布RTSP流(采用EasyDarwin作为流媒体服务器)
FFMPEG音视频开发: 发布RTSP流(采用EasyDarwin作为流媒体服务器)
860 1
FFMPEG音视频开发: 发布RTSP流(采用EasyDarwin作为流媒体服务器)
|
2月前
|
Linux Android开发 iOS开发
Windows平台RTSP|RTMP播放器如何实现实时录像功能
Windows平台RTSP、RTMP播放器实时录像接口设计,实际上,除了Windows平台,我们Linux、Android、iOS平台也是一样的设计,单纯的录像模块,如果做的全面,也不是一两个接口可以搞定的
|
3月前
|
编解码 Linux 开发工具
iOS平台如何实现RTSP|RTMP播放端录像?
我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等。
|
3月前
|
编解码 网络协议 开发工具
Android平台RTSP|RTMP直播播放器技术接入说明
大牛直播SDK自2015年发布RTSP、RTMP直播播放模块,迭代从未停止,SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以Android平台为例,介绍下如何集成RTSP、RTMP播放模块。
162 0
|
网络协议 算法 网络性能优化
【流媒体】推流与拉流简介
【流媒体】推流与拉流简介
488 0
|
编解码 开发工具 C#
Windows平台RTMP推送摄像头对接介绍
好多开发者在对接大牛直播SDK(官方)的Windows平台RTMP推送时,不熟悉摄像头调用,实际上,摄像头调用逻辑并不复杂,以下是大概流程:
130 0
|
网络协议 开发工具 C#
Windows平台如何快速实现RTSP/RTMP直播播放
前段时间,我们在 https://blog.csdn.net/renhui1112/article/details/104143794 提到“RTSP播放器开发过程中需要考虑哪些关键因素”,本次主要介绍,如何调用SDK实现RTSP/RTMP播放能力。
480 0