3

h264 ビデオ ストリームのデコードに vlc-qt を使用していますが、さらに処理するにはビデオ (ストリーム) のすべてのフレームが必要です。解決策を説明するこのリンクを見つけました:

https://discuss.tano.si/t/how-to-get-frame-from-video/253

VlcVideoStream クラスから継承するクラスを作成し、次のように frameUpdated() 関数を再実装します。

void MyVideoStream::frameUpdated()  {
qDebug() << "frame" ;
int rows, cols, matType;
// convert to shared pointer to const frame to avoid crash
std::shared_ptr<const VlcYUVVideoFrame> frame = std::dynamic_pointer_cast<const VlcYUVVideoFrame>(renderFrame());

if (!frame) {
    return; // LCOV_EXCL_LINE
}

rows = frame->height + frame->height/2;
cols = frame->width;

}

そして私のクラスを次のように宣言しました:

MyVideoStream *_stream ;
_stream = new MyVideoStream(Vlc::YUVFormat,ui->video) ;
_stream->init(_player) ;

ここで、_player は VlcMediaPlayer オブジェクト参照です。しかし、プログラムを実行しても何も起こりませんでした。何が問題なのかわからない。

4

1 に答える 1