From b80601e0204f30cee96c61b8132664e70e1cb929 Mon Sep 17 00:00:00 2001 From: xia-chu <771730766@qq.com> Date: Sat, 9 Dec 2023 14:49:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20mpeg=20extra=20data?= =?UTF-8?q?=E7=9B=B8=E5=85=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/config.ini | 8 ++++---- src/Record/MPEG.cpp | 14 ++++---------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/conf/config.ini b/conf/config.ini index d1d8246c..49bd589e 100644 --- a/conf/config.ini +++ b/conf/config.ini @@ -59,9 +59,9 @@ paced_sender_ms=0 #是否开启转换为hls(mpegts) enable_hls=1 #是否开启转换为hls(fmp4) -enable_hls_fmp4=0 +enable_hls_fmp4=1 #是否开启MP4录制 -enable_mp4=0 +enable_mp4=1 #是否开启转换为rtsp/webrtc enable_rtsp=1 #是否开启转换为rtmp/flv @@ -287,7 +287,7 @@ port=1935 #rtmps服务器监听地址 sslport=0 # rtmp是否直接代理模式 -directProxy=1 +directProxy=0 #h265 rtmp打包采用增强型rtmp标准还是国内拓展标准 enhanced=1 @@ -378,7 +378,7 @@ authBasic=0 #如果你是rtsp推拉流,但是webrtc播放,也建议关闭直接代理模式, #因为直接代理时,rtp中可能没有sps pps,会导致webrtc无法播放; 另外webrtc也不支持Single NAL Unit Packets类型rtp #默认开启rtsp直接代理,rtmp由于没有这些问题,是强制开启直接代理的 -directProxy=1 +directProxy=0 #rtsp必须在此时间内完成握手,否则服务器会断开链接,单位秒 handshakeSecond=15 #rtsp超时时间,如果该时间内未收到客户端的数据, diff --git a/src/Record/MPEG.cpp b/src/Record/MPEG.cpp index d1089fdb..9fd5313c 100644 --- a/src/Record/MPEG.cpp +++ b/src/Record/MPEG.cpp @@ -40,10 +40,7 @@ bool MpegMuxer::addTrack(const Track::Ptr &track) { if (track->getTrackType() == TrackVideo) { _have_video = true; } - auto extra_data = track->getExtraData(); - _codec_to_trackid[track->getCodecId()] = mpeg_muxer_add_stream((::mpeg_muxer_t *)_context, mpeg_id, - extra_data ? extra_data->data() : nullptr, - extra_data ? extra_data->size(): 0); + _codec_to_trackid[track->getCodecId()] = mpeg_muxer_add_stream((::mpeg_muxer_t *)_context, mpeg_id, nullptr, 0); return true; } @@ -69,19 +66,16 @@ bool MpegMuxer::inputFrame(const Frame::Ptr &frame) { } case CodecAAC: { - if (frame->prefixSize() == 0) { - WarnL << "必须提供adts头才能mpeg-ts打包"; - return false; - } + CHECK(frame->prefixSize(), "Mpeg muxer required aac frame with adts heade"); } default: { if (!_have_video) { - //没有视频时,才以音频时间戳为TS的时间戳 + // 没有视频时,才以音频时间戳为TS的时间戳 _timestamp = frame->dts(); } - if(frame->getTrackType() == TrackType::TrackVideo){ + if (frame->getTrackType() == TrackType::TrackVideo) { _key_pos = frame->keyFrame(); _timestamp = frame->dts(); }