mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Optimize init h265 track and format.
This commit is contained in:
parent
83e8877623
commit
8953dbfba1
7 changed files with 49 additions and 53 deletions
|
@ -483,6 +483,23 @@ void SrsRtcSource::init_for_play_before_publishing()
|
|||
video_track_desc->media_ = video_payload;
|
||||
|
||||
video_payload->set_h264_param_desc("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");
|
||||
|
||||
#ifdef SRS_H265
|
||||
// default h265 video track description
|
||||
SrsRtcTrackDescription* h265_video_track_desc = new SrsRtcTrackDescription();
|
||||
stream_desc->video_track_descs_.push_back(h265_video_track_desc);
|
||||
|
||||
h265_video_track_desc->type_ = "video";
|
||||
h265_video_track_desc->id_ = "video-" + srs_random_str(8);
|
||||
h265_video_track_desc->ssrc_ = video_ssrc;
|
||||
h265_video_track_desc->direction_ = "recvonly";
|
||||
|
||||
SrsVideoPayload* h265_video_payload = new SrsVideoPayload(kVideoPayloadType, "H265", kVideoSamplerate);
|
||||
h265_video_track_desc->media_ = h265_video_payload;
|
||||
|
||||
h265_video_payload->set_h265_param_desc("level-id=180;profile-id=1;tier-flag=0;tx-mode=SRST");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
set_stream_desc(stream_desc.get());
|
||||
|
@ -1084,10 +1101,6 @@ srs_error_t SrsRtcRtpBuilder::on_video(SrsSharedPtrMessage* msg)
|
|||
if (has_idr) {
|
||||
SrsUniquePtr<SrsRtpPacket> pkt(new SrsRtpPacket());
|
||||
|
||||
if ((err = bridge_->update_codec(format->vcodec->id)) != srs_success) {
|
||||
return srs_error_wrap(err, "update codec");
|
||||
}
|
||||
|
||||
if ((err = package_stap_a(msg, pkt.get())) != srs_success) {
|
||||
return srs_error_wrap(err, "package stap-a");
|
||||
}
|
||||
|
@ -1235,7 +1248,7 @@ srs_error_t SrsRtcRtpBuilder::package_stap_a(SrsSharedPtrMessage* msg, SrsRtpPac
|
|||
}
|
||||
|
||||
memcpy(payload, (char*)param->data(), param->size());
|
||||
payload += (int)param->size();
|
||||
payload += (int)param->size();
|
||||
}
|
||||
|
||||
return err;
|
||||
|
@ -1323,7 +1336,7 @@ srs_error_t SrsRtcRtpBuilder::package_nalus(SrsSharedPtrMessage* msg, const vect
|
|||
SrsRtpFUAPayloadHevc* fua = new SrsRtpFUAPayloadHevc();
|
||||
if ((err = raw->read_samples(fua->nalus, packet_size)) != srs_success) {
|
||||
srs_freep(fua);
|
||||
return srs_error_wrap(err, "read samples %d bytes, left %d, total %d", packet_size, nb_left, nn_bytes);
|
||||
return srs_error_wrap(err, "read hevc samples %d bytes, left %d, total %d", packet_size, nb_left, nn_bytes);
|
||||
}
|
||||
fua->nalu_type = SrsHevcNaluTypeParse(header);
|
||||
fua->start = bool(i == 0);
|
||||
|
@ -1630,7 +1643,6 @@ srs_error_t SrsRtcFrameBuilder::packet_video(SrsRtpPacket* src)
|
|||
SrsRtpPacket* pkt = src->copy();
|
||||
|
||||
if (pkt->is_keyframe()) {
|
||||
// TODO: 处理H265
|
||||
return packet_video_key_frame(pkt);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue