Armadilloフォーラム

Armadillo-840,QtMulutimediaを利用したい

yzk_armadillo-240

2014年2月10日 10時48分

コメント

yzk_armadillo-240

2014年2月10日 10時53分

題名を入力したところでEnterボタンを余計に押してしまったらしく、
投稿されてしまいましたので、返信で本文を記入させていただきます。
すみません。

橋本と申します。
1/31にメーリングリストで、Armadillo-840、ATDE5 への QtMultimedia の導入に
ついて質問させていただきました。
溝渕様より、早々にご回答いただき試みてみましたが、ビルド前の依存パッケージ
で qtbase5-dev が不足となり、ビルドすることができません。
再度、ご教示の程、宜しくお願い致します。

> ○ 依存パッケージの調査
> 以下のコマンドを実行し、QtMultimediaのビルドに必要なパッケージが未インスト
> ールの場合は、aptでインストールします。
> [a840 ~/qtmultimedia-opensource-src_5.0.2]# dpkg-checkbuilddeps

dpkg-checkbuilddeps を実行すると、不足が確認されましたので、不足分のパッケージ
を apt-get install でインストールを試みました。
qtbase5-dev 以外は正常にインストールできましたが、 qtbase5-dev については、
すでに最新バージョンとの応答がありました。
 qtbase5-dev はすでに最新バージョンです。
 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

aptitude search qtbase5-dev で確認するとインストール済みとなっていました。
 i qtbase5-dev - Qt 5 base development files

また、 aptitude show qtbase5-dev で詳細を確認すると
 バージョン: 5.0.2+dfsg1-4
と 5.0.2 の dfsg1-4 がインストールされていることになっています。

再度 dpkg-checkbuilddeps による確認や debuild -us -uc でビルドを試みると、
 qtbase5-dev (>= 5.0.2+dfsg1-6~)
が不足していると言われ、ビルドに失敗してしまいます。

以上、宜しくお願い申し上げます。

> ------------------------------
>
> 溝渕です。
>
> > そこで、QtMultimedia が導入された ATDE5 およびユーザーランドを
> > 提供していただくことはできないでしょうか?
> 申し訳ございませんが、QtMultimediaを導入した環境を構築しておらず、即時
> 対応は困難です。
>
> > また、提供が難しいのであれば、他の方法をご教示いただけませんでしょうか?
> ATDE5に含まれているものと同一バージョンの、v5.0.2 のソースを取得してビ
> ルドする方法があります。以下では、Armadillo-840上でネイティブビルドする
> 方法について説明します。
> # こちらで試していないので、もしかすると手順に誤りがあるかもしれません
> # がご了承ください
>
> QtMultimediaのソースなどは、RAMに収まらないためSDカードやUSBメモリなど
> のストレージが必要になります。
>
> ○ ビルド環境の構築
> 以下のマニュアルを参照し、Armadillo-840でdebianを起動します。
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
>
> その後、aptを使用してビルド環境をインストールします。
> - make
> - gcc
> - devscripts
> - dpkg-dev
> # 多分上記パッケージで良いと思いますが、不足があれば追加でインストールしてください
>
> ○ ソースの取得
>
> オリジナルソースについては、以下より取得可能です。
> http://archive.ubuntu.com/ubuntu/pool/universe/q/qtmultimedia-opensourc…-

src_5.0.2.orig.tar.xz
> # debian unstableの v5.0.2 が削除されていたため、ubuntuのURLとなっています。
>
> "debian/"については、以下よりsnapshotが取得可能です。
> http://anonscm.debian.org/gitweb/?p=pkg-kde/qt/qtmultimedia.git;a=commi…
>
> ○ ソースの準備
> オリジナルソースを展開し、展開したディレクトリ直下に"debian/"を配置します。
>
> ○ 依存パッケージの調査
> 以下のコマンドを実行し、QtMultimediaのビルドに必要なパッケージが未インスト
> ールの場合は、aptでインストールします。
> [a840 ~/qtmultimedia-opensource-src_5.0.2]# dpkg-checkbuilddeps
>
> ○ ビルド
> 以下のコマンドでdebian packageがビルドされます。
> [a840 ~/qtmultimedia-opensource-src_5.0.2]# debuild -us -uc
> # こちらで試していないのですが、もしかするとビルドエラーが発生するかもしれません
>
> 以上、お試しください。
>
>
> > ------------------------------
> >
> > 橋本と申します。
> >
> > Windows 環境の Qt5 および Qt Creator で開発した Qt アプリケーションを
> > Armadillo-840 に移植しようとしております。
> >
> > Windows で開発した Qt プログラムでは、QtMultimedia に含まれる
> > QSound クラスを利用し、wav ファイルを再生しています。
> > その Qt プログラムを ATDE5 上の Qt Creator でビルドすると、
> > "Unknown module(s) in QT: multimedia" というエラーが発生します。
> >
> > ATDE5 および Armadillo-840 に、サブモジュールの QtMultimedia が
> > インストールされていないためと思われます。
> > そこで、QtMultimedia が導入された ATDE5 およびユーザーランドを
> > 提供していただくことはできないでしょうか?
> >
> > また、提供が難しいのであれば、他の方法をご教示いただけませんでしょうか?
> >
> > 自分達で QtMultimedia を導入することも検討しております。
> > QtMultimedia のソースコードを ATDE5 上でビルドおよびクロスコンパイル
> > するだけで導入できれば良いのですが。
> > 依存する他のライブラリのクロスコンパイルが必要であったり、依存関係を解消
> > するために導入するパッケージで Armadillo-840 の実行環境を壊すようなこと
> > が起きないか懸念しております。
> >
> > 以上、宜しくお願い申し上げます。

> また、 aptitude show qtbase5-dev で詳細を確認すると
>  バージョン: 5.0.2+dfsg1-4
> と 5.0.2 の dfsg1-4 がインストールされていることになっています。
>
> 再度 dpkg-checkbuilddeps による確認や debuild -us -uc でビルドを試みると、
>  qtbase5-dev (>= 5.0.2+dfsg1-6~)
> が不足していると言われ、ビルドに失敗してしまいます。

-4ではなく、-6 を取得しようとしていますね。-6 を必要としていのは、どの
パッケージか分りますか?

QtMultimediaの環境作成とは話がずれるのですが、2つ質問させてください。も
し QtSound を使わなくても簡単に再生する方法があれば、代替案になるかと思
いまして。

1) ATDEで QtSound を使っているときは、Pulse audio 経由で音を出していた
と思うのですが、Armadillo でも Pulse audio をお使いになる予定でしょ
うか?

2) 音の再生を止めたりすることは、ありますか?

yzk_armadillo-240

2014年2月17日 15時27分

お世話になっております。 橋本です。
返信ありがとうございました。

> > -4ではなく、-6 を取得しようとしていますね。-6
> > を必要としていのは、どのパッケージか分りますか?

QtMultimedia です。
ダウンロードした qtmultimedia-opensource-src_5.0.2 の
アーカイブを展開し、展開したディレクトリに移動した後、
dpkg-checkbuilddeps した結果、
qtbase5-dev (>= 5.0.2+dfsg1-6~)
が表示されました。

> > もし QtSound を使わなくても簡単に再生する方法があれば、
> > 代替案になるかと思いまして。

ありがとうございます。

> > > 1) ATDEで QtSound を使っているときは、Pulse audio
> > > 経由で音を出していたと思うのですが、Armadillo で
> > > も Pulse audio をお使いになる予定でしょうか?

現状私の方では、ATDE 上でも QSound は利用できていません。
Qt5 では、QtMultimedia の中のひとつのクラスに QSound が
あります。そこで QtMultimedia の導入を試みておりました。
何か根本的に間違っておりますでしょうか?

> > 2) 音の再生を止めたりすることは、ありますか?

頻繁にあります。

以上、宜しくお願い申し上げます。

Qt Multimediaのクロスビルド用パッケージと
Armadillo用のパッケージを作ってみました。
QSoundでwav形式のファイルを再生できる事を
確認しています。
http://download.atmark-techno.com/misc/forum/qt5multimedia_20140227.tar…
md5sum: eb69a255198eae058dd9e8e0a52e6287

アーカイブ(qt5multimedia_20140227.tar.gz)には、
QSoundがalsaを使うようにビルトしたQt Multimediaのパッケージと、
動作確認用にQSoundを使ったサンプルコードが入っています。

- qt5multimedia-armhf: armadillo用qt5multimediaパッケージ
- deps-armhf-cross : ATDE用クロスパッケージに依存されるパッケージ
- qt5multimedia-amd64: ATDE用qt5multimediaパッケージ
- qt5multimedia-armhf-cross:ATDE用qt5multimediaクロス開発パッケージ
- sample_app: QSound動作確認用サンプルコード
=======
Armadillo-840にはqt5multimedia-armhfディレクトリを
コピーして、ディレクトリ内のパッケージを
全てインストールしてください。

[armadillo ~]# cd qt5multimedia-armhf
[armadillo qt5multimedia-armhf]# dpkg -i *.deb

次のディレクトリ内のファイルは、
ATDE5にインストールしてください。
(依存関係を満すために、最初にdeps-armhf-cross内の
パッケージをインストールしてください。)

- deps-armhf-cross
- qt5multimedia-amd64
- qt5multimedia-armhf-cross

ATDE5にクロスパッケージが正常にインストールできていれば
ATDE5でsample_appをビルドすることができます。
sample_appディレクトリ内のbuild.shを実行すると、
クロスビルド用のMakefileの生成と、makeまで行います。

[ATDE ]$ cd sample_app
[ATDE ]$ ls
build.sh  sample.wav  test.cpp
 
[ATDE ]$ ./build.sh
arm-linux-gnueabihf-g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt5/mkspecs/linux-arm-gnu\
eabihf-g++ -I. -I. -I/usr/arm-linux-gnueabihf/include/qt5 -I/usr/arm-linux-gnueabihf/include/qt5/QtMultimedia -I/usr/arm-linux-gnueabihf/include/qt5/QtNetwork -I/usr/arm-linux-gnuea\
bihf/include/qt5/QtGui -I/usr/arm-linux-gnueabihf/include/qt5/QtCore -I. -o test.o test.cpp
arm-linux-gnueabihf-g++ -Wl,-O1 -o sample_app test.o   -L/usr/arm-linux-gnueabihf/lib -lQt5Multimedia -lQt5Network -lQt5Gui -lQt5Core -lGLESv2 -lpthread
 
[ATDE ]$ ls
Makefile  build.sh  sample.wav  sample_app  sample_app.pro  test.cpp  test.o

生成された実行ファイル(sample_app)と、同梱のsample.wavファイルを
Armadillol-840の同じディレクトリにコピーしてください。

root権限でsample_appを実行すると、sample.wavが再生されます。

[armadillo ~]$ sudo ./sample_app

yzk_armadillo-240

2014年3月6日 16時20分

お世話になります、橋本です。

作成いただいたパッケージの導入を進めておりましたが、サンプルアプリの
再生ができません。

ATDE5へのクロスパッケージがインストールは手順のとおり進めることが
できました。
ATDE5にて、sample_app もビルドできました。

次に、Armadillo-840へのインストールの為、環境として、Debian GNU/Linux
のルートファイルシステムで構築したSDカードを用意し、SDブートで作業
しました。

1.Armadillo-840に qt5multimedia-armhf をコピーし dpkgにてインス
  トールを試みましたが失敗しました。
   Package libasound2 is not installed.
   Package libgstreamer0.10-0 is not installed.
   Package libgstreamer-plugins-base0.10-0 is not installed.
   Package libopenal1 is not installed.

(以下、念のため、別のSDカードを用意して作業しました。)

2.GStreamerのインストールを四苦八苦しながら以下のように実施しました。
   apt-get install gstreamer0.10-alsa gstreamer-tools

3.gst-launchのテスト音再生コマンドを実行し、HDMIから音が再生
  しました。
   gst-launch-0.10 audiotestsrc ! "audio/x-raw-int, ¥
   channels=2,rate=48000,width=16" ! alsasink ¥
   device=hw:0

4.qt5multimedia-armhf のすべてのパッケージをインストールし、成功
  しました。
   dpkg -i *.deb

5.ATDE5でビルドした sample_app と sample.wav をSDカードにコピーし、
  実行しましたが、音が再生されません。
   ./sample_app
  エラーメッセージはありませんでした。

教示の程、宜しくお願い致します。

拡張ボードが無い状態では、HDMIから音が出力されますが、
液晶モデル開発セットを使用している場合はsample_appで
再生される音は、拡張ボードのヘッドフォンジャックに
出力されます。
拡張ボードが接続されている場合は、ヘッドフォンジャックで、
再生を確認してみてください。

拡張ボード無しで、HDMIに接続したデバイスから音が出ない
という事であれば、straceでsample_appがdeviceをopen
できているかを確認してみてください。
straceは次のようにインストールできます。

[armadillo ~]# apt-get install strace

使い方はstraceコマンドを対象のコマンドの前に付けて実行するだけです。
大量のログが出力されるので、ファイルにリダイレクトして
後から確認した方が良いです。

[armadillo ~]# strace ./sample_app 2> trace_sample_app.log
(30秒程度待ってからCtrl+Cで終了してください)

trace_sample_app.logをopenというキーワードでgrepすると
./sample_appが発行したopen()システムコールが確認できます。
何度かopenに失敗した後、最終的に、/dev/snd/controlC0と
/dev/snd/pcmC0Dpopenできれば再生できるはずなのですが、
どのようなログになっているでしょうか。

[armadillo ~]# grep open trace_sample_app.log

yzk_armadillo-240

2014年3月7日 14時16分

お世話になります、橋本です。

> 液晶モデル開発セットを使用している場合はsample_appで
> 再生される音は、拡張ボードのヘッドフォンジャックに出力されます。

液晶モデル開発セットを使用しておりました。
無事、拡張ボードのヘッドフォンジャックにて出力を確認することができました。
ありがとうございました。

続けて質問させてください。
Debian GNU/Linux のルートファイルシステムで構築したSDカードを利用して
今回 QSound の音再生を確認することができましたが、Atmark-Dist の
ルートファイルシステムで再生するには、どのような作業が必要なのでしょうか?

以上、宜しくお願い致します。

とりあえず試すなら、アプリと qtmultimedia のライブラリを Atmark Distの
イメージで動いている Armadillo にコピーして

[armadillo ~]$ ls
sample-app     libQt5Multimedia.so.x
[armadillo ~]$ LD_LIBRARY_PATH=. ./sample-app

で、たぶん動くと思います。

イメージファイルを作るときは、 atmark-dist/romfs にアプリ
を入れ make してください。イメージジファイルを作成するとき
に libQt5Multimedia.so.x.x.x など必要なライブラリも入れてくれるはずです。
ただ、プラグインなど dynamic load するライブラリは見付けることができな
いので、手で入れる必要があります。詳しくは↓で。

http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…

溝渕です。

atmark-dist-20130704(v1.32.0)で、Makefileにpreromfsターゲットが追加されました。preromfsターゲットは、allターゲットに依存しており、atmark-dist-[version]/romfs/ディレクトリを削除します。

そのため、

[atde5]$ make

のように実行すると、atmark-dist-[version]/romfs/ディレクトリに入れた自作アプリケーションが消えてしまいます。

以下のように実行すると、自作アプリケーションは消えずに、依存ライブラリもインストールされます。

[atde5]$ make romfs image

以上です。

yzk_armadillo-240

2014年3月7日 16時14分

お世話になります。橋本です。

ご回答ありがとうございました。

まずは Windows 上で開発していたアプリケーションを Debian ユーザーランドに移植する作業を
行いたいと思います。
移植に成功しましたら、教えて下さった方法で Atmark Dist ユーザーランドを構築し、SD カード起動
ではなく本体起動ができるような環境を整える作業を行いたいと思います。
そのため、すぐには結果をご連絡できませんが、これまでご対応くださり、ありがとうございました。

また、不明な点がございましたら、ご面倒とは存じますが、質問を差し上げたく存じます。
その際は、何卒よろしくお願い申し上げます。

yzk_armadillo-240

2014年5月9日 11時23分

お世話になります。橋本です。

前回の質問よりだいぶ間があいてしまいまいましたが、現在、Atmark Dist ユーザーランドの
環境に QtMultimedia( QSound )による音の再生を実装したアプリケーションの移植を行おう
としております。

以前作成いただいた QtMultimedia のアーカイブを利用して サンプルプログラムとライブラリ
を組み込んだ Atmark-Dist を作成しましたが、下記のエラーになり音の再生がされません。

(エラー)
using null output device, none available

(接続した HDMI モニタから、gst-launch 及び alsa コマンドにより音が出力されることは
 確認済みです。)

ご教示の程、宜しくお願い致します。

--------------------------------------------------------------

(1) カーネルのソースアーカイブ名
linux-3.4-at6.tar.gz

(2) Atmark Dist ユーザーランドのソースアーカイブ名
atmark-dist-20140131.tar.gz

(3) QtMultimedia アーカイブ名
http://download.atmark-techno.com/misc/forum/qt5multimedia_20140227.tar…

(4) サンプルプログラム
ダウンロードした (4) の QtMultimedia アーカイブに含まれるサンプルプログラムを使用

(5) Atmark Dist ユーザーランドでのビルド方法
(5.1)
サンプルプログラムで build.sh を実行。

(5.2)
build.sh と、生成した実行ファイル sample_app およびオブジェクトファイル
test.o を削除

(5.3)
Atmark Dist ユーザーランドの
../atmark-dist-20140131/vendors/AtmarkTechno/Armadillo-840
にサンプルプログラムのディレクトリをコピー

(5.4)
コピーしたサンプルプログラムの Makefile を修正
####### Install という行の前に次の2行を追加した。

romfs:
$(ROMFSINST) /usr/bin/$(TARGET)

(5.4)
Atmark Dist ユーザーランドのプロダクトディレクトリ
(../atmark-dist-20140131/vendors/AtmarkTechno/Armadillo-840) の Makefileを2点、
編集した。

1点目は
SUBDIR_y += sample_app/
という行を追加した。

2点目は
romfs: から始まる段落の最後に以下の行を追加した。
$(ROMFSINST) /home/atmark/dev/Qt/QtMultimedia/qt5multimedia_20140227/sample_app/sample.wav

/usr/bin/sample.wav

(5.5)
最後に Qt5 の Makefile 編集

以下の行を削除した。
audio/libqtmedia_pulse.so ¥

以下の行でコメントアウトする文字 # を削除した。
(編集前)#LIBS_y += $(MULTIMEDIA_LIBS)
(編集後)LIBS_y += $(MULTIMEDIA_LIBS)

以下の行でコメントアウトする文字 # を削除した。
(編集前)#PLUGINS_y += $(MULTIMEDIA_PLUGINS)
(編集後)PLUGINS_y += $(MULTIMEDIA_PLUGINS)

同じ手順でsample_appが音声再生できない現象を
再現できました。
QtMultimediaライブラリがalsaのpcmデバイスを
見付けられていないように見えます。

こちらでも調べてみます。

yzk_armadillo-240

2014年6月23日 9時14分

at_ohsawa 様

お世話になっております。橋本です。

一月前に投稿させて頂いた、
 「Atmark Dist ユーザーランドの環境への QtMultimedia( QSound )による
  音の再生を実装したアプリケーションの移植」について、

当方では、手詰まりの状態です。
御社の方では、その後、進展等ございましたでしょうか?

> 同じ手順でsample_appが音声再生できない現象を

> 再現できました。

> QtMultimediaライブラリがalsaのpcmデバイスを

> 見付けられていないように見えます。

>
> こちらでも調べてみます。