Libthumbnailerシステムライブラリを使用して、C++コードでビデオからサムネイルを取得するU-Touch用のアプリケーションを開発しています。アプリは私のコンピューターで完全にサムネイルを作成しますが、デバイスでその部分を実行しようとすると、
(vs-thumb:5759): GLib-ERROR **: /build/buildd/glib2.0-2.41.5/./glib/gmem.c:353: overflow allocating 4294967274*8 bytes
'std :: runtime_error'のインスタンスをスローした後に呼び出された終了what():ビデオスクリーンショットを抽出しようとしたときに不明なエラーが発生しました。戻り値は133でした。
Adb Shellを使用して入力し、手動で実行しようとすると、次のようになります。
/usr/lib/arm-linux-/gnueabihf/thumbnailer/vs-thumb video.mp4 thumb.jpg
エラーが発生します:
Error creating thumbnail: Failed to preroll.
しかし、suと同じコンソール操作を実行すると機能します。だから私はアプリケーションのアクセス許可について何かがあると思います。このサムネイルをルートとして実行する権限を持つために、apparmor(または私が必要とする他のもの)をどのように構成する必要があるかを誰かが知っていますか?
前もって感謝します
unconfinedテンプレートを使用してアプリケーションを実行してみることができます。
アプリケーションマニフェストファイルには、次の行が含まれている必要があります。
"hooks": {
"myapp": {
"apparmor": "myapp.json",
"desktop": "myapp.desktop"
}
},
次に、myapp.json
apparmorプロファイル、次のスニペットを使用します。
{
"policy_groups": [],
"policy_version": 1.2,
"template": "unconfined"
}
参照: アプリケーションの制限
私はついに、制限のないテンプレートを使用するよりも良い解決策を見つけました。予想よりも簡単でした...含める必要があるだけです "ビデオ" ポリシーグループの一部として:
"policy_groups": [
...
"networking",
"video",
...
]
さらに、ビデオファイルにアクセスする必要がある場合は、「video_files_read」(ビデオファイルの読み取りのみ)または「video_files」(完全なアクセス)を追加することもできます。
Ubuntu SdkでアプリをQtCreatorに開発し、[公開]タブに移動して、app.apparmorファイルをダブルクリックすると、使用可能なすべてのポリシーグループを確認できます。クリックするとすべてのポリシーを表示する+記号が表示されます。詳細については、 http://developer.ubuntu.com/publish/apps/packaging-click-apps/ をご覧ください。