我一直在编写移动流媒体应用程序。
现在我遇到了发送 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?它真的可能吗?
答案 0 :(得分:1)
QDataStream::operator<<(const char * s)
写入一个以零结尾的字符串(请参阅documentation),这样如果在帧中的数据中遇到零字节,它将被截断。试试writeBytes
。