webrtc录像
请求录制
HTTP调用流程
ZLM将HTTP统一在WebApi.cpp中注册并处理,调用录制接口/index/api/startRecord
,我们可以查找此接口找到处理的流程:
- 首先根据请求参数找到流(MediaSource)
- 调用setupRecord设置开始录像
- 响应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
创建文件
在输入帧)时时如果满足下来条件会创建文件
- _muxer为空
- 到了切片时间,并且只有音频
- 到了切片时间,有视频并且遇到视频关键帧
[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