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 SrsVideoCodecIdOn2VP6:
|
||||||
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
||||||
return "VP6";
|
return "VP6";
|
||||||
|
case SrsVideoCodecIdHEVC:
|
||||||
|
return "HEVC";
|
||||||
case SrsVideoCodecIdReserved:
|
case SrsVideoCodecIdReserved:
|
||||||
case SrsVideoCodecIdReserved1:
|
case SrsVideoCodecIdReserved1:
|
||||||
case SrsVideoCodecIdReserved2:
|
case SrsVideoCodecIdReserved2:
|
||||||
|
@ -60,6 +62,8 @@ string srs_audio_codec_id2str(SrsAudioCodecId codec)
|
||||||
return "AAC";
|
return "AAC";
|
||||||
case SrsAudioCodecIdMP3:
|
case SrsAudioCodecIdMP3:
|
||||||
return "MP3";
|
return "MP3";
|
||||||
|
case SrsAudioCodecIdOpus:
|
||||||
|
return "Opus";
|
||||||
case SrsAudioCodecIdReserved1:
|
case SrsAudioCodecIdReserved1:
|
||||||
case SrsAudioCodecIdLinearPCMPlatformEndian:
|
case SrsAudioCodecIdLinearPCMPlatformEndian:
|
||||||
case SrsAudioCodecIdADPCM:
|
case SrsAudioCodecIdADPCM:
|
||||||
|
@ -638,7 +642,7 @@ bool SrsFormat::is_aac_sequence_header()
|
||||||
|
|
||||||
bool SrsFormat::is_avc_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;
|
&& video && video->avc_packet_type == SrsVideoAvcFrameTraitSequenceHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,8 @@ enum SrsVideoCodecId
|
||||||
SrsVideoCodecIdOn2VP6WithAlphaChannel = 5,
|
SrsVideoCodecIdOn2VP6WithAlphaChannel = 5,
|
||||||
SrsVideoCodecIdScreenVideoVersion2 = 6,
|
SrsVideoCodecIdScreenVideoVersion2 = 6,
|
||||||
SrsVideoCodecIdAVC = 7,
|
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);
|
std::string srs_video_codec_id2str(SrsVideoCodecId codec);
|
||||||
|
|
||||||
|
@ -152,6 +154,8 @@ enum SrsAudioCodecId
|
||||||
SrsAudioCodecIdReserved = 9,
|
SrsAudioCodecIdReserved = 9,
|
||||||
SrsAudioCodecIdAAC = 10,
|
SrsAudioCodecIdAAC = 10,
|
||||||
SrsAudioCodecIdSpeex = 11,
|
SrsAudioCodecIdSpeex = 11,
|
||||||
|
// For FLV, it's undefined, we define it as Opus for WebRTC.
|
||||||
|
SrsAudioCodecIdOpus = 13,
|
||||||
SrsAudioCodecIdReservedMP3_8kHz = 14,
|
SrsAudioCodecIdReservedMP3_8kHz = 14,
|
||||||
SrsAudioCodecIdReservedDeviceSpecificSound = 15,
|
SrsAudioCodecIdReservedDeviceSpecificSound = 15,
|
||||||
};
|
};
|
||||||
|
|
|
@ -320,6 +320,7 @@ srs_error_t SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsVi
|
||||||
case SrsVideoCodecIdOn2VP6:
|
case SrsVideoCodecIdOn2VP6:
|
||||||
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
case SrsVideoCodecIdOn2VP6WithAlphaChannel:
|
||||||
case SrsVideoCodecIdScreenVideoVersion2:
|
case SrsVideoCodecIdScreenVideoVersion2:
|
||||||
|
case SrsVideoCodecIdHEVC:
|
||||||
vs = SrsTsStreamReserved;
|
vs = SrsTsStreamReserved;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -348,6 +349,7 @@ srs_error_t SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsVi
|
||||||
case SrsAudioCodecIdSpeex:
|
case SrsAudioCodecIdSpeex:
|
||||||
case SrsAudioCodecIdReservedMP3_8kHz:
|
case SrsAudioCodecIdReservedMP3_8kHz:
|
||||||
case SrsAudioCodecIdReservedDeviceSpecificSound:
|
case SrsAudioCodecIdReservedDeviceSpecificSound:
|
||||||
|
case SrsAudioCodecIdOpus:
|
||||||
as = SrsTsStreamReserved;
|
as = SrsTsStreamReserved;
|
||||||
break;
|
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
|
// E.4.3.1 VIDEODATA, flv_v10_1.pdf, page 5
|
||||||
p.write_1bytes(uint8_t(s->frame_type<<4) | uint8_t(s->codec));
|
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;
|
*type = SRS_RTMP_TYPE_VIDEO;
|
||||||
|
|
||||||
p.write_1bytes(uint8_t(s->frame_trait == (uint16_t)SrsVideoAvcFrameTraitSequenceHeader? 0:1));
|
p.write_1bytes(uint8_t(s->frame_trait == (uint16_t)SrsVideoAvcFrameTraitSequenceHeader? 0:1));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue