2016-12-06 14 views
0

バイト配列からのビデオストリーミングを可能にするアプリケーションをQtに書いています。 ビデオ出力コンポーネントとしてQtAV(http://www.qtav.org/)を使用しています。 私の場合、このコンポーネントの入力はQIODevice(QBuffer)で、QByteArrayにはデータが入っています。 ストリーミング中にQByteArray内にデータを挿入しますが、まだ読んでいるデータを削除する方法はわかりません。 私の問題は、少し時間がたってから、QByteArrayのディメンションが非常に大きく、割り当てられたメモリをどのように減らすことができないのか分かりません。QtAVとバッファーのクリーニング

はあなたが単に方法
QByteArray &QBuffer::buffer()を使用して、バッファからバイト配列オブジェクトへの参照を取得し、それを消去することができますあなたの

アンジェロ

答えて

0

ありがとう:

your_io_buffer.buffer().resize(0); 

しかし、注意してください頻繁に削除して動的アレイにデータを追加するとメモリの再割り当てが発生するため、あまり高速に動作しません。私はAvPlayerが読まれたことのバイトを削除し、新規のQIODeviceを作成

QByteArray buf; 
buf.reserve(100000); 
//... 
your_io_buffer.setBuffer(&buf); 
//... 
+0

:したがって、私は
void QByteArray::reserve(int size)方法を使用することをお勧めします。問題は、AvPlayerが1時間に32kバイトを読み込むため、すべてのバイトを削除できないことです。ご回答どうもありがとうございました。 –

関連する問題