|
録画されたコース「総合IoTプロジェクト実践」では、Peng先生がWebページにリアルタイムカメラ監視機能を追加し、誰もが学習できるようにビデオストリーミングサーバーの移植方法に関する記事を特別にまとめました。 I. 埋め込みビデオおよび画像オープンソースライブラリ組み込みシステムでは、一般的に使用されるオープンソースのビデオおよび画像処理システムには、luvcview、cheese、motion、mjpg-streamer、ffmpeg などがあります。
II. mjpg-streamerの紹介MJPG-streamer は、HTTP 経由で Linux 上の互換性のあるカメラにアクセスし、リモート ビデオ伝送を実現できる優れたオープン ソース プロジェクトです。 MJPG ストリーマーは、Web カメラから画像をキャプチャし、IP ベースのネットワーク経由で Firehox、Cambozola、VLC プレーヤー、Windows モバイル デバイス、またはブラウザーを搭載したその他のモバイル デバイスなどのブラウザーにストリーミングします。 特定のウェブカメラのハードウェア圧縮機能を利用して、サーバーの CPU オーバーヘッドを削減できます。 ビデオ フレームの圧縮で多くの計算効率を無駄にすることを避けるため、組み込みデバイスや一部の通常のサーバーに軽量で CPU 負荷の少ないソリューションを提供します。 III. カメラのテスト(1)上図のようにロジクールカメラを仮想マシンに接続します。 (2)Cheeseをダウンロードしてインストールし、カメラが正常に動作するか確認します。 $ sudo apt - アップデートを取得 このプログラムはすでに Ubuntu 16.04 に含まれています。 (3)テスト カメラを接続すると次のデバイス ファイルが生成されます。 ルート : / home / peng / work # ls / dev / video0 -l 走る: ルート : / home / peng / work #cheese IV. 移植インストールの準備: 1. インストール前の準備sudo apt - get install libsdl1.2 - dev subversion 2. mjpeg-streamerをダウンロードする gitクローン https://github.com/shrkey/mjpg-streamergit がインストールされていない場合は、次のコマンドを実行します。 sudo apt-get でgitをインストール 3. コンパイルしてインストールする cd mjpg-streamer/mjpg-streamer root@ubuntu:/home/peng/work/camera/mjpg-streamer # ツリー -L 1 ./ P.S.: 再コンパイルする前にこれを実行する必要があります。 作る root@ubuntu:/home/peng/work/camera/mjpg-streamer/mjpg-streamer # インストールする コンパイルされたライブラリ ファイルの機能は次のとおりです。 (1) input_testpicture.so。これは、あらかじめ設定された画像をヘッダーファイルにコンパイルする画像テストプラグインです。カメラがなくても画像を送信できるため、プログラムのデバッグが容易になります。 4. スクリプトを修正するスクリプト ファイルを変更します。 /home/peng/work/camera/mjpg-streamer/mjpg-streamer/start.sh ./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so -w ./www" -o "./output_file.so -f /www/pice -d 15000" "./input_uvc.so -y" : カメラがYUVであることを指定します。デフォルトはJPEGです。私が使用しているLogitechのカメラはYUVです。 解像度を指定することもできます。 ./mjpg_streamer -i "input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 30" -o "./output_http.so -w ./www" -o "./output_file.so -f /www/pice -d 15000"
5. テスト走る: ./start.sh (1)ウェブページのテスト (2)ウェブページのビデオストリームテスト (3)写真撮影機能を実装しました。 ブラウザのアドレスバーに次のように入力します。 http://127.0.0.1:8080/?action=スナップショット または: http://127.0.0.1:8080/?action=stream スナップショットは一度に 1 つの画像をキャプチャして Web ページに表示することを意味しますが、ストリームは連続した画像のストリームであるビデオ ストリームを意味します。 6. 補足また、Z-Star カメラも使用しましたが、これには -y オプションは追加されていません。 ./mjpg_streamer -i "./input_uvc.so -d /dev/video0" -o "./output_http.so -w ./www" -o "./output_file.so -f /www/pice -d 150000" カメラによって生成されたデバイス ファイルが /dev/video0 ではない場合があります。 対応するパラメータが必要です: -d /dev/video1V. コードフローVI. シングルショットと連続撮影をサポートします。`mjpg_stream` の `output-file.so` は連続撮影のみ可能で、シングルショットやバーストショット機能はサポートしていないため、`output_file` のソースコードを修正する必要があります。ファイルディレクトリを変更します。 peng@ubuntu:~/work/camera/mjpg-streamer/mjpg-streamer/plugins/output_file/output_file.c
char buf[10]; // パイプから読み取ったコマンドを格納するために使われる
if (フラグ== 0 )
355 /* 指定されている場合はすぐに待機します */ 後から追加: 停止番号+ + ; |