Compare commits

...

5 Commits

Author SHA1 Message Date
alex
0c1b2fb970
Merge 90bd28249e into de7afaf992 2024-09-26 11:29:59 +08:00
xiongguangjie
de7afaf992
Avoid negative PTS in the RTSP protocol (#3929 #3815)
Some checks failed
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Optimaztion for issue #3815 ffmpeg rtsp pull stream has negative pts
2024-09-26 10:59:41 +08:00
alex
90bd28249e Translate comments in src/Common/MediaSink.cpp 2024-09-21 09:44:57 +08:00
alex
c3106d514a Translate comments in src/Common/MediaSink.cpp 2024-09-21 09:26:48 +08:00
alex
f03d414e82 Translate comments in src/Common/MediaSink.cpp 2024-09-21 09:26:17 +08:00
3 changed files with 9 additions and 5 deletions

View File

@ -114,12 +114,14 @@ void MediaSink::checkTrackIfReady() {
}
}
// 等待音频超时时间
// 等待音频超时时间 [AUTO-TRANSLATED:5ec16b26]
// Wait for audio timeout time
GET_CONFIG(uint32_t, kWaitAudioTrackDataMS, General::kWaitAudioTrackDataMS);
if (_max_track_size > 1) {
for (auto it = _track_map.begin(); it != _track_map.end();) {
if (it->second.first->getTrackType() == TrackAudio && _ticker.elapsedTime() > kWaitAudioTrackDataMS && !it->second.second) {
// 音频超时且完全没收到音频数据,忽略音频
// 音频超时且完全没收到音频数据,忽略音频 [AUTO-TRANSLATED:0d0fbb13]
// Audio timeout and did not receive any audio data, ignore audio
auto index = it->second.first->getIndex();
WarnL << "Audio track index " << index << " codec " << it->second.first->getCodecName() << " receive no data for long "
<< _ticker.elapsedTime() << "ms. Ignore it!";

View File

@ -54,7 +54,9 @@ void RtspMediaSource::onWrite(RtpPacket::Ptr rtp, bool keyPos) {
assert(rtp->type >= 0 && rtp->type < TrackMax);
auto &track = _tracks[rtp->type];
auto stamp = rtp->getStampMS();
if (track) {
bool is_video = rtp->type == TrackVideo;
// 音频总是更新,视频在关键包时更新
if (track && ((keyPos && _have_video && is_video) || (!is_video))) {
track->_seq = rtp->getSeq();
track->_time_stamp = rtp->getStamp() * uint64_t(1000) / rtp->sample_rate;
track->_ssrc = rtp->getSSRC();
@ -77,7 +79,7 @@ void RtspMediaSource::onWrite(RtpPacket::Ptr rtp, bool keyPos) {
regist();
}
}
bool is_video = rtp->type == TrackVideo;
PacketCache<RtpPacket>::inputPacket(stamp, is_video, std::move(rtp), keyPos);
}

View File

@ -833,7 +833,7 @@ void RtspSession::handleReq_Play(const Parser &parser) {
rtp_info << "url=" << track->getControlUrl(_content_base) << ";"
<< "seq=" << track->_seq << ";"
<< "rtptime=" << (int) (track->_time_stamp * (track->_samplerate / 1000)) << ",";
<< "rtptime=" << (int64_t)(track->_time_stamp) * (int64_t)(track->_samplerate/ 1000) << ",";
}
rtp_info.pop_back();