Webカメラからネットワークにh264ビデオを転送する方法は?

Webカメラからネットワークにh264ビデオを転送する方法は?

Webカメラがあり、それを使用してh264ビデオをストリーミングしたいです。私はmjpg-streamerを使ってmjpgビデオをストリーミングしています。今h264をストリーミングしたいと思います。私はgstreamerを使ってできることがわかりましたが、まったく新しい機能です。また、いくつかのブログ/記事などを読んだ後h264とgstreamerにいくつかの問題があるようです。まだ本当ですか?

gstreamer以外に他の方法がありますか?

どんな情報でも役に立ちます。よろしくお願いします。

ベストアンサー1

gstreamerを使ってh264をストリーミングする方法を説明します。

まず、v4l2ドライバで「H264ピクセルフォーマット」をサポートするには、Linuxカーネル3.2以降が必要です。

v4l2-ctlを使用して、カメラが正しいH.264をサポートしていることを確認してください。

#v4l2-ctl -- リスト形式
#v4l2-ctl --list-formats-ext

次に、video4linuxライブラリとユーティリティが必要です。これには以下が含まれます。

libv4lとlibv4l-dev
v4l-utils
qv4l2 (おそらく v4l-utils の一部)
v4l2ucp

フレームレート設定:

# v4l2-ctl --set-fmt-video=幅=800、高さ=448、ピクセルフォーマット=1
#v4l2-ctl --set-parm=30

Gstreamerにはまだvideo / x-264形式をサポートしていないv4l2src入力要素があります。

ただし、ファイルソースを使用してgstreamerパイプのstdinにパイプすると、H.264ストリームをキャプチャしてファイルまたはstdoutに送信できます。

#./capture -c 100000 -o | gst-launch -v -e filesrc 場所=/dev/fd/0 ! h264分析! bin2をデコードしてください! xvimagesink 同期=false

エンコードされたビデオストリームは、Gstreamerを使用してネットワーク経由で送信できます。

#gst-launch -v udpsrc port=4000 caps='application/x-rtp, media=(string)video, clockrate=(int)90000, エンコード名=(string)H264'! \
          rtph264depay! ffdec_h264! xvimagesink 同期=false

 #./capture -c 10000 -o | gst-launch -v -e filesrc 場所=/dev/fd/0 ! h264分析! rtph264が支払います! udpsinkホスト=host_IPポート=4000

この内容が役立つことを願っています。

おすすめ記事