mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Add codec OPUS/HEVC to FLV
This commit is contained in:
parent
b2d1d84634
commit
e77b570636
4 changed files with 12 additions and 2 deletions
|
@ -41,6 +41,8 @@ string srs_video_codec_id2str(SrsVideoCodecId codec)
|
|||
case SrsVideoCodecIdOn2VP6:
|
||||
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
||||
return "VP6";
|
||||
case SrsVideoCodecIdHEVC:
|
||||
return "HEVC";
|
||||
case SrsVideoCodecIdReserved:
|
||||
case SrsVideoCodecIdReserved1:
|
||||
case SrsVideoCodecIdReserved2:
|
||||
|
@ -60,6 +62,8 @@ string srs_audio_codec_id2str(SrsAudioCodecId codec)
|
|||
return "AAC";
|
||||
case SrsAudioCodecIdMP3:
|
||||
return "MP3";
|
||||
case SrsAudioCodecIdOpus:
|
||||
return "Opus";
|
||||
case SrsAudioCodecIdReserved1:
|
||||
case SrsAudioCodecIdLinearPCMPlatformEndian:
|
||||
case SrsAudioCodecIdADPCM:
|
||||
|
@ -638,7 +642,7 @@ bool SrsFormat::is_aac_sequence_header()
|
|||
|
||||
bool SrsFormat::is_avc_sequence_header()
|
||||
{
|
||||
return vcodec && vcodec->id == SrsVideoCodecIdAVC
|
||||
return vcodec && (vcodec->id == SrsVideoCodecIdAVC || vcodec->id == SrsVideoCodecIdHEVC)
|
||||
&& video && video->avc_packet_type == SrsVideoAvcFrameTraitSequenceHeader;
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,8 @@ enum SrsVideoCodecId
|
|||
SrsVideoCodecIdOn2VP6WithAlphaChannel = 5,
|
||||
SrsVideoCodecIdScreenVideoVersion2 = 6,
|
||||
SrsVideoCodecIdAVC = 7,
|
||||
// See page 79 at @doc https://github.com/CDN-Union/H265/blob/master/Document/video_file_format_spec_v10_1_ksyun_20170615.doc
|
||||
SrsVideoCodecIdHEVC = 12,
|
||||
};
|
||||
std::string srs_video_codec_id2str(SrsVideoCodecId codec);
|
||||
|
||||
|
@ -152,6 +154,8 @@ enum SrsAudioCodecId
|
|||
SrsAudioCodecIdReserved = 9,
|
||||
SrsAudioCodecIdAAC = 10,
|
||||
SrsAudioCodecIdSpeex = 11,
|
||||
// For FLV, it's undefined, we define it as Opus for WebRTC.
|
||||
SrsAudioCodecIdOpus = 13,
|
||||
SrsAudioCodecIdReservedMP3_8kHz = 14,
|
||||
SrsAudioCodecIdReservedDeviceSpecificSound = 15,
|
||||
};
|
||||
|
|
|
@ -320,6 +320,7 @@ srs_error_t SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsVi
|
|||
case SrsVideoCodecIdOn2VP6:
|
||||
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
||||
case SrsVideoCodecIdScreenVideoVersion2:
|
||||
case SrsVideoCodecIdHEVC:
|
||||
vs = SrsTsStreamReserved;
|
||||
break;
|
||||
}
|
||||
|
@ -348,6 +349,7 @@ srs_error_t SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsVi
|
|||
case SrsAudioCodecIdSpeex:
|
||||
case SrsAudioCodecIdReservedMP3_8kHz:
|
||||
case SrsAudioCodecIdReservedDeviceSpecificSound:
|
||||
case SrsAudioCodecIdOpus:
|
||||
as = SrsTsStreamReserved;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1666,7 +1666,7 @@ int srs_mp4_to_flv_tag(srs_mp4_t mp4, srs_mp4_sample_t* s, char* type, uint32_t*
|
|||
|
||||
// E.4.3.1 VIDEODATA, flv_v10_1.pdf, page 5
|
||||
p.write_1bytes(uint8_t(s->frame_type<<4) | uint8_t(s->codec));
|
||||
if (s->codec == SrsVideoCodecIdAVC) {
|
||||
if (s->codec == SrsVideoCodecIdAVC || s->codec == SrsVideoCodecIdHEVC) {
|
||||
*type = SRS_RTMP_TYPE_VIDEO;
|
||||
|
||||
p.write_1bytes(uint8_t(s->frame_trait == (uint16_t)SrsVideoAvcFrameTraitSequenceHeader? 0:1));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue