20210506のLinuxに関する記事は5件です。

配偶者の暴言24時間監視・記録システム(ffmpeg, ラズパイ)

赤ちゃんの見守り・成長記録、 不審者の監視・記録 などにも使えます。ラズパイ上でffmpegを使って録画し、録画ファイルをウェブから見られるようにします。ラズパイではなくても常時稼働のLinux&systemdならだいたい同じようにできますし、ウェブカメラへのアクセス方法を変えればWindows・Macでもほぼ同様にできます。ラズパイのSDカードだとおそらく容量が不足するため、USBでHDDまたはSSDを繋いでそこに録画していくのがよいと思われます。 実行例 ウェブブラウザからファイルをクリックすると 手順 以下すべての手順を sudo bash などしてrootのプロンプトが出ている状態で行います。 使用したソフトウェアのバージョン # uname -a Linux raspi4b-router 5.10.0-6-rt-arm64 #1 SMP PREEMPT_RT Debian 5.10.28-1 (2021-04-09) aarch64 GNU/Linux # systemctl --version systemd 247 (247.3-5) +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified # ffmpeg -version ffmpeg version 4.3.2-0+deb11u1 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10 (Debian 10.2.1-6) configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100 ウェブカメラ撮影の準備・確認 apt-get install v4l-utils v4l2-ctl -d /dev/video0 --list-formats-ext で /dev/video0 に繋がるウェブカメラが対応する解像度(resolution)とフレームレート(framerate)を確認する 録音するデバイスの準備・確認 pulseaudio が録音デバイスを管理している場合は以下の手順ではダメなので、pulseaudio をアンインストールします。 arecord --list-device で録音するデバイスの番号を確認します。以下の例だと hw:1,0 を後で ffmpeg に与えます。 # arecord --list-device **** List of CAPTURE Hardware Devices **** card 1: Webcam [ELECOM 2MP Webcam], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 動画を置いて配信するためのウェブサーバーの準備 apache2 でも nginx でも lighttpd でもなんでもいいので、次のシェルスクリプトの $dir に設定するディレクトリに置かれたファイルが一覧として表示されるように設定します。 シェルスクリプト 以下のシェルスクリプトの冒頭の変数を適切に設定して /root/record.sh として置きます。 /root/record.sh #!/bin/sh #↓録画を置くディレクトリ dir=/var/www/html/video #↓録音元(マイク) micdevice=hw:1,0 #↓録画元 videodevice=/dev/video0 #↓録画解像度 resolution=352x288 #↓録画のFPS framerate=6 #↓フォントのファイル fontfile=/usr/share/fonts/truetype/unifont/unifont.ttf #↓1ファイルあたりの録画時間(秒) duration=3600 exec /usr/bin/ffmpeg -xerror -y -loglevel level+warning \ -filter_complex "aresample=async=1000;drawtext=fontfile=${fontfile}:box=1:boxcolor=white:fontsize=32:text='%{localtime\:%F_%T}'" \ -f alsa -thread_queue_size 8192 -i ${micdevice} \ -f v4l2 -vsync cfr -thread_queue_size 8192 -s ${resolution} \ -framerate ${framerate} -i ${videodevice} \ -f mp4 -tune zerolatency -preset veryfast -t ${duration} -pix_fmt yuv420p \ -movflags frag_keyframe+empty_moov+default_base_moof -frag_size 1000000 \ ${dir}/record-`date +%F_%R`.mp4 systemdによる自動起動 以下のファイルを /etc/systemd/system/record.service という名前で置いた後に、systemctl enable --now record とすると起動され、再起動後も自動起動されます。 /etc/systemd/system/record.service [Service] Type=exec CPUSchedulingPolicy=rr CPUSchedulingPriority=2 Restart=always ExecStart=/bin/sh /root/record.sh [Install] WantedBy=multi-user.target 録画がコマ落ちすることを避けるために、上記ではffmpegをリアルタイム優先度で実行させています。 古くなった録画の自動消去 以下の2つのファイルを置いたあとに systemctl enable --now deleterecord.timer すると録画から10日以上経過した古いファイルが自動的に消されるようになります。 /etc/systemd/system/deleterecord.service [Service] Type=exec Nice=5 #↓以下のディレクトリを録画保存ディレクトリに直す ExecStart=/usr/bin/find /var/www/html/video -mmin +864000 -ls -delete /etc/systemd/system/deleterecord.timer [Timer] OnCalendar=*-*-* *:05:00 Persistent=false [Install] WantedBy=timers.target ffmpegのオプション解説 ffmpeg は入出力両方に関連するオプションと、個々の入力または出力に関連するオプションに大別されます。 入出力両方に関連するオプション -xerror エラーが生じたら終了する -y 記録するファイルが既に存在する場合に上書きする -loglevel level+warning 標準エラー出力に表示するログの詳しさの調節 -filter_complex "aresample=async=1000;drawtext=fontfile=${fontfile}:box=1:boxcolor=white:fontsize=32:text='%{localtime\:%F_%T}'" 映像と音を同期させるように音をリサンプリングするのと、映像に時刻を上書きする 録音元に関連するオプション -f alsa 録音の形式としてALSAを選択する。もしPulseAudioから録音する場合 -f pulse に換える -thread_queue_size 8192 おまじない -i ${micdevice} 録音元の指定 録画元に関連するオプション -f v4l2 録画元の形式の指定 -vsync cfr 指定したフレームレートで実際のコマがウェブカメラから来ないときに、コマの削除または複製を行い、フレームレートが指定した値になるようにする -thread_queue_size 8192 おまじない -s ${resolution} 録画解像度の指定 -framerate ${framerate} 毎秒あたりのコマ数の指定 -i ${videodevice} 録画元の指定 録画映像書き出しに関連するオプション -f mp4 MPEG4形式を指定 -tune zerolatency 指定するといいらしい -preset veryfast 圧縮率と圧縮に掛かる時間のトレードオフが最も優れるらしい -pix_fmt yuv420p MacやWindows 7で再生するときに付けるといいらしい -movflags frag_keyframe+empty_moov+default_base_moof 録画途中でも再生できるように必要な情報を録画ファイル内で分散させる -frag_size 1000000 上記情報をおおよそ1000000バイトごとに録画ファイルに書き込む 今後の課題 ディープラーニング異常検知による暴言の自動的な抽出 録画ファイル内のおなら回数の自動数え上げ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ディレクトリを作成して作成したディレクトリに移動するコマンドを追加する

目的 ディレクトリを作成してそのディレクトリに移動するコマンドを登録する方法をまとめる 条件 エイリアスファイルが作成されていること。 .bash_aliasesファイルの読み込みの記載が.bash_profileなどに記載されていること。 方法 下記コマンドを実行してエイリアスファイルを開く。 $ vi ~/.bash_aliases 下記の記載をする。 ~/.bash_aliases function mkcd() { mkdir $1; cd $1; } alias mkcd=mkcd 下記コマンドを実行してエイリアスファイルを読み込む $ source ~/.bash_aliases
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

低スペックノートPCに Xubuntu21.04 を minimal install して fish を入れたお話 ~1~

初めに 本記事は、実家で捨てられそうになっていたWindowsノートPCを助けて、Xubuntu21.04を導入し、bashをfishに切り替えるお話です。 友人Hに「古いノートPCにLinux入れたいんだけど良いの無い?」と雑な質問を投げたところ、10個くらい案を出されまして... その中でもとっつきやすく軽いUbuntu系のXubuntuを導入することにしました。 それに加えて、shellをbashからfishに変えるといいと非常に強く勧められたのでfishも入れます。 行ったことを細かく書いていくので、これからLInux系統のOSに触ってみたい、導入したいという人の参考になればと思います。 大きく分けて「Xubuntu編」と「fish編」の2つに分けて記事を書いてあります。 この記事で使用した画像たちは、主に Virtual box で Xubuntu のインストールを再現してキャプチャしたものです。 Xubuntuとは Xubuntuは「ズブンツ」や「ズブントゥ」などと読むそうです。 以下にはXbuntuの最低限知っておくべきポイントをかいつまんで記載しておきます。 (しっかりと説明できるほど知識がないため、ほかのサイトや記事へのリンクをのせています) XubuntuはDebian系のLinuxディストリビューションの1つ Ubuntuから派生した 現在(2021年5月5日)の最新版は2021年4月にリリースされたXubuntu21.04 Ubuntuから派生しているので、コマンドなどはUbuntuと同じものになります。 (困りごとがあったときに検索がしやすいですね) Xubuntu編 Xubuntuを起動できるようにするまでに何を行ったかをあらかじめ載せておきます。 PCのスペック確認 Xubuntuのシステム要件の確認 Xubuntuのisoイメージファイルのダウンロード USBにisoイメージを書き込む ノートPCのBIOS設定の変更 Xubuntuのインストールと起動 必要最低限のカスタマイズ 1.ノートPCのスペック 救助したノートPCのスペックは以下の通りです。 maker : NEC OS : Windows10 64bit CPU : Intel Core i3 RAM : 4GB Disk : 500GB 動きがもっさりとしていてまともに動かなかったと聞いています。 2.Xubuntuのシステム要件 CPU:PAEをサポート RAM:512 MB (1GB推奨) ハードドライブスペース:7.5 GB(20GB推奨) PEAとは物理アドレス拡張(Physical Address Extension:PAE)のことで、インテルのIA-32アーキテクチャで4GB以上のメモリを扱う技術のことです。 これらの情報はこちらのサイトから引用しました。 今回新規でインストールするOSをXubuntuにしようと思ったのは、RAMの要件が低いところですね。 救助したノートPCのRAMが4GBしかなかったものですから、とても助かります! 3.Xubuntu21.04のisoイメージのダウンロード こちらのサイトからダウンロードします。 一番上に見えているのが Xubuntu20.04 の LTS版(LTS:Long time support)です。(2021年5月現在) 今回はその下の「Latest stable release: 21.04, Hirsute Hippo」をダウンロードします。(2021年5月現在) ミラーサイトからダウンロードしますので「Japan」を選択します。 「xubuntu-21.04-desktop-amd64.iso」をダウンロードします。約2GBほどあるので少しの待ち時間です。 ダウンロードできたら、USBやCD等に書き込んでいきます。 4.USBへisoイメージを書き込む 4GB程度のUSB(先ほどダウンロードしただいるが入るサイズ)を用意して、そこにダウンロードしたファイルを書き込みます。 USBの中にデータが残っている場合は、別の場所にデータを移しておきましょう。 書き込みにはこちらのサイトのbalenaEtcherを使用しました。(上記リンクのサイトからインストーラーがダウンロードできます) 左から「書き込むファイルの選択」「書き込み先の選択」と行います。 (記事を書いているときに気づきましたが、Flash from URL だとisoファイルのダウンロードリンクから直接書き込んだりできたんですかね?) 5.ノートPCのBIOS設定を変更する BIOS設定の変更からXubuntuのインストールまでは一気に行います。 isoイメージの書きこんだUSBをノートPCに差し込んでおきましょう。 BIOSについて知りたければこちらのサイトなどを参考にすると良いかと思います。 PCのメーカなどによってBIOS設定メニューの開き方が異なってたりするそうで、この辺りは各自調べてみてください。 NECの場合こちらのサイトで開き方を確認できます。(本記事ではこのサイトの画像で説明させてもらいます) PC起動時にNECのロゴが出たらF2キーを押す メニューバーからBootに入る 左右の矢印キーで選択できました USBの起動順を最上位にする 上下の矢印キーで変更したいデバイスを選択し、+キーで起動順を上にできます。(NECの場合) 変更を更新する Exit にある Save Changes and Reset で変更内容を保存し再起動できます。 先のBIOS設定によりUSBの読み込みが最初に行われるので、既存のOSは起動せずにXubuntuのインストール画面になります。 6.Xubuntuのインストールと起動 Xubuntuを選択 tryかinstallか 今回はノートPCにXubuntuを取り込むので install Xubuntu を選択します。 言語はEnglishのまま進めました。(日本語もあるよ!) キーボードレイアウトの指定 日本語配列のノートPCでしたが、US配列で設定します。(日本語配列は使いにくいので...) インストール時の状態、アップデートとその他ソフトウェア 「通常のインストール」にするのか「最小限のインストール」にするかの選択と、 「インストール中にアップデートをダウンロードするか」と「サードパーティー製のソフトウェアをインストールするか」のチェックボックスが出ます。 最軽量を目指しますので minimal install を選択し、アップデートのみチェックし次へ。 通常はNormal install をお勧めします。ツールにこだわりがない場合はサードパーティのほうのチェックボックスもオンにしましょう。 インストールタイプの選択 今回はwindowsOSとは完全におさらばして、Xubuntu専用にするので、「ディスクを削除してXubuntuをインストールする」を選択します。 ディスクの中身が全部消えるので気を付けてください。 「Something else (それ以外)」だと既存OSを残したままXubuntuをインストールできたりするらしいです。(デュアルブート?というらしいです) 「ディスクに対する書き込みを保存しますか」という警告出るので「インストールする」を押します。 この辺でWiFiの設定が入ります VirtualBoxでは表示されなかったのでキャプチャできませんでした。 ノートPCだと表示されるんですかね? タイムゾーンの指定 地図内で日本を選択し、下のテキストボックスをTokyoにします。 ユーザー設定 ユーザー名、PC名、パスワードを決めます。 次へを押すとXubuntuのインストールが開始されます。 インストール インストールに時間がかかる場合はコーヒーでも入れてまったりしましょう! インストールが完了すると再起動してくださいと表示されるので「今すぐ再起動するを」を選択します。 Xubuntuの起動 enterキーを押してisoイメージの入ったUSBを抜き取ります。 インストールが正しく完了されているとパスワードの入力画面まで行けます。 VirtualBoxでやってるたまに失敗するんですよね。 無事にデスクトップに入れました! 私のLinuxライフの始まりです! 7.必要最低限の範囲でやったこと pdate & upgrade updateとupgradeは必須だと聞きましたので、ターミナルで次のコマンドを入力。 $ sudo apt update $ sudo apt upgrade update, upgrade についてはこのサイトが参考になるかと。 vimのインストール その後に馴染みのあるvimコマンドが実行できるか確認すると... vimが入ってなかったので入れます。 ターミナル開いて次のコマンドを入れます。 $ sudo apt install -y vim すんなりと入りました。 日本語入力の対応 FireFoxを開いていざ日本語入力...できませんでした。 調べた結果「fcitx-mozc」というのをインストールすればよいらしいです。 $ sudo apt install -y fcitx-mozc いったん再起動します。 $ sudo reboot 左側にmozcのアイコンが増えました mozcが動作するようにと、日本語入力に切り替えるショートカットキーを割り当てるために、mozcのconfigurを開きます。 英語入力しかないので、「+」からmozcを追加。 「上位言語だけの表示」のチェックボックスを外してmozcを入力。Mozcが選択できていればOK。 こんな風になるはずです。 Global Config に移りまして、ショートカットキーを変更します。(初期がShift+Spaceなんですね...) 私はSpace横の「変換」に割り当てました。(使い勝手が悪かったら変更します) FireFoxを開いて確認です。 割り当てたキーを押してアイコンが変化し、実際に日本語が入力できました! ターミナルの背景透過 Windowsでもやってたのですが、ターミナルの背景を透過させます。 意外と便利で助かるのです。 ターミナルのエディットからプリファレンスを選択。 アピアランスの background から transparent background を選択。 Opacityのバーをお好みの数値に変更。(私は0.7に設定) 見事背景が透けました。 最後に 以上で「Xubuntu編」が終了になります。長いようで短い旅でした。 他にもキー配置の変更やショートカット割当などやりたいことはあるので、この記事に追加するか別の記事に書きたいと思います。 特にエラーも起きず順調に進んでしまったので、拍子抜けです。(時間をかけなくて済むので助かりますが...) 次は「fish編」でお会いしましょう。 Linux系統の知識がとても浅いので、間違いや知識を共有していただけると、とてもありがたいです。 参考 Xubuntuのインストール1:Xubuntu 20.04 LTS…インストールから日本語入力まで! Xubuntuのインストール2:How to install Xubuntu 20.04 LTS fcitx-mozc1:Mozc And Fcitx For Japanese Writings On Debian 10 "Buster" fcitx-mozc2:Debian系の日本語入力をFcitx & Mozcにする
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxで/tmp以下のスクリプトを実行できない場合

/etc/fstabを見るとnoexecオプションでmountされている findmntコマンドで確認できる
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OCS Inventory-NG 2.9インストール時のエラーまとめ

本記事について OCSInventory-NG 2.9をインストールした際に発生したエラーとその対処方法をまとめておきます。 OCSInventoryインストール時に発生したエラー Perlモジュールのチェックでエラーが出た。 エラーが出るとインストールを続けるか聞かれたので、一旦インストールを終了して、足りなかったモジュールApache::DBIの追加インストールを実施した。 ※公式ドキュメントの通りにパッケージを入れたはずだが足りなかった。 ■エラーメッセージ抜粋 +----------------------------------------------------------+ | Checking for required Perl Modules... | +----------------------------------------------------------+ Checking for DBI PERL module... Found that PERL module DBI is available. Checking for Apache::DBI PERL module... *** ERROR: PERL module Apache::DBI is not installed ! Checking for DBD::mysql PERL module... Found that PERL module DBD::mysql is available. Checking for Compress::Zlib PERL module... Found that PERL module Compress::Zlib is available. Checking for XML::Simple PERL module... Found that PERL module XML::Simple is available. Checking for Net::IP PERL module... Found that PERL module Net::IP is available. Checking for Archive::Zip Perl module... Found that PERL module Archive::Zip is available. *** ERROR: There is one or more required PERL modules missing on your computer ! Please, install missing PERL modules first. OCS setup.sh can install perl module from packages for you The script will use the native package from your operating system like apt or rpm Do you wish to continue (y/[n])? ■追加インストールコマンド yum install perl-Apache-DBI PHP7.2でOCSInventoryを動作させた際のエラー PHP7.2で動作させようとしたら、500エラーとなった。 /var/log\httpd/error.logを確認したところ以下のエラーが出ていることを確認。 どうやらPHP7.2ではmysqli_real_escape_string()という関数が破棄されていて動作できないから出たエラーということ。 PHP Fatal error: Uncaught Error: Call to undefined function mysqli_real_escape_string() in /usr/share/ocsinventory-reports/ocsreports/require/function_commun.php:67 Stack trace: #0 /usr/share/ocsinventory-reports/ocsreports/require/function_commun.php(85): generate_secure_sql('select NAME,IVA...', Array) #1 /usr/share/ocsinventory-reports/ocsreports/require/function_commun.php(37): mysql2_query_secure('select NAME,IVA...', NULL, Array) #2 /usr/share/ocsinventory-reports/ocsreports/require/function_commun.php(346): look_config_default_values('CUSTOM_THEME') #3 /usr/share/ocsinventory-reports/ocsreports/install.php(30): html_header(true) #4 /usr/share/ocsinventory-reports/ocsreports/require/header.php(84): require('/usr/share/ocsi...') #5 /usr/share/ocsinventory-reports/ocsreports/index.php(44): require('/usr/share/ocsi...') #6 {main} thrown in /usr/share/ocsinventory-reports/ocsreports/require/function_commun.php on line 67 PHP7.2での動作は諦めアンインストールし、PHP5.6をインストールして動作することを確認。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む