def encode_frame(self, input_frame, pts: int) -> T.Iterator[Packet]: # for JPEG we only get a single packet per frame packet = Packet() packet.payload = input_frame.jpeg_buffer packet.time_base = self.time_base packet.pts = pts # TODO: check if we still need dts here, as they were removed from MPEG_Writer packet.dts = pts yield packet
def decode(self, encoded_frame): try: packet = Packet(encoded_frame.data) packet.pts = encoded_frame.timestamp frames = self.codec.decode(packet) except AVError as e: logger.warning('failed to decode, skipping package: ' + str(e)) return [] return list(map(video_frame_from_avframe, frames))
def write_video_frame(self, input_frame): if not self.configured: self.video_stream.height = input_frame.height self.video_stream.width = input_frame.width self.configured = True packet = Packet() packet.payload = input_frame.jpeg_buffer packet.dts = self.frame_count * 10000 packet.pts = self.frame_count * 10000 self.frame_count += 1 self.container.mux(packet)
def write_video_frame(self, input_frame): if not self.configured: self.video_stream.height = input_frame.height self.video_stream.width = input_frame.width self.configured = True packet = Packet() packet.payload = input_frame.jpeg_buffer packet.dts = self.frame_count*10000 packet.pts = self.frame_count*10000 self.frame_count +=1 self.container.mux(packet)
def write_video_frame(self, input_frame): if not self.configured: self.video_stream.height = input_frame.height self.video_stream.width = input_frame.width self.configured = True packet = Packet() packet.payload = input_frame.jpeg_buffer #we are setting the packet pts manually this uses a different timebase av.frame! packet.dts = int(self.frame_count/self.video_stream.time_base/self.fps) packet.pts = int(self.frame_count/self.video_stream.time_base/self.fps) self.frame_count +=1 self.container.mux(packet)