def is_sync_point(self, flv_tag: FLVTag) -> bool: if self.stream_header and self.stream_header.video: # If our stream has video, we need to sync on keyframes if flv_tag.tag_type == "video": video_data = FLVVideoData() video_data.parse(flv_tag.body[:video_data.object_size]) return video_data.frame_type == "keyframe" else: # It's either a non-keyframe video tag or an audio or # metadata tag return False else: # Audio only, no sync point needed return True
def check_for_initial_tag(self, flv_tag: FLVTag) -> bool: if not self.got_initial_meta and flv_tag.tag_type == "meta": self.got_initial_meta = True self.initial_tags.append(flv_tag) return True elif not self.got_initial_audio and flv_tag.tag_type == "audio": audio_data = FLVAudioData() audio_data.parse(flv_tag.body[:audio_data.object_size]) if audio_data.sound_format == "AAC" and audio_data.aac_packet_type == audio_data.AAC_SEQUENCE_HEADER: self.got_initial_audio = True self.initial_tags.append(flv_tag) return True elif not self.got_initial_video and flv_tag.tag_type == "video": video_data = FLVVideoData() video_data.parse(flv_tag.body[:video_data.object_size]) if video_data.codec == "AVC" and video_data.avc_packet_type == video_data.AVC_SEQUENCE_HEADER: self.got_initial_video = True self.initial_tags.append(flv_tag) return True return False
def check_for_initial_tag(self, flv_tag): if (not self.got_initial_meta and flv_tag.tag_type == 'meta'): self.got_initial_meta = True self.initial_tags.append(flv_tag) return True elif (not self.got_initial_audio and flv_tag.tag_type == 'audio'): audio_data = FLVAudioData() audio_data.parse(flv_tag.body[:audio_data.object_size]) if (audio_data.sound_format == 'AAC' and audio_data.aac_packet_type == audio_data.AAC_SEQUENCE_HEADER): self.got_initial_audio = True self.initial_tags.append(flv_tag) return True elif (not self.got_initial_video and flv_tag.tag_type == 'video'): video_data = FLVVideoData() video_data.parse(flv_tag.body[:video_data.object_size]) if (video_data.codec == 'AVC' and video_data.avc_packet_type == video_data.AVC_SEQUENCE_HEADER): self.got_initial_video = True self.initial_tags.append(flv_tag) return True return False