H264ビデオのストリーミングに使用したいウェブカメラがあります。現在、mjpg-streamerを使用してmjpgビデオをストリーミングしています。そして今、私はh264をストリーミングしたいと思います。これはgstreamerで実行できることを発見しましたが、まったく新しいものです。また、ブログや記事などを読んだ後、h264とgstreamerに問題があったようです。それは本当ですか?
これを行うには、gstreamer以外にもいくつかの方法があるのでしょうか?
どんな情報も参考になります。前もって感謝します。
Gstreamerを使ってh264をストリーミングする方法を説明します。
まず、v4l2ドライバーで「H264ピクセル形式」をサポートするには、Linuxカーネル3.2以降が必要です。
V4l2-ctlを使用して、カメラがH.264で適切にサポートされていることを確認します。
#v4l2-ctl --list-formats #v4l2-ctl --list-formats-ext
次に、video4linuxライブラリとユーティリティが必要になります。これらには以下が含まれます:
libv4lおよびlibv4l-dev v4l-utils qv4l2(v4l-utilsの一部である可能性があります) v4l2ucp
フレームレートの設定:
#v4l2-ctl --set-fmt-video = width = 800、height = 448、pixelformat = 1 #v4l2-ctl --set-parm = 30
Gstreamerにはv4l2src入力要素がありますが、まだvideo/x-264形式をサポートしていません。
ただし、ファイルソースを使用してgstreamerパイプラインの標準入力にパイプするだけで、H.264ストリームをキャプチャしてファイルまたは標準出力に送信できます。
#./capture -c 100000 -o | gst-launch -v -e filesrc location =/dev/fd/0! h264parse! decodebin2! xvimagesink sync = false
エンコードされたビデオストリームは、Gstreamerを使用してネットワーク経由で送信できます。
#gst-launch -v udpsrc port = 4000 caps = 'application/x-rtp、media =(string)video、clock-rate =(int)90000、encoding-name =(string)H264'!\ rtph264depay! ffdec_h264! xvimagesink sync = false #./capture -c 10000 -o | gst-launch -v -e filesrc location =/dev/fd/0! h264parse! rtph264pay! udpsink Host = host_IP port = 4000
これがお役に立てば幸いです。