def body(self, value):
        size = len(value)
        librtmp.RTMPPacket_Alloc(self.packet, size)

        view = ffi.buffer(self.packet.m_body, size)
        view[:] = value

        self.packet.m_nBodySize = size
    def body(self, value):
        size = len(value)
        librtmp.RTMPPacket_Alloc(self.packet, size)

        view = ffi.buffer(self.packet.m_body, size)
        view[:] = value

        self.packet.m_nBodySize = size
Exemple #3
0
def hash_swf(url, age=30):
    hash = ffi.new("unsigned char[]", 32)
    size = ffi.new("unsigned int*")
    url = bytes(url, "utf8")

    res = librtmp.RTMP_HashSWF(url, size, hash, age)

    if res == 0:
        hash = hexlify(ffi.buffer(hash, 32)[:])
        size = size[0]

        return str(hash, "utf8"), size
    else:
        raise RTMPError("Failed to hash SWF")
    def read(self, size):
        """Attempts to read data from the stream.

        :param size: int, The maximum amount of bytes to read.

        Raises :exc:`IOError` on error.
        """

        if not self._buf or len(self._buf) != size:
            self._buf = ffi.new("char[]", size)
            self._view = ffi.buffer(self._buf, size)

        res = librtmp.RTMP_Read(self.client.rtmp, self._buf, size)

        if res < 0:
            raise IOError("Failed to read data")

        return self._view[:res]
Exemple #5
0
    def read(self, size):
        """Attempts to read data from the stream.

        :param size: int, The maximum amount of bytes to read.

        Raises :exc:`IOError` on error.
        """

        if not self._buf or len(self._buf) != size:
            self._buf = ffi.new("char[]", size)
            self._view = ffi.buffer(self._buf, size)

        res = librtmp.RTMP_Read(self.client.rtmp, self._buf, size)

        if res < 0:
            raise IOError("Failed to read data")

        return self._view[:res]
Exemple #6
0
    def read(self, size):
        """Attempts to read data from the stream.

        :param size: int, The maximum amount of bytes to read.

        Raises :exc:`IOError` on error.
        """
        # If enabled tell the server that our buffer can fit the whole
        # stream, this often increases throughput alot.
        if self._update_buffer and not self._updated_buffer and self.duration:
            self.update_buffer((self.duration * 1000) + 5000)
            self._updated_buffer = True

        if not self._buf or len(self._buf) != size:
            self._buf = ffi.new("char[]", size)
            self._view = ffi.buffer(self._buf, size)

        res = librtmp.RTMP_Read(self.client.rtmp, self._buf, size)

        if res < 0:
            raise IOError("Failed to read data")

        return self._view[:res]
def _create_buffer(size):
    pbuf = ffi.new("char[]", size)
    pend = pbuf + size
    buf = ffi.buffer(pbuf, size)

    return pbuf, pend, buf
 def value(self):
     buf = ffi.buffer(self.aval.av_val, self.aval.av_len)
     return buf[:]
    def body(self):
        """The body of the packet."""
        view = ffi.buffer(self.packet.m_body, self.packet.m_nBodySize)

        return view[:]
Exemple #10
0
 def value(self):
     buf = ffi.buffer(self.aval.av_val, self.aval.av_len)
     return buf[:]
    def body(self):
        """The body of the packet."""
        view = ffi.buffer(self.packet.m_body, self.packet.m_nBodySize)

        return view[:]
def _create_buffer(size):
    pbuf = ffi.new("char[]", size)
    pend = pbuf + size
    buf = ffi.buffer(pbuf, size)

    return pbuf, pend, buf