Raspberry Piカメラからビデオをストリーミングしてライブで見る方法


93

Raspberry Piは初めてで、Raspberry Piカメラも初めてです。Raspberry Piカメラに関する多くのオンラインチュートリアルを見てきましたが、ウェブカメラで(SimpleCVまたはOpenCVを使用して)できるように、Raspberry Piカメラから直接ストリーミングできるようにする方法をまだ見つけていません。誰かが私を正しい方向に向けることを望んでいました。


mjpgstreamerを試しましたか?シェルソリューションを投稿しますか?
jaromrax

3
ゼロレイテンシソリューションを探している人は、raspberrypi.stackexchange.com
a / 32521/30681

sshとmpvを使用している場合:(ssh raspberrypi raspivid -o - -t 0 -fps 25 -w 640 -h 360 | mpv - --speed 2 --fps 25「--speed 2」は遅れを防ぎます)。
変態

回答:


81

ディエゴが提案した解決策は、vlcがraspvidのストリームを再ストリーミングするため、かなり遅く、ビデオの遅延が大きいことを除いて、優れています。2013分の12以来の公式V4L2ドライバが利用可能です:http://www.ics.com/blog/raspberry-pi-camera-module#.VJFhbyvF-b8 これは、レンダリングの再ストリーミングは廃止述べました。モジュールをロードして使用するだけです:

sudo modprobe bcm2835-v4l2
cvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:12345}'

これにより、ポート12345でhttpストリームが作成されます。Diegoの回答からのrtcp形式など、他の形式も使用できます。詳しくは、https//web.archive.org/web/20151012014829/http//www.videolan.org80 / doc / streaming-howto / en / ch03.htmlをご覧ください。


2
この回答:demux=264は、ストリームがRAW h264であり、デマルチプレクサを設定する必要があるため、cvlc に追加することをお勧めしますcvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:12345}' :demux=264。たとえば、VLC for Androidでストリームを視聴できます。
ハイメM.

8
提供されたリンクでは、代わりにautoreconf -vfi使用する必要があります./bootstrap.sh
-JuJoDi

1
ビデオのストリーミングとRPi SDカードへの保存の両方を可能にする方法はありますか?
またはワインバーガー

4
videolan.org/doc/streaming-howto/en/ch03.htmlリンクが死んでいます。
カル

4
この方法は、ヘッドレス環境では機能しないことに注意/確認する価値があると思います。エラーが発生しましたが、そのうちの1つはX11について語っています
Nick

41

選択できるオプションがいくつかあります。私の仕事では、VLCを使用して、Raspberry Pi Cameraでキャプチャしたビデオをサーバールームからオフィスにストリーミングしています。この欠点の1つは、約5秒の遅延があり、これに対する解決策が見つからないことです。以下が設定です。

  1. raspbianをインストールして更新し、カメラが有効になっていることを確認します(sudo raspi-configを実行して[カメラを有効にする]を選択します)。

    sudo apt-get update
    sudo apt-get upgrade
    
  2. vlcをインストールする

    sudo apt-get install vlc
    
  3. 次の内容でストリームを開始するスクリプトを作成するか、コマンドを実行します(コマンドを実行するだけでは他に何もできません)。

    sudo nano myscript.sh
    raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
    
  4. スクリプトを実行可能にする

    sudo chmod +x myscript.sh
    
  5. ストリームを自動的に開始する場合は、crontabにスクリプトを追加する必要があります。この作業を行うには、cronで実行される別のスクリプトを作成する必要がありました(OBS!VLCはsudoとして実行できないため、正しいcronにいることを確認してください)。sudo nano myscript2.sh

    #!/bin/bash
    /path/to/myscript.sh
    

    次に:

    sudo chmod +x myscript2.sh
    crontab -e
    @reboot /path/to/myscript2.sh
    
  6. ビデオストリームを視聴するには、ストリーミングに使用しているラズベリーパイと同じネットワーク上のコンピューターでVLCを開きます。[メディア]-> [ネットワークストリームを開く]を押して、フィールドに次を貼り付けます。

    rtsp://[IP].[TO].[THE].[PI]:8554/
    

FPS(1秒あたりのフレーム数)を気にせず、遅延が必要ない場合は、MJPEGを使用できます。こちらについて詳しく読むことができます

見るTHISラズベリーパイカメラモジュールについてのwikiを。あなたが探しているものを見つけることを願っています。


WindowsのVLCで次のようになるのはなぜですか?入力を開けません:VLCはMRL 'rtsp://192.168.1.78:8554'を開けません。詳細については、ログを確認してください。Pi側は問題ないようです。エラーはなく、接続されたクライアントに反応しているようです。
モノジョニー

@monojohnnyラズベリーパイはストリーミングですか?画面に接続して、ビデオが実際に機能しているかどうかを確認します。ビデオが機能している場合は、ラズベリーパイに接続された画面にストリームが表示されます。
ディエゴ

@monojohnnyディエゴを書いてくれてありがとう...最初の試行で完璧に動作します!monojohnny ...末尾に「/」を付ける必要があります。そうしないと、vlcが文句を言います。これを試してください:rtsp://192.168.1.78:8554 /
Sujay Phadke

@Diegoに感謝します
-Denoteone

Windowsでも同じ問題が発生し、piからビデオをストリーミングできません。Windows 10 PCにインストールされたVLCではなく、piに接続された画面でpiカメラからのビデオストリーミングが表示されます。
モスタファ

23

いくつかのオプションを試しました。しかし、私はそのプロジェクトを使用して最高の結果を見つけました: eLinuxコミュニティーのRPi-Cam-Web-Interface

ストリームの遅延はほとんどゼロです。

幸運を :)


4
待ち時間をゼロにしたい人は、これを確認してください。@ user2998302の小道具 私は信じられない。1年間、これに対する賛成(謝辞)はない。
igaurav

これは迅速で簡単なセットアップですが、ソフトウェアは最適化にはほど遠いので、低レイテンシ(ゼロレイテンシなど)ではなく、インターフェイスは非常におしゃべりであり、余分なCPUサイクルを使用します。他に何も実行していない場合は問題ありませんが、特にPi 1の場合は問題になる可能性があります
ニック

これはすごい!
ハムザウアガッド

これまでにテストした中で最も高速なWebビデオストリーミング(vlcを介してストリーミングされるネイティブv4l2ドライバー)、ほとんどゼロのレイテンシ。この問題に関するインターネット上のすべてのリソースは、このアプリケーションよりも良い結果を得ることはできませんが、最適化について文句を言う意味はありません。
ギャバー

うわー、私はこの1つの岩を認めなければなりません!
L.トラバッチン

18

私が見つけた最も簡単な方法は、ラズベリーパイカメラを使用して、ヘッドレスのラズベリーパイからライブビデオフィードを取得することです。

このソリューションは、追加のソフトウェアをPIにインストールすることなく、すぐに使用できます。

PIで:

raspivid -t 0 -l -o tcp://0.0.0.0:3333

コンピューターでは、VLCでストリーミングできます。

vlc tcp/h264://192.168.66.154:3333

(192.168.66.154がPIのIPアドレスであると仮定)


Raspberry Piへようこそ!通常、回答を1つの質問から別の質問にそのままコピーすることはお勧めしません。15担当者に達すると、「重複」と同一の質問にフラグを立てて、回答のコピーが1つだけになるようにすることができます。問題に対するあなたの答えを共有してくれてありがとう!
オーロラ0001

@Per Hansen私のために働いていない...ポートを割り当てることとは別に行う必要がある何か他のものがあるかもしれません。
アミットレイ

これは素晴らしい作品です!RPi3B +およびRaspbian 9.4(ストレッチ)ヘッドレスを使用します。
dparkar

5

H264キャプチャをサポートするV4L2ドライバーが供給されるlive555に基づく軽量RTSPサーバーを使用して、可能なソリューションをraspberryフォーラムに投稿しました。

sudo modprobe -v bcm2835-v4l2
git clone https://github.com/mpromonet/v4l2rtspserver.git
cd v4l2rtspserver
cmake .
make install
v4l2rtspserver -H <height> -W <width> -F <fps>

次に、次を使用してRTSPストリームにアクセスできるはずです。

vlc rtsp://<raspberry>:8554/unicast

タイムラグはどうですか?
クハジェヤン

cvlcよりも短い。
mpromonet

cmakeは、プロジェクトにさらにいくつかのパッケージを追加するまで、「ALSAが見つかりませんでした(ALSA_LIBRARY ALSA_INCLUDE_DIR)」について不平を言いました。解決策は次のとおりです。「sudo apt-get install libopus-dev libexpat1-dev libasound2-dev libudev-dev libavahi-client-dev」(ここではasoundで十分かもしれません)。
MoonCactus

ああ、それは非常にうまく機能します(軽量ソリューション)、ありがとう。タイムラグはまともで、他のソリューションと比較して約2秒です。
MoonCactus

@MoonCactus:ALSAのインストールを修正したと思います(libasound2-devのみが必要です)。遅延は1秒未満である必要があります。vlcを使用する場合は、次を使用してネットワークバッファリングを減らすことができます --network-caching 300
mpromonet

4

UV4L(また)は、設定を必要とせずに標準のHTML5ビデオおよびオーディオストリーミングをサポートします。MJPEG over httpなど、他のオプションも可能です。

更新:

UV4Lは今もサポートしてライブオーディオ&ビデオ放送を Web上Jitsi素敵なお部屋に。特別な設定は必要ありません。それはあなたの名前、部屋を埋めてスタートをクリックするのと同じくらい簡単です。

2回目の更新:

UV4Lは、H264ハードウェアでエンコードされたビデオもフルfps、HD、そして将来的にはフルHDでサポートするようになりました。


1
唯一のものは、ほとんどすべてが理解していない要素ストリームのみを取得できるということです。残念ながらあまり使いません。あなたはPi2地磁気を持っていると後で、あなたがUV4Lでできる場合のWebRTCを(発光するものが必要あなたがこれを行うには)ので、電源/サイズの制約の(ゼロを必要としている場合は、あなたのSOL。。
Svartalf

3

両方ともmjpeg_streamermotioncvlcよりも待ち時間が長いようです。

を使用して mjpg_streamer

mjpeg_streamer コンパイルが必要ですが、githubの指示は簡単です。

コンパイル後start.sh、プロジェクトディレクトリから起動するか、直接(プロジェクトディレクトリで)実行して実行できます。

./mjpg_streamer -i "./input_uvc.so -rot 180" -o "./output_http.so -w ./www -p 8090"

8090TCPポートはどこですか。指定しない場合8080、デフォルトでポートが使用されます。start.shこのスクリプトは、追加オプションといくつかの使用例が含まれています。

を使用して motion

Motionには、起動、停止、または再起動時に簡単に自動起動できるsystemdサービスが含まれています。

IPウェブカメラモードで使用するには、次の設定を設定する必要があります/etc/motion/motion.conf

daemon on
stream_localhost off
output_pictures off
ffmpeg_output_movies off
stream_maxrate 24
framerate 24
width 640
height 480

次に、/etc/default/motionセットで:

start_motion_daemon=yes

起動時にサービスを自動起動するには:

systemctl enable motion

systemctl start/stop/restart motion対応するアクションに使用します。

デフォルトのストリーミングポートは8081です。ポートはで設定さstream_port/etc/motion/motion.confます。


1

監視ソフトウェアを探しているかどうかはわかりませんがmotion、ソフトウェアモーション検出器のインストールと実行に成功しています。あなたには見ている必要があり公式ガイド


モーションはUSBカメラにのみ適用されます
geneorama

3
@geneorama motionは、USBカメラに限定されないvideo4linuxインターフェイスを使用します。bcm2835-v4l2モジュールは、このインターフェイスを介してカメラボードへのアクセスを提供します。
mpromonet

1

Raspberry Pi 2でuv4l WebRTCを使用してビデオをストリーミングできました。非常に簡単です。このチュートリアルに従っください。これが役立つことを願っています。


リンクの腐敗を防ぐために、ここにチュートリアルの関連部分を含めてください。
ベックス

Pi2以上でのみ適用されます。1A / 1A + / Zeroでは機能しません。人々がそれを行うことができるように見えるので、なぜ彼ができないのか完全には
わかり

1

Windows 7でビデオストリームを取得するのに問題がありました。多くのLinuxソリューションがありましたが、今までWindowsでそれらを複製することはできませんでした。私は最終的にかなり迅速な解決策を得ました:

  1. netcatのWindowsバージョンを取得します:http : //joncraton.org/files/nc111nt.zip、解凍してパスに追加します
  2. :標準入力から読み取ることができMPC-HCの新バージョン、入手https://mpc-hc.org/downloads/インストールし、同様に(私は64ビットですが、32ビットがうまくいけば行いますパスにそのパスを追加します同じように)

ラズベリーパイの場合:

raspivid -t 0 -w 1024 -h 768 -fps 20 -b 1000000 -o - | nc your.receiver.ip.address 5001

Windowsマシンの場合:

nc -l -p 5001 | mpc-hc64 -

したがって、私は、何も再パックまたは再ストリーミング、再多重化、またはこれまでに何も取得しません。raspvidからのバイナリストリームがmpcにフィードされ、表示されます。私のラズベリーはWi-Fi経由で動作するため、最初はかなりの遅延が発生しますが、これは30分程度で0.2〜0.3秒の遅延に短縮されます。

残念ながら、nc -l -p 5001 | vlc -ビデオなしでvlcウィンドウを開くだけなので、同じ方法でvlcを使用できませんでした。


1

カメラ入力を処理するためのavconvと一緒に、世界へのストリーミングにRTMPをサポートするNginxを使用しました。コードはGithubで入手できます。


いいですね、体験動画のタイムラグについて教えてください。
クハジェヤン

2
はい、約5秒の遅れがありました。
TTT

0

Peter HansenのコードはLAN上でうまく動作する可能性が高いですが、完全を期すために、TCPはリアルタイムに対するデータの整合性に関するものです。リアルタイムストリームでは、タイムリーな表示のためにデータの損失が許容される場合があります。この場合、UDPの方が優れている可能性があります。私はそのコードをテストしていません。

防犯カメラの場合、マルチキャストが考慮される場合があります。最新のルーターは、100ドルのモデルでも対応できます。


0

README.mdの指示に従って、piにhttps://github.com/BreeeZe/rposからONVIFソリューションをインストールしました

唯一の違いは、インストールしたことnode v8.4.0です。これにより、同じネットワークに接続されたNVRでカメラ出力を確認できます。また、カメラはアドレスを使用してVLCプレーヤーネットワークストリームから直接再生できます。rtsp://192.168.1.3:8554/h264


0

しばらくの間、これに似た問題が発生しました:

https://www.npmjs.com/package/ws-avc-player

提案されている他のソリューションよりも必要最低限​​ですが、Webでの低遅延が優先される場合はうまく機能すると思います。

ほとんどのブラウザ(480pのモバイルでも)で動作し、ブラウザにプラグインは必要ありません。


私はデコーダー自体を作成しませんでした、その別のプロジェクトgithub.com/mbebenita/Broadway ただし、驚くほど最適化されており、答えで言ったように、ドロイドで480pを簡単に処理できます。Brodwayを使用した理由は、RPIにvp8 / 9ハードウェアエンコーダーがないため、h264だけが適切なオプションであるためです。ただし、ブラウザーでネイティブh264デコーダーを使用する場合は、低遅延を忘れることができます。
MatijaG

信じられないほど聞こえるので、試してみる必要があります。
-kwasmich

フィードバックは大歓迎です:)
MatijaG

今だけ、私はいくつかの暇がありました。raspividカメラフィードでサンプルを実行するのに問題があります。ではffmpeg一方、私はちょうど秒あたりのフレーム数の10分の取得しています。きれいなRaspbianとPi Zeroを使用しました。何かアドバイスがありますか?
-kwasmich

ffmpegを使用すると、ハードウェアアクセラレーションが不足するため、まったく使用できません。サンプルを実行してみてください: node example/index.js raspivid問題がある場合はそのまま使用してnode example/index.js、別々に実行してみて/opt/vc/bin/raspivid -pf baseline -ih -t 0 -w 640 -h 480 -hf -fps 15 -g 30 -o - | nc localhost 5000、raspividからエラーが発生するかどうかを確認してください
MatijaG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.