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
この内容が役立つことを願っています。