def write_rtmp_meta_headers(self, ts): meta = dict(duration=0.0) if self.vsink: meta.update(width=self.width, height=self.height, framerate=(float(self.framerate.numerator) / self.framerate.denominator), videodatarate=self.video_bitrate, videokeyframe_frequency=self.key_rate) if self.video_codec.codecId == 7: meta.update(videocodecid='avc1', avcprofile=self.video_avc_profile, avclevel=self.video_avc_level) if self.asink: meta.update(audiosamplerate=self.audio_rate, audiodatarate=self.audio_bitrate, audiochannels=self.channels) if self.audio_codec.codecId == 2: meta.update(audiocodecid='.mp3') elif self.audio_codec.codecId == 10: meta.update(audiocodecid='mp4a') wm = self._stream.write_meta wm(ts, amf0.encode('onStatus', amf0.Object(code='NetStream.Data.Start'))) wm(ts, amf0.encode('onMetaData', meta)) wm(ts, amf0.encode('@setDataFrame', 'onMetaData', meta))
def test_encode(self): for i, (encoded, decoded) in enumerate(self.test_data): if i in self.skip_encoding_tests: continue b = encode(*decoded) result = b.read(len(b)) self.assertEquals(p(encoded), result, 'failed encoding @ %d' % i)
def test_decode_encode(self): for i, (encoded, _) in enumerate(self.test_data): if i in self.skip_encoding_tests: continue b = encode(*decode(v(encoded))) result = b.read(len(b)) self.assertEquals(p(encoded), result, 'failed re-encoding @ %d' % i) self.assertEquals(len(b), 0, 'data left @ %d' % i)
def encode_amf(self, *args): # for now only supporting AMF0 return amf0.encode(*args)
def test_encode_decode(self): for i, (_, decoded) in enumerate(self.test_data): b = encode(*decoded) self.assertEquals(decode(b), decoded, 'failed re-decoding @ %d' % i) self.assertEquals(len(b), 0, 'data left @ %d' % i)