16

プログラムで生成されたQPixmapを1つずつディスプレイにレンダリングするQTアプリケーションがあり、この出力をビデオファイルに保存したいと思います。

過去に人々がこれを行うためにQtでffmpegまたはopencvを使用することを推奨していたことを私は知っています。ただし、Qt 5では、新しいQtMultimediaモジュールがこのタイプの機能の一部を公開しているようです。

たとえば、 http: //doc.qt.io/qt-5/qmediarecorder.html#detailsで説明されているように、QMediaRecorderを使用して、Qt5のカメラソースからビデオを保存できるようになりました。

この新機能で、Qt 5を使用してプログラムで生成されたビデオを保存する方法はありますか、それともサードパーティのライブラリを使用する方が良いですか?

4

3 に答える 3

5

これは、QVideoFrame と QAbstractVideoSurface を使用することで、Qt 4.7 で実際に可能になります。Qt には、プログラムで構築された QVideoFrames を表示できるビデオ ウィジェットを作成するための次の優れた例もあります。

http://qt-project.org/doc/qt-4.8/multimedia-videowidget.html

このウィジェットを QVideoFrame のマッピング機能と組み合わせて、個々のビデオ フレームを適切にフォーマットされたデータで埋めることができます。それは次のようになります。

videoWidget をインスタンス化します。

VideoWidgetSurface * videoWidget = new VideoWidgetSurface();
QSize videoSize(500,500); // supplement with your video dimensions

// look at VideoWidgetSurface::supportedPixelFormats for supported formats
QVideoSurfaceFormat format( videoSize, QVideoFrame::Format_RGB32, QAbstractVideoBuffer::QPixmapHandle)

// possibly fill with initial frame?

videoWidget->start(format);

...そして、ビデオ ウィジェットの現在のフレームを更新する場合:

// If you don't need the data in any past frames you can probably just create one frame
// and just use it repeadtly (as VideoWidgetSurface only keeps track of one frame at a time)
QVideoFrame aFrame(32 * format.frameWidth()  * format.frameHeight(),format.frameSize(), 32 * format.frameWidth(),format.pixelFormat());

aFrame.map(QAbstractVideoBuffer::WriteOnly);

QRgb * pixels = aFrame.bits();

// perform pixel manipulation here...

aFrame.unmap();

videoWidget->present(aFrame);

..再生を終了するには...

videoWidget.stop();
于 2013-03-01T09:22:01.760 に答える
0

技術的には、FFmpeg を使用する機能に対して料金を請求しておらず、FFmpeg 用の別の実行可能ファイルを使用している限り、LGPL および GPL ライセンスに従っていることになります。訴訟の対象になる危険を冒したいかどうかは、別のトピックです。

私は(商業的に)同じ必要性を持っており、これらのライセンスの下で許可されている呼び出し可能な実行可能ファイルとして FFmpeg を使用する以外の解決策を提供できません。

編集: このスレッドは役に立つかもしれません: https://softwareengineering.stackexchange.com/questions/205689/using-exe-of-program-with-gnu-general-public-license-version-2-0-for-商業

于 2016-03-28T23:46:08.550 に答える