前回は、WebRTCを利用した pistreaming を
確認しました。
動画の再生はスムーズに表示されてます。
ただ、難点を上げるとすると、音声データを
送信することを想定されてないので、
音はありません。
まとめると
HLSと比べると、HLSは音声も含めて
H264形式の動画で保存しながら
ぶつ切りのファイルを再生する感じなので、
映像+音声ですが、ファイルを作成するために、
10秒程度の遅延がありました。
pistreamingは、jpegを圧縮して一枚づつ
配信後、順次表示するパラパラ
アニメのような形式ですので、
遅延は1秒未満ですが、音声に
対応していない感じとなります。
次回は、別のカメラも試します。
2019年10月31日木曜日
2019年10月29日火曜日
ラズパイ(カメラ・21)
ライブストリーミングの第二弾として、
pistreaming のインストールを行います。
あとは、以下のコマンドから実行可能です。
ポート指定すると表示することができます。
http://192.168.1.28:8082
お~。今度は、前回のHLSと違って
かなりリアルタイムな感じで表示できますね。
遅延の時間としましては、おおみね1秒に
満たない程度な感じです。
これならば、遠隔操作のような利用でも
使えそうな感じです。
pistreaming のインストールを行います。
$ sudo pip3 install ws4py
$ git clone https://github.com/waveform80/pistreaming.git
簡単にインストールができますねあとは、以下のコマンドから実行可能です。
$ cd pistreaming
$ python3 server.py
そして、ブラウザから以下のようにラズパイのIPにポート指定すると表示することができます。
http://192.168.1.28:8082
お~。今度は、前回のHLSと違って
かなりリアルタイムな感じで表示できますね。
遅延の時間としましては、おおみね1秒に
満たない程度な感じです。
これならば、遠隔操作のような利用でも
使えそうな感じです。
2019年10月28日月曜日
ラズパイ(カメラ・20)
前回は、ライブストリーミングとしてHLSを
利用したものを試してみました。
今回からは、ウルトラ低遅延な仕組みを求めて
WebRTCを用いた、ライブ配信を試してみます。
WebRTCとは、Webブラウザを用いて
データをリアルタイムにやり取りするための技術
として、仕様化された仕組みです。
まず、ラズパイでWebRTCを用いたところで有名な
pistreaming を実行できるようにしてみます。
https://github.com/waveform80/pistreaming
利用したものを試してみました。
今回からは、ウルトラ低遅延な仕組みを求めて
WebRTCを用いた、ライブ配信を試してみます。
WebRTCとは、Webブラウザを用いて
データをリアルタイムにやり取りするための技術
として、仕様化された仕組みです。
まず、ラズパイでWebRTCを用いたところで有名な
pistreaming を実行できるようにしてみます。
https://github.com/waveform80/pistreaming
2019年10月25日金曜日
ラズパイ(カメラ・19)
でライブストリーミング(HLS編)の実行結果です。
ライブストリーミングって本当にLIVE?
今回、HLSを使ったライブ配信環境を作成してみたのですが、
撮影と、ブラウザで表示されている動画とを
比べてみると、7~10秒程度の遅延が発生しています。
これはシステムの処理能力不足からくるものではなく、
この配信システム特融のものなのです。
で、よくよく調べてみると
低遅延=リアルタイムストリーミング
となっていますが、概ね30~45秒程度の
時間差を許容範囲とするシステムということです。
一般のコンサートのライブ配信もこのくらいの遅延が一般的なようです。
そして、HLSよりももっと素早く配信できるもの(遅延が2~3秒)
をウルトラ低遅延と言うそうです。
遠隔地から映像を見ながら、動作を指示するような
処理には別のシステム構成が必要ですね~
今回のHLSのようなものですと、防犯カメラ用などの用途には
十分使えそうな感じですので、そちらで活用したいと思います。
ライブストリーミングって本当にLIVE?
今回、HLSを使ったライブ配信環境を作成してみたのですが、
撮影と、ブラウザで表示されている動画とを
比べてみると、7~10秒程度の遅延が発生しています。
これはシステムの処理能力不足からくるものではなく、
この配信システム特融のものなのです。
で、よくよく調べてみると
低遅延=リアルタイムストリーミング
となっていますが、概ね30~45秒程度の
時間差を許容範囲とするシステムということです。
一般のコンサートのライブ配信もこのくらいの遅延が一般的なようです。
そして、HLSよりももっと素早く配信できるもの(遅延が2~3秒)
をウルトラ低遅延と言うそうです。
遠隔地から映像を見ながら、動作を指示するような
処理には別のシステム構成が必要ですね~
今回のHLSのようなものですと、防犯カメラ用などの用途には
十分使えそうな感じですので、そちらで活用したいと思います。
2019年10月22日火曜日
ラズパイ(カメラ・18)
ライブストリーミング用のプログラムが
出来上がったので、動作を確認してみたいと
思います。
まず、ラズパイのIPアドレスを確認します。
次に、配信用のシェルスクリプトを起動します。
そして、Webサーバーを起動します。
すると、ブラウザで以下のアドレスから表示できます。
http://192.168.1.28:8000/hls.html
出来上がったので、動作を確認してみたいと
思います。
まず、ラズパイのIPアドレスを確認します。
ip a
次に、配信用のシェルスクリプトを起動します。
./live.sh
そして、Webサーバーを起動します。
python3 live.py
すると、ブラウザで以下のアドレスから表示できます。
http://192.168.1.28:8000/hls.html
2019年10月19日土曜日
ラズパイ(カメラ・17)
次に、ライブストリーミングを配信するWebサーバー用の
プログラムを作成します。
ファイル名 live.py を作成して編集します。
プログラムを作成します。
ファイル名 live.py を作成して編集します。
import os
import http.server
import socketserver
PORT = 8000
#--------------------------------------------------------------------------
# 開始
#--------------------------------------------------------------------------
def run():
web_dir = os.path.join(os.path.dirname(__file__), '/home/pi/Public')
os.chdir(web_dir)
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
if (__name__ == "__main__"):
run()
2019年10月18日金曜日
ラズパイ(カメラ・16)
さて、久々ですがラズパイにUSBで接続したWebカメラからの
ライブストリーミングシステム作成の続きです。
前回までで、ffmpegをつかった動画のレコーディング環境が
できたので、ライブ配信用にシステムを編集してみます。
まずは、配信データ作成のシェルスクリプトを作成します。
ファイル名 live.sh を作成して編集します。
ライブストリーミングシステム作成の続きです。
前回までで、ffmpegをつかった動画のレコーディング環境が
できたので、ライブ配信用にシステムを編集してみます。
まずは、配信データ作成のシェルスクリプトを作成します。
ファイル名 live.sh を作成して編集します。
httpDir=~/Public
cd $httpDir
ffmpeg -f alsa -thread_queue_size 1024 \
-i plughw:1,0 \
-f v4l2 -thread_queue_size 512 -input_format yuyv422 -video_size 800x600 \
-i /dev/video0 \
-filter_complex scale=800x600,fps=20 \
-c:v h264_omx -b:v 764k -g 24 \
-c:a aac -b:a 64k \
-flags +cgop+global_header \
-f hls \
-hls_time 4 -hls_list_size 3 -hls_allow_cache 0 \
-hls_segment_filename $httpDir/stream/stream_%d.ts \
-hls_base_url stream/ \
-hls_flags delete_segments \
$httpDir/playlist.m3u8
rm $httpDir/stream/stream_*.ts
rm $httpDir/playlist.m3u8
2019年10月17日木曜日
ラズパイ(IOT・8)
それでは、システム温度を下げる最終手段のFANを試します。(笑)
小さな扇風機でどれくらいの温度が下がるんでしょうね?
ラズパイの本体にあるGPIOのピンから
電源を供給する形で、ファンを取り付けます。
同じように、しばらく動作を続けてみて
温度の変化を計測してみます。
ヒートシンクも付けてなかったときの温度が
概ね56℃でしたので、なんと、15℃程下がってます。
効果は絶大ですね。
重い処理をさせ続ける場合、ファンは必須と思います。(笑)
小さな扇風機でどれくらいの温度が下がるんでしょうね?
ラズパイの本体にあるGPIOのピンから
電源を供給する形で、ファンを取り付けます。
同じように、しばらく動作を続けてみて
温度の変化を計測してみます。
ヒートシンクも付けてなかったときの温度が
概ね56℃でしたので、なんと、15℃程下がってます。
効果は絶大ですね。
重い処理をさせ続ける場合、ファンは必須と思います。(笑)
2019年10月16日水曜日
ラズパイ(IOT・7)
前回までで、CPU側とLANチップ側へヒートシンクを取り付けて、
システム温度を測りました。
っとこれまでは、公式のラズパイのケース(プラスチック製)を
つけての動作確認でした。
が、いっその事ケースを外すとどうなるのかも
検証してみました。
また、しばらく動かしてみると、
さらに2℃ほど低いですね。
狭いケース内で稼働させ続けると、熱がこもることが
分かりました。
長期の安定動作させるには、ケースも重要そうですね。
システム温度を測りました。
っとこれまでは、公式のラズパイのケース(プラスチック製)を
つけての動作確認でした。
が、いっその事ケースを外すとどうなるのかも
検証してみました。
また、しばらく動かしてみると、
さらに2℃ほど低いですね。
狭いケース内で稼働させ続けると、熱がこもることが
分かりました。
長期の安定動作させるには、ケースも重要そうですね。
2019年10月15日火曜日
ラズパイ(IOT・6)
前回は、CPU側へヒートシンクを取り付けて、
システム温度を測りました。
今回は、LANチップ側へ小さい方を取り付けてみます。
また、しばらく動かしてみました。
さらに1℃ほど低いようです。
誤差程度ですが効果は、ありそうです。
システム温度を測りました。
今回は、LANチップ側へ小さい方を取り付けてみます。
また、しばらく動かしてみました。
さらに1℃ほど低いようです。
誤差程度ですが効果は、ありそうです。
2019年10月12日土曜日
ラズパイ(IOT・5)
システム温度の状態を確認してみます。
室温26.2℃の環境でテストです。
通常時は、こんな感じです。
おおむね、56℃くらいです。
ヒートシンクは、こんなです。
大きい方をCPUへ取り付けてみます。
取り付けると、
しばらく動かしてみました。
多少なりにも効果は、あるんですね~。
2019年10月10日木曜日
ラズパイ(IOT・3)
増税前のラズパイ用機器の爆買い、第3弾。
ついに増税ですね。駆け足で買い込んだ
センサー類のリストです。
どうやら、オリンピック前までは、カードで買うと
増税前よりも2%もお徳なご様子(汗)
今回は、ユーザーとのコミュニケーションを
図るうえで必要なものをチョイスしてみました。
WayinTop ブレッドボード用ワイヤキット ジャンパーワイヤ 14サイズあり
フレキシブル ジャンパー線 オス-オス デュポンワイヤ 4サイズあり ピンセット付き
収納ケース付き Arduino用 Raspberry Pi用
5MP 1080P Camera for raspberry pi 4 Model b カメラモジュール
raspberryカメラモ赤外線ケース付き夜間LED
Adafruit I2C通信の8x8ミニLEDマトリックス基板(青色)
ピンソケット (メス) 2×20 (40P)
ピンソケット 2×20(40P) ラズパイ用スタッキングコネクタ
Raspberry Pi用ユニバーサル基板
コネクタ用ハウジング 1P
ケーブル用コネクタ (10個入)
RaspberryPiカメラモジュールV2
スピーカー 8Ω8W
3.5mmステレオミニプラグ⇔スクリュー端子台
PAM8012使用2ワットD級アンプモジュール
GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナセット付キット
ラズベリーパイB+/A+用ブレッドボード接続キット
BME280使用 温湿度・気圧センサモジュールキット
ピンヘッダ 2×20 (40P)
2×20(40P)両端コネクタ付IDCリボンケーブル(フラットケーブル)
ついに増税ですね。駆け足で買い込んだ
センサー類のリストです。
どうやら、オリンピック前までは、カードで買うと
増税前よりも2%もお徳なご様子(汗)
今回は、ユーザーとのコミュニケーションを
図るうえで必要なものをチョイスしてみました。
WayinTop ブレッドボード用ワイヤキット ジャンパーワイヤ 14サイズあり
フレキシブル ジャンパー線 オス-オス デュポンワイヤ 4サイズあり ピンセット付き
収納ケース付き Arduino用 Raspberry Pi用
5MP 1080P Camera for raspberry pi 4 Model b カメラモジュール
raspberryカメラモ赤外線ケース付き夜間LED
Adafruit I2C通信の8x8ミニLEDマトリックス基板(青色)
ピンソケット (メス) 2×20 (40P)
ピンソケット 2×20(40P) ラズパイ用スタッキングコネクタ
Raspberry Pi用ユニバーサル基板
コネクタ用ハウジング 1P
ケーブル用コネクタ (10個入)
RaspberryPiカメラモジュールV2
スピーカー 8Ω8W
3.5mmステレオミニプラグ⇔スクリュー端子台
PAM8012使用2ワットD級アンプモジュール
GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナセット付キット
ラズベリーパイB+/A+用ブレッドボード接続キット
BME280使用 温湿度・気圧センサモジュールキット
ピンヘッダ 2×20 (40P)
2×20(40P)両端コネクタ付IDCリボンケーブル(フラットケーブル)
ラズパイ(IOT・4)
ライブストリーミング等の常時起動するようなソフトウェアを
稼働させ続けると常にCPUを利用するため、負荷が高くなります。
これにより、消費電力が増え、システムの温度が上昇します。
もともとラズパイは省電力設計ですので、そのままでも
動作に影響はないのですが、できるだけ安定して
稼働させ続けるには、温度はある程度下げた方が
良いといえます。
そこで、CPUにヒートシンクをつけて違いを見てみます。
購入したのは、Amazonから
GeeekPiラズベリーパイ冷却ファン30x30x7mm DC 5VブラシレスCUP冷却ファンとラズベリーパイヒートシンク
です。
ヒートシンクはこんな形で、大きいのと小さいのとファンが
ラズパイの3用と4用で各2セットづつと、ファンが2つ入ってました。
まずは、CPU側へ大きいのからを装着
両面テープでの貼付けですし、パソコンのと比べて、
安っぽいですが効果あるんでしょうかね~。
次回、検証の結果をお届けします。
これにより、消費電力が増え、システムの温度が上昇します。
もともとラズパイは省電力設計ですので、そのままでも
動作に影響はないのですが、できるだけ安定して
稼働させ続けるには、温度はある程度下げた方が
良いといえます。
そこで、CPUにヒートシンクをつけて違いを見てみます。
購入したのは、Amazonから
GeeekPiラズベリーパイ冷却ファン30x30x7mm DC 5VブラシレスCUP冷却ファンとラズベリーパイヒートシンク
です。
ヒートシンクはこんな形で、大きいのと小さいのとファンが
ラズパイの3用と4用で各2セットづつと、ファンが2つ入ってました。
まずは、CPU側へ大きいのからを装着
両面テープでの貼付けですし、パソコンのと比べて、
安っぽいですが効果あるんでしょうかね~。
次回、検証の結果をお届けします。
2019年10月9日水曜日
ラズパイ(カメラ・15)
今度は本当に、この前ライブストリーミングするために
ハードウェアエンコーダー付きのffmpegを
導入してみました。ハードの支援なし・ありを
前回つくった計測ツールを利用して確認してみます。
内容は、2MBのmpegファイルをmp4へ変換してみます。
まずは、ハードウェアエンコードなしの場合
つぎに、ハードウェアエンコードありの場合
あれっ、どちらも変換時間も5.5秒程度とハードウエアエンコードの
ありとなしとで、あまり差がでてないですね。
CPUの利用率も誤差範囲程度のような気がします(汗)
もっと大きなファイルで試さないといけないのかもしれませんね。
ハードウェアエンコーダー付きのffmpegを
導入してみました。ハードの支援なし・ありを
前回つくった計測ツールを利用して確認してみます。
内容は、2MBのmpegファイルをmp4へ変換してみます。
まずは、ハードウェアエンコードなしの場合
time ffmpeg -i output.mpg -c:v h264 -b:v 5000k -y output1.mp4
つぎに、ハードウェアエンコードありの場合
time ffmpeg -i output.mpg -c:v h264_omx -b:v 5000k -y output2.mp4
ありとなしとで、あまり差がでてないですね。
CPUの利用率も誤差範囲程度のような気がします(汗)
もっと大きなファイルで試さないといけないのかもしれませんね。
2019年10月8日火曜日
ラズパイ(カメラ・14)
前回は、コマンドからラズパイの状態(CPU使用率とか)を
表示して確認してみました。
今回は、毎回コマンドを叩かなくても一度に
状態を連続して見れるようにするため、Pythonから表示できるように
プログラムを行ってみます。
取得するのは、基本項目のCPU利用率とメモリー使用率と温度にします。
psutilとsubprocessを利用して、値を取得します。
実行すると
表示して確認してみました。
今回は、毎回コマンドを叩かなくても一度に
状態を連続して見れるようにするため、Pythonから表示できるように
プログラムを行ってみます。
取得するのは、基本項目のCPU利用率とメモリー使用率と温度にします。
psutilとsubprocessを利用して、値を取得します。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
リソース確認
Usage:
python3 resource.py
インストール
sudo pip3 install psutil
chmod +x resource.py
"""
import subprocess
import psutil
import time
import re
#--------------------------------------------------------------------------
# 確認開始
#--------------------------------------------------------------------------
def run():
while True:
memory = psutil.virtual_memory()
cpu_percent = psutil.cpu_percent(interval=1)
cmd = 'vcgencmd measure_temp'
res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
stdout, stderr = res.communicate()
tempObj = re.search(r'\d*\.\d*', stdout)
print('CPU使用率:', cpu_percent, '% メモリ使用率:', memory.percent, '% 温度:', tempObj.group(), '\'C')
time.sleep(1.0)
if (__name__ == "__main__"):
run()
実行すると
2019年10月7日月曜日
ラズパイ(カメラ・13)
前回、ライブストリーミングするために
ハードウェアエンコーダー付きのffmpegを
導入してみました。ハードの支援なし・ありを
確認してみます。っとその前に、
お互いの実行による負荷を計測するために、
CPUの利用率とかを計測できるような
ツールを作成してみます。
まずはコマンドで出来る事を確認してみます。
CPUの使用率
$ cat /proc/stat | grep cpu
CPUの周波数を取得
$ vcgencmd measure_clock arm
CPUの電圧
$ vcgencmd measure_volts
CPUのメモリ使用量
$ vcgencmd get_mem arm
GPUのメモリ使用量
$ vcgencmd get_mem gpu
残りメモリ確認
$ free -h で分かりやすい単位で表示
温度取得のコマンド
$ vcgencmd measure_temp
ハードウェアエンコーダー付きのffmpegを
導入してみました。ハードの支援なし・ありを
確認してみます。っとその前に、
お互いの実行による負荷を計測するために、
CPUの利用率とかを計測できるような
ツールを作成してみます。
まずはコマンドで出来る事を確認してみます。
CPUの使用率
$ cat /proc/stat | grep cpu
CPUの周波数を取得
$ vcgencmd measure_clock arm
CPUの電圧
$ vcgencmd measure_volts
CPUのメモリ使用量
$ vcgencmd get_mem arm
GPUのメモリ使用量
$ vcgencmd get_mem gpu
残りメモリ確認
$ free -h で分かりやすい単位で表示
温度取得のコマンド
$ vcgencmd measure_temp
2019年10月4日金曜日
ラズパイ(カメラ・12)
ライブストリーミング回りは、フォーマットも沢山ありますね。
これまでは、RTMP(Real Time Messaging Protocol )とかですと、
Adobe Flashプレーヤーで再生できるのでよく利用されていましたが、
サポートが2020年で終了ですので、今後推奨されるHLSという
送信技術を使います。
また、フォーマットはH.264をつかって画像を圧縮します。
ラズパイの場合、H.264用にハードウェアエンコーディングの機能が
あるので、CPUの負荷を下げられるはずです。
で、低遅延・低リソース・汎用性でどこまで綺麗に配信できるかを
検証するために、ffmpegのインストールに入ります。
ハードウェアエンコードの機能を利用できるように、
ffmpegのソースをダウンロード・解凍します。
音声のために、ALSA libraryを取得し、インストールします。
FFmpeg コンパイル & インストール
これまでは、RTMP(Real Time Messaging Protocol )とかですと、
Adobe Flashプレーヤーで再生できるのでよく利用されていましたが、
サポートが2020年で終了ですので、今後推奨されるHLSという
送信技術を使います。
また、フォーマットはH.264をつかって画像を圧縮します。
ラズパイの場合、H.264用にハードウェアエンコーディングの機能が
あるので、CPUの負荷を下げられるはずです。
で、低遅延・低リソース・汎用性でどこまで綺麗に配信できるかを
検証するために、ffmpegのインストールに入ります。
sudo apt-get install libomxil-bellagio-dev
git clone git://source.ffmpeg.org/ffmpeg.git
cd /home/pi/ffmpeg
ハードウェアエンコードの機能を利用できるように、
ffmpegのソースをダウンロード・解凍します。
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.9.tar.bz2
tar xjvf alsa-lib-1.1.9.tar.bz2
cd alsa-lib-1.1.9
./configure --prefix=/home/pi/ffmpeg
make
make install
音声のために、ALSA libraryを取得し、インストールします。
FFmpeg コンパイル & インストール
./configure --enable-gpl --enable-nonfree --enable-mmal --enable-omx-rpi --enable-omx --extra-cflags="-I/home/pi/ffmpeg/include" --extra-ldflags="-L/home/pi/ffmpeg/lib" --extra-libs=-ldl
make -j4
sudo make install
次回は、動作確認してみます。2019年10月3日木曜日
ラズパイ(カメラ・11)
ラズパイは、カメラ回りがしっかりしているので、
外出先からリモートコントロールして、
映像で家の中とか見れたら便利と思いませんか?
防犯対策にもなりますし。
ということで、これらのカメラを利用して
リアルタイムのライブストリーミングできる仕組みを考えてみます。
本体のカメラでも、フリーのメディアプレイヤーのVLCを
使えばライブストリーミングできますが、
どこでも映像の確認をできるようにしたいので
Webブラウザさえあれば表示できるように、
HTTP ライブ ストリーミング (HLS) 形式を利用できる
USBのWebカメラから配信できる仕組みにします。
それと、Webカメラですとおおむねマイクもいっしょに
ついているので音声も同時にストリーミングもできるはずです~。
本体のカメラの方は、同時に赤外線カメラをつけて
夜間確認用や、OpenCVを利用した顔認識などに使いたいと
思います。
まずは、動画回りの環境づくりを行います。
映像は、ffmpegを利用します。
ffmpegは、対応しているフォーマットやプロトコルがめちゃくちゃ
多いので、なんでもできそうですね。
また、音声は、alsa-lib(Advanced Linux Sound Architecture)
を利用します。
次回は、このソフトのインストールを行っていきます。
外出先からリモートコントロールして、
映像で家の中とか見れたら便利と思いませんか?
防犯対策にもなりますし。
ということで、これらのカメラを利用して
リアルタイムのライブストリーミングできる仕組みを考えてみます。
本体のカメラでも、フリーのメディアプレイヤーのVLCを
使えばライブストリーミングできますが、
どこでも映像の確認をできるようにしたいので
Webブラウザさえあれば表示できるように、
HTTP ライブ ストリーミング (HLS) 形式を利用できる
USBのWebカメラから配信できる仕組みにします。
それと、Webカメラですとおおむねマイクもいっしょに
ついているので音声も同時にストリーミングもできるはずです~。
本体のカメラの方は、同時に赤外線カメラをつけて
夜間確認用や、OpenCVを利用した顔認識などに使いたいと
思います。
まずは、動画回りの環境づくりを行います。
映像は、ffmpegを利用します。
ffmpegは、対応しているフォーマットやプロトコルがめちゃくちゃ
多いので、なんでもできそうですね。
また、音声は、alsa-lib(Advanced Linux Sound Architecture)
を利用します。
次回は、このソフトのインストールを行っていきます。
2019年10月2日水曜日
ラズパイ(カメラ・10)
Raspberry Pi 3 Model Bには、4つのUSBポートがありますので、
このポートに複数のUSBカメラを取り付けて
写真の撮影も可能です。
今回は、複数カメラを行うときの機器の確認を行ってみます。
まず、USBに何が刺さっているか確認します。
Bus 001 Device 005: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
デバイス5として、WebカメラのC310が接続されていることが分かります。
次に、映像として利用できるデバイスを確認してみます。
とすると、機器の一覧が表示されます。
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
/dev/video11
/dev/video12
mmal service 16.1 (platform:bcm2835-v4l2):
/dev/video2
UVC Camera (046d:081b) (usb-3f980000.usb-1.3):
/dev/video0 // ←これがデバイス名(USBカメラ)
/dev/video1
そこで、カメラで使える形式を取得を行います。
とすると、撮影形式が表示されます。
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
.
.
.
Size: Discrete から撮影できる解像度が確認できました。
あとは、撮影時にこのデバイス名と解像度を指定することになります。
このポートに複数のUSBカメラを取り付けて
写真の撮影も可能です。
今回は、複数カメラを行うときの機器の確認を行ってみます。
まず、USBに何が刺さっているか確認します。
$ lsusb
Bus 001 Device 005: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
デバイス5として、WebカメラのC310が接続されていることが分かります。
次に、映像として利用できるデバイスを確認してみます。
$ v4l2-ctl --list-device
とすると、機器の一覧が表示されます。
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
/dev/video11
/dev/video12
mmal service 16.1 (platform:bcm2835-v4l2):
/dev/video2
UVC Camera (046d:081b) (usb-3f980000.usb-1.3):
/dev/video0 // ←これがデバイス名(USBカメラ)
/dev/video1
そこで、カメラで使える形式を取得を行います。
$ v4l2-ctl -d /dev/video0 --list-formats-ext // デバイス名を指定して確認
とすると、撮影形式が表示されます。
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
.
.
.
Size: Discrete から撮影できる解像度が確認できました。
あとは、撮影時にこのデバイス名と解像度を指定することになります。
2019年10月1日火曜日
ラズパイ(カメラ・9)
今回は、USBにWebカメラをつけてみます。
付けるのは、ロジクール ウェブカメラ C310 ブラック HD 720P
ウェブカム ストリーミングカメラです。
こんな感じに接続です。
これまで、カメラ専用コネクターにつけて
使っていたコマンドの raspistill でも複数カメラ選択用の
パラメータがありますが、USBカメラの方は
このコマンドを使うことができません。
そこで、USBカメラ用にソフトをインストールします。
撮影の方は、
とすることで、撮影可能です。
-r:解像度の指定
--no-banner:写真の下部に表示される日時を表示しない
を実行することで、他のパラメータの
詳細情報が表示されます。
付けるのは、ロジクール ウェブカメラ C310 ブラック HD 720P
ウェブカム ストリーミングカメラです。
こんな感じに接続です。
これまで、カメラ専用コネクターにつけて
使っていたコマンドの raspistill でも複数カメラ選択用の
パラメータがありますが、USBカメラの方は
このコマンドを使うことができません。
そこで、USBカメラ用にソフトをインストールします。
sudo apt-get install fswebcam
撮影の方は、
fswebcam -r 1280x960 --no-banner img.jpg
とすることで、撮影可能です。
-r:解像度の指定
--no-banner:写真の下部に表示される日時を表示しない
fswebcam -?
を実行することで、他のパラメータの
詳細情報が表示されます。
登録:
投稿 (Atom)