sgunji’s blog

ものづくりやプログラミングなど…最近はXamarinを少々

Live555 と MediaRecoderで AndroidからRTSPでライブ配信~困った~

Live555 の公式サイトから最新ソースをダウンロード

http://www.live555.com/www.live555.com

わかりにくいが
http://www.live555.com/mediaServer/#downloading
にいけばある。

github眺めていると,Android.mkでやっているのがほとんどみたいなので拝借したが、
全然コンパイルできない。

エラーが出ているのはGroupsockHelper.cppの以下の部分

#ifdef __ANDROID__
imr.imr_multiaddr = groupAddress;
imr.imr_sourceaddr = sourceFilterAddr;
imr.imr_interface = ReceivingInterfaceAddr;
#else
imr.imr_multiaddr.s_addr = groupAddress;
imr.imr_sourceaddr.s_addr = sourceFilterAddr;
imr.imr_interface.s_addr = ReceivingInterfaceAddr;
#endif

なぜかAndroidだけとそれ以外でわけられているが
関連するヘッダーを見ても理由がわからない。
#ifdefを外すとコンパイルは通るのだが正しく動かず
IPアドレスが取れない模様。

わけわからん。

自分には限界・・・。

参考にしたのは
github.com


※2018/8/9
NDKをr16にしたらうまくいきました。

Visual Studio Marketplace(備忘録)

自分用

Microsoft ASP.NET and Web Tools
marketplace.visualstudio.com

CodeBlockEndTag
marketplace.visualstudio.com

Toggle Comment
marketplace.visualstudio.com

ILSpy
marketplace.visualstudio.com

Time Stamp Margin
marketplace.visualstudio.com

Editor Guidelines
marketplace.visualstudio.com

Match Margin
marketplace.visualstudio.com

Ctrl+Click Go To Definition
marketplace.visualstudio.com

Copy As Html
marketplace.visualstudio.com

CodeMaid
marketplace.visualstudio.com

VS Live Share - Preview
marketplace.visualstudio.com

VS Express
visualstudio.microsoft.com

Express 2017 fow Windows Desktop
http://aka.ms/vs/15/release/vs_WDExpress.exe

zoneminder

ubuntuでzonemiderを使って見ようと思って色々いじっていましたが、言語設定で日本語にしても文字化けするのでブラウザのエンコードを都度いじっていたのですがヘッダーに問題があることを発見。

すぐgithubでpull requestしました。

10分以内にmergeされました。

レスポンス良すぎ!!

github.com

Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。その2

前回以下の記事のとおり、
sgunji.hatenablog.jp

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

で止まってしまっていたのですが、
色々周りに聞きながら試行錯誤(ほとんど自分は何もしていない)していたら、

googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model

ではなく、

googlesamples-assistant-hotword --device_model_id my-model

とすることで無事認識してくれました。

このままだとhotwordは日本語に対応していないので、
Googleアシスタントから直接設定してやる必要があります。

Googleアシスタントを開き設定を押します。
f:id:sgunji:20180110221713p:plain

バイス作成時に付けた名前のデバイスを選択します。
f:id:sgunji:20180110221754p:plain

アシスタントの言語を選択し、日本語にします。
f:id:sgunji:20180110221849p:plain

住所とかも登録しておくと、天気とかを現在地で調べてくれます!

動いて良かった!

Excelのシート保護やブック保護のパスワードを忘れた場合の対処方法

シート保護やブック保護したあとにパスワードを忘れてしまったことはありませんか。

Office 2007以降ですが,パスワードを無理矢理解除する方法があります。

Office 2007以降でExcelやWordではOffice Open XMLというものが採用されています。

詳しくは以下から
Office Open XML - Wikipedia

拡張子が.xlsxという最後にxやmがついたものはこの形式ファイルになります。
もともとがzipファイルなので,拡張子をzipに変更すればある程度見れるようになります。

まず,拡張子を変更します。
f:id:sgunji:20180110123249p:plain

f:id:sgunji:20180110123252p:plain

後ろに.zipを付けます。
f:id:sgunji:20180110123254p:plain

当方の環境はWindows 7ですので,
このままダブルクリックしてzipファイルの中を覗きます。

f:id:sgunji:20180110123832p:plain

f:id:sgunji:20180110123841p:plain

f:id:sgunji:20180110123850p:plain

シートの保護を解除したいシート名.xmlを右クリックしてコピーして
f:id:sgunji:20180110123858p:plain

適当な別のフォルダに貼り付けします。


そのファイルをメモ帳か何かで開いて

<sheetProtection ・・・・・/>

の部分を削除します。

f:id:sgunji:20180110124204p:plain

↓削除
f:id:sgunji:20180110124303p:plain

このxmlを上書きしてエディタを閉じます。

あとは逆手順で,出来上がったxmlファイルをコピーして
貼り付けします。(上書きするかどうかの警告メッセージが出ますが無視してOK)
f:id:sgunji:20180110123850p:plain

あとは,後ろの.zipを消して
f:id:sgunji:20180110123254p:plain

元に戻すだけ。
f:id:sgunji:20180110123252p:plain

ブック保護を解除する場合は,
f:id:sgunji:20180110124655p:plain
のworkbook.xmlをどこか適当なとこにコピーして
エディタで開き,

<workbookProtection ・・・・・/>

を消せばOKです。

ただ,上記方法は間違うとファイルが開けなくなる恐れがありますので,自己責任でお願いしたいのと,言うまでもありませんがバックアップは必ず取りましょう!

Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。

12月20日 Google Assistant SDKのブログで日本語に対応したと情報があったことから試してみることに。

developers.googleblog.com

基本的には以下の通り。
Set Up Hardware and Network Access  |  Google Assistant SDK  |  Google Developers


自分は以下から落としてきたRASPBIANを使っています。
www.raspberrypi.org

imgファイルをSDに書き込むには
https://sourceforge.net/projects/win32diskimager/sourceforge.net
を使ってます。

f:id:sgunji:20171228154832p:plain
こんなかんじで、Writeを選択してもらえれば、警告文がでますので、YESを選択します。

イメージをSDに書き込んでいる間にGoogle側の設定を行います。
cloud.google.com

右上のログインを選択します。
f:id:sgunji:20171228155537p:plain
ログインをしたら、その隣のコンソールを選択します。

上の検索窓にassistantと入力すれば、Google Assistant APIでてきます。
f:id:sgunji:20171228155928p:plain

順番に進みます。
f:id:sgunji:20171228161635p:plain

プロジェクト未作成のまま有効と押すと、プロジェクトを作るよう促されます。
f:id:sgunji:20171228161703p:plain

適当にプロジェクト名をつけて作成します。
f:id:sgunji:20171228161649p:plain

次に認証情報を作成します。
f:id:sgunji:20171228161718p:plain

OAuthという仕組みでGoogleのサービスにログインするので、同意画面を作成しておきます。
f:id:sgunji:20171228161734p:plain

認証情報を作成します。OAuthクライアントIDを選択します。
f:id:sgunji:20171228161750p:plain

その他を選択して、適当に名前をつけます。
f:id:sgunji:20171228161809p:plain

下矢印を選択してjsonファイルをダウンロードしておいてください。
f:id:sgunji:20171228162122p:plain

ここまでくるとたぶんSDへの書き込みを終わっているので、ラズパイにさしてラズパイ側を起動します。

日本語入力する場合は、

sudo apt-get install ibus-anthy

または、

sudo apt-get install ibus-mozc

vncを使う方は、
(最近のPi3はRealVNCが最初から入っていたような)

sudo apt-get install tightvncserver

Google Assistant のために Python3をいれます。
SDカードへのイメージ書き込み時にもとのイメージがfullだったらいりません。

sudo apt-get install python3-dev
python -m pip install --upgrade pip setuptools

マイク情報を取得するには、

arecord -l

スピーカー情報を取得するには

aplay -l

設定ファイルを作ります。
[.asoundrc]でディレクトリは/home/pi/に保存します。

pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}

あんまりいないかもしれませんが、
ラズパイに直接HDMIをつないでいる場合は、
別で用意したスピーカーから出力できるよう設定する必要があります。

sudo raspi-config

Advanced options から Audio を選択して3.5mm ジャックの方を選べればOKだと思います。
ご自身の環境に合わせて設定してください。

Googleのガイドに従ってPython3 が動く仮想環境を構築します。

sudo apt-get update
sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools
source env/bin/activate

パッケージをインストールします。

python -m pip install --upgrade google-assistant-library
python -m pip install --upgrade google-assistant-sdk[samples]

資格証明書を作成します。
まず作成するためのライブラリを落としてきます。

python -m pip install --upgrade google-auth-oauthlib[tool]

下記のように/path/to/に自分の環境にあったように入力し、ダウンロードしたjsonファイルのファイル名を合わせます。
ちょうど下記のような[client_id]のところに自分が落としてきた部分を書き換えます。

google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /path/to/client_secret_client-id.json

画像を忘れましたが、

Please visit this URL to authorize this application: 

以降にかかれたURIにアクセスするようにします。

Googleに自分のアカウントでログインして、
4/で始まるコードが表示されるのでそれをコピーして
ターミナルが

Enter the authorization code:

と出ているので、この後ろに貼り付けします。
すると、

credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json

と表示され、資格証明書が作成できました。

あとは、[my-model]の部分を自分の好きな名前に変えて
GoogleはプロジェクトIDを頭に加えることを推奨しているよう?)

googlesamples-assistant-devicetool register-model --manufacturer "Assistant SDK developer" --product-name "Assistant SDK light" --type LIGHT --model my-model

[my-dev-project]を自分のプロジェクト名に書き換えて、
[my-model]を上で決めたモデル名に書き換えるだけで

googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model

できるはずなのですが、

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

と出てしまいました。
パーミッションに問題があるようなので、
一応、アクティビティコントロールを見て確認しましたが、
https://myaccount.google.com/activitycontrols

ウェブとアプリのアクティビティ
端末情報
音声アクティビティ

すべてアクティブにしているのですが、
このエラー・・・。

誰か教えてください・・・。



解決しました!
sgunji.hatenablog.jp

IDE0006エラー

Xamarinを使っていてエラーが出たので備忘録として・・・

〇重大度レベル
警告
〇コード
IDE0006
〇説明
プロジェクトの読み込み中にエラーが発生しました。失敗したプロジェクトとそれに依存するプロジェクトの完全なソリューション解析など、一部のプロジェクト機能が使用できなくなりました。
〇プロジェクト***** ファイル
〇行1
〇抑制状態
アクティブ
〇詳細の説明
この問題の原因を確認するには、次をお試しください。

1. Visual Studio を閉じる
2. Visual Studio 開発者コマンド プロンプトを開く
3. 環境変数 "TraceDesignTime" を true に設定する (set TraceDesignTime=true)
4. .vs directory/.suo ファイルを削除する
5. 環境変数 (devenv) を設定したコマンド プロンプトから VS を再起動する
6. ソリューションを開く
7. 'C:\Users\******\AppData\Local\Temp\\******_*.designtime.log' を確認し、失敗したタスク (FAILED) を探す