2016-04-13 107 views
1

AndroidのndkからUSBウェブカメラにアクセスしようとしています。ndkとV4L経由でAndroidのUSB Webカメラをプレビュー

AndroidシステムにはV4Lカーネルモジュールが搭載されているので、V4Lライブラリを使用することをお勧めします。彼らはndkにバンドルされているので、私のプロジェクトにそれらを含めるのは大したことではありませんでした。

は私の問題は以下の通りです:

私はは/ dev/VIDEO 4を開き、そのファイルディスクリプタへのioctlを送信する必要がありますが、私はアクセスは/ dev/VIDEO 4への権利を持っていません。私は3つのことを考えました:

1)なぜ私は/ dev/video4にアクセス許可がありませんか?私のアプリはandroid.permission.CAMERA権限を使用しているので、アプリを実行するユーザーはカメラグループに属し、カメラグループは/ dev/video4に対してr + w権限を持ちます。なぜそれを開くことができませんか?

2)UsbManagerクラスで可能なファイル記述子をJava側から取得しようとしましたが、ファイル記述子のポイントは/ dev/bus/usb/001/004です。 Java側から/ dev/video4のアクセス権を要求する方法はありますか?あるいは、ユーザー空間のV4Lライブラリをインクルードして、汎用のUSBデバイスへのポインタを/ dev/bus/usb/001/004に渡すことはできますか?

3)OpenCVのアンドロイド版にはV4Lが付属していますか?/dev/video4にアクセスすることなくカメラをプレビューするのに使用できますか?

これまで誰かがこのようなことを試みましたか?

また、libusbとlibuvcを使用してカメラに接続するライブラリ(https://github.com/saki4510t/UVCCameraなど)がありますが、このライブラリは非常に不自然であり、満足のいく結果を提供していません。

答えて

0

私はあなたと同じ結論に達したので、私はここに到着しました。私は提供する提案はありません。あなたは何年もの間何かを見つけましたか?

私が追加できるすべては以下の通りです:は/ dev /動画Xファイル記述子へ

  • のアクセスがさらにSELinuxのによって制限されています。
  • android.permission.CAMERAはあなたがそう思わないと思います。これらのすべての権限/機能設定は、マニフェストではアプリケーションフレームワークサービスへのアクセスを可能にし、Linuxグループ権限やSELinuxとは何も関係ありません。
  • Camera2フレームワークは、フロントカメラとリアカメラだけを列挙しているため、少なくともUSBカメラでは使用できません。
  • AndroidにはV4L2ドライバがありますが、 'uvcvideo'ドライバはデフォルトではありません。カスタムカーネルをビルドする必要があります。
  • あなたが指摘したUVCCameraプロジェクトでは、UsbManager(ユーザー空間のuvcパーサー付き)を使用しています。それがパーミッションの問題を克服する方法です。これは唯一の方法だと思われますが、この実装は脆弱で、バルクモードで問題があるようです。

V4L2 + uvcvideoドライバを使用することはできません。

+0

hi。 afacのアンドロイドのアクセス許可は特定のlinux-groupにアプリケーションのユーザーを追加し、このグループのアクセス権を継承しますが、正しいグループを追加するカスタムカーネルでさえ/ devを開く権限を与えないというレポートを読んでいます/ videoX。 uvcvideoドライバはSamsung Galaxy S5に搭載されているようですが、/ dev/videoXへのアクセスがroot権限で実現されていればかなりうまくいきます(https://code.google.com/p/android/issues/detail ?id = 159529)。これは今私がやっていることです。 – BT9

1

許可カメラを持っていても、実際にあなたが特定のLinuxユーザグループにいることを意味するわけではありません。 Android OSの権限チェックの許可を受けていることを意味します。

一般に、アプリケーションはカーネルドライバインターフェイスに直接アクセスできません。ドライバは悪意のあるアプリケーションに対して固執しないことが多いため、大きなセキュリティ上の問題です。

根源的でないデバイスで動作できる唯一の解決策は、UVCCカメラプロジェクトやそれ以外のAndroidパブリックUSB APIの上にUVCインターフェイス全体を構築するプロジェクトです。

さらに、一部のAndroid搭載端末は、標準のカメラAPIを使用して実際にウェブカメラをサポートしていますが、これはまだベースラインAndroidの機能ではありません。

+0

こんにちは私は同じ問題を抱えています。私はUVCライブラリを使用していますが、クライアントにapkを送信してカメラが何も表示していない場合は、デバイスで正常に動作しています。 –

関連する問題