2

ビデオ マッピング セットのストリーム ジェネレータに取り組んでいますが、イメージを安定させることができません。私はpython-v4l2で v4l2loopback デバイスを開き、png に基づいてそれを介してビデオ ストリームを生成するため、vj セットでライブ ビデオを生成し、それらを静止ビデオ マップしてエフェクトを適用できます。

テスト ケース: 1) v4l2loopback モジュールをロードする

2) Python を実行します。

import fcntl, numpy
from v4l2 import *
from PIL import Image
height = 600
width = 634
device = open('/dev/video4', 'wr')
print(device)
capability = v4l2_capability()
print(fcntl.ioctl(device, VIDIOC_QUERYCAP, capability))
print("v4l2 driver: " + capability.driver)
format = v4l2_format()
format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT
format.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB32
format.fmt.pix.width = width
format.fmt.pix.height = height
format.fmt.pix.field = V4L2_FIELD_NONE
format.fmt.pix.bytesperline = format.fmt.pix.width * 4
format.fmt.pix.sizeimage = format.fmt.pix.width * format.fmt.pix.height * 4
format.fmt.pix.colorspace = V4L2_COLORSPACE_SRGB
print(fcntl.ioctl(device, VIDIOC_S_FMT, format))
img = Image.open('img/0.png')
img = img.convert('RGBA')
while True:
    device.write(numpy.array(img))

3) Cheese またはその他の v4l2 ストリーム ビューアーを実行します。

結果は適切な色とサイズの画像ですが、すべてのフレームが左から右にジャンプし、常に少し左にジャンプするため、スライドしてジャンプするビデオ結果が得られます. 私は何を間違っていますか?

よろしくお願いします、

ハリエボ

追伸: 結果を確認したい場合:リンクこれまでのところ、LiVES、puredate、gem ビデオ マッピングのセットアップは v4l2 ストリームでうまく機能しています。

4

1 に答える 1

1

それで、私はそれを一種の作業にしましたが、それが正しい方法かどうかはわかりません。安定したビデオ ストリームのために必要なこと:

1)カスタム解像度を使用しないでください。乱雑になります。

2) すべてのフレームを 2 回送信します。これは、インターレース/トップ/ボトムフレームに関係していると思います。

3) 640x480 の場合、配列内のすべてのピクセルを 260 スペース左にシフトします。そうしないと、画像はまっすぐではなく、1024x768 の場合ではありません...これがなぜなのかわかりません。

4) 再生は、プログラムが生成できるため、わずかに低いフレーム レートで行われます。

結局のところ、10 秒ごとに 99% 安定しています。または、バグのあるフレームが 1 つあります。プログラムが生成するフレームレートが 100% 安定していないことが原因だと思います。

なぜ、またはどうすればこれを改善できるかについての提案は大歓迎です。

更新については、https ://github.com/umlaeute/v4l2loopback/issues/32 を参照してください。

于 2012-12-14T21:42:25.560 に答える