通过QTcpSocket发送QVideoFrame

时间:2016-03-08 08:43:55

标签: qt

我一直在编写移动流媒体应用程序。 现在我遇到了发送 QVideoFrame 的问题。我需要将它转换为 char * 进行发送,所以我使用 bits()方法,但似乎是错误的。
这是代码:

void FilterRunnable::sendFrame(QVideoFrame *frame)
{
    QByteArray block;
    QDataStream stream(&block,QIODevice::WriteOnly);

    frame->map(QAbstractVideoBuffer::ReadOnly);

    stream << qint16(0) << (char*)frame->bits();
    stream.device()->seek(0);
    stream << qint16(block.size() - sizeof(qint16));

    skt.write(block);

    frame->unmap();
}

所以问题是,如何通过QTcpSocket发送QVideoFrame?它真的可能吗?

1 个答案:

答案 0 :(得分:1)

QDataStream::operator<<(const char * s)写入一个以零结尾的字符串(请参阅documentation),这样如果在帧中的数据中遇到零字节,它将被截断。试试writeBytes