Example #1
0
 def is_sync_point(self, flv_tag):
     if 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
Example #2
0
 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
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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