Armadilloフォーラム

mjpg_streamerの画像とUVCカメラの音声を取得したいのですが

n.yamamoto

2014年7月24日 10時02分

Yamamotoです。

Armadillo-420にUVCカメラを接続してmjpg_streamerを使用して画像をWEBに表示しようとしていますが
この時できればUVCカメラの音声も取得してWEBに配信したいのですが方法はありますでしょうか?

また、これもできればWEBに表示している画像の録画的なこともできれと思っております。
通常ですとmjpg_streamerでWEBに出力するか静止画として出力するかしかできない認識しているのですが・・・

よろしくお願いいたします。

コメント

at_daisuke.sasaki

2014年7月29日 11時16分

佐々木大輔です。

mjpg_streamerは音声を内包しない、映像部分のみのMotion JPEGを生成します。
そのため、音声を同時に配信する事はできないと思います。

> mjpg_streamerでWEBに出力するか静止画として出力するかしかできない認識しているのですが・・・

上記については、ご理解の通りだと思います。

> Armadillo-420にUVCカメラを接続してmjpg_streamerを使用して画像をWEBに表示しようとしていますが
> この時できればUVCカメラの音声も取得してWEBに配信したいのですが方法はありますでしょうか?

Armadillo-400ではやりたい事を実現するのは難しいかもしれません。。。

試したことはないのですが、Armadillo-800であれば、
以下のようなGStreamerの機能を使って実現できるかもしれません。

https://coaxion.net/blog/2013/10/streaming-gstreamer-pipelines-via-http/

Yamamotoです。

試していないのですが
「Armadillo-420でステレオ録音が可能なUSBオーディオデバイス」(https://armadillo.atmark-techno.com/forum/armadillo/726)
でAD-USBを使用して録音可能のような記載が見受けられますが

UVCカメラのマイクではなく、別USB接続でAD-USBを接続してならできるということでしょうか?

多少、画像と音声がずれとしょうがないと思っておりますが如何でしょうか?

Yamamotoです。

これから調べますが、先に投稿だけしておきます。

「Armadillo-420でステレオ録音が可能なUSBオーディオデバイス」(https://armadillo.atmark-techno.com/forum/armadillo/726)
の手順にしたがって確認してみましたがエラーで録音したWAVファイルは出来ませんでした。

以下がUSBマイク接続とrecordした時の結果です。
--------------------------------------------------------------------------------------------------------
[root@armadillo460-0 (ttymxc3) /home/guest]# usb 2-1: new full speed USB device using fsl-ehci and address 2
usb 2-1: configuration #1 chosen from 1 choice
input: C-Media Electronics Inc. USB PnP Sound Device as /devices/platform/fsl-ehci.1/usb2/2-1/2-1:1.3/input/input2
input: USB HID v1.00 Device [C-Media Electronics Inc. USB PnP Sound Device] on usb-fsl-ehci.1-1

[root@armadillo460-0 (ttymxc3) /home/guest]# arecord -d 7 -D hw:0 -c 2 -r 48000 -t wav -f S16_LE rec.wav
ALSA lib pcm_hw.c:1240:(_snd_pcm_hw_open) Invalid value for card
arecord: main:550: audio open error: No such file or directory
[root@armadillo460-0 (ttymxc3) /home/guest]#
--------------------------------------------------------------------------------------------------------

使用したUSBマイクと実行してが合ってないのか、システム設定の不備があるのかなと思われますが、何かお気づきの点がありましたら教えてください!

Yamamotoです。

済みません。
先の投稿はAD-USBの設定が上手く出来ておりませんでした。

再度設定し直して実行した結果が以下です。
--------------------------------------------------------------------------------------------------------------------------------
[root@armadillo460-0 (ttymxc3) /home/guest]#
[root@armadillo460-0 (ttymxc3) /home/guest]# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
[root@armadillo460-0 (ttymxc3) /home/guest]# arecord -d 7 -D hw:0 -c 2 -r 48000 -t wav -f S16_LE rec.wav
Recording WAVE 'rec.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
arecord: set_params:909: Channels count non available
[root@armadillo460-0 (ttymxc3) /home/guest]#
[root@armadillo460-0 (ttymxc3) /home/guest]#
[root@armadillo460-0 (ttymxc3) /home/guest]# ls
[root@armadillo460-0 (ttymxc3) /home/guest]#
--------------------------------------------------------------------------------------------------------------------------------

Yamamotoです。

追加情報があります。

上記設定はチャネル数が不正のようで、再度修正して実行しました。

--------------------------------------------------------------------------------------------------------------------
[Armadillo ~/]# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: ADUSB [I-O DATA AD-USB], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

[Armadillo ~/]# arecord -d 7 -D hw:0 -c 1 -r 48000 -t wav -f S16_LE rec.wav
Recording WAVE 'rec.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
-------------------------------------------------------------------------------------------------------------------

上記で録音状態に入ったように見えるのですが、CTR+Cで停止してrec.wavを見ると44byteのままで録音されていないようです。
少し長めにマイクに音を拾わせて停止しても44byteは変わらず、再生しても何も音がでません。

マイクはサンワサプライの「MM-MCUSB21BK」を使用しました。

何か確認事項等ありましたら教えていただけませんでしょうか?

at_daisuke.sasaki

2014年8月26日 10時31分

佐々木大輔です。

以下の投稿で記載されている、カーネルコンフィギュレーションは実施していますか?
https://users.atmark-techno.com/comment/466#comment-466

     -> Device Drivers
       -> USB support (USB_SUPPORT [=y])
         -> [*] Improved Transaction Translator scheduling (EXPERIMENTAL)

上記のコンフィギュレーションが設定されていない場合に、
同様に44byteのまま録音されないという現象を過去に確認しています。

もし、設定していないようであれば、試してみて下さい。

Yamamottoです。

下記、再確認しましたが設定されておりました。

他に確認すべきことがありましたら、教えてください!

> 佐々木大輔です。
>
> 以下の投稿で記載されている、カーネルコンフィギュレーションは実施していますか?
> https://users.atmark-techno.com/comment/466#comment-466
>
>

>      -> Device Drivers
>        -> USB support (USB_SUPPORT [=y])
>          -> [*] Improved Transaction Translator scheduling (EXPERIMENTAL)
> 

>
> 上記のコンフィギュレーションが設定されていない場合に、
> 同様に44byteのまま録音されないという現象を過去に確認しています。
>
> もし、設定していないようであれば、試してみて下さい。

at_daisuke.sasaki

2014年8月27日 21時05分

佐々木大輔です。

問題切り分けのため、添付したカーネルで録音できるか確認していただきますか?

尚、以下のスレッドに貼りつけられているカーネルは、
同スレッド内で報告している正常動作しないlinux-2.6.26-at19の
カーネルとなってしまっているようです。。。

https://users.atmark-techno.com/comment/466#comment-466

また、arecordのオプションで「-v」や「-vvv」などを付加すると、
デバッグ情報が出力されるのですが、どのようなログが出力されますか?

[root@armadillo420-0 (ttymxc1) /home/ftp/pub]# arecord -v -d 7 -D hw:0 -c 2 -r 48000 -t wav -f S16_LE rec.wav
Recording WAVE 'rec.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Hardware PCM card 0 'I-O DATA AD-USB' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 6000
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 1572864000
ファイル ファイルの説明
linux-2.6.35-at-alpha4-stereo-record.bin.gz AD-USB動作確認用カーネル(linux-2.6.35-at-alpha4)

Yamamotoです。

遅くなりました。
ちょっと時間が無くて全ては確認できませんでした。

まず、添付のKernelイメージで実行してみましたが、起動時に異常で立ち上がってくれませんでした。
ひょっとして420イメージで作成いただいたのでしょうか?
420の空きがなくて、460で確認しています。(本来は420で動かしたいのですが。)

試しにLinux2.6.35-at-alph4環境を作成しようとしたのですが、設定時の問い合わせが多くて確認しながら展開するには時間が無くて諦めました。

あと、デバッグ文ですが、気づかずに取れていません。
時間が取れ次第試してみます。

対応、頂いているのに急に忙しくなって見れなくなっています。

> 佐々木大輔です。
>
> 問題切り分けのため、添付したカーネルで録音できるか確認していただきますか?
>
> 尚、以下のスレッドに貼りつけられているカーネルは、
> 同スレッド内で報告している正常動作しないlinux-2.6.26-at19の
> カーネルとなってしまっているようです。。。
>
> https://users.atmark-techno.com/comment/466#comment-466
>
>
> また、arecordのオプションで「-v」や「-vvv」などを付加すると、
> デバッグ情報が出力されるのですが、どのようなログが出力されますか?
>
>

> [root@armadillo420-0 (ttymxc1) /home/ftp/pub]# arecord -v -d 7 -D hw:0 -c 2 -r 48000 -t wav -f S16_LE rec.wav
> Recording WAVE 'rec.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
> Hardware PCM card 0 'I-O DATA AD-USB' device 0 subdevice 0
> Its setup is:
>   stream       : CAPTURE
>   access       : RW_INTERLEAVED
>   format       : S16_LE
>   subformat    : STD
>   channels     : 2
>   rate         : 48000
>   exact rate   : 48000 (48000/1)
>   msbits       : 16
>   buffer_size  : 24000
>   period_size  : 6000
>   period_time  : 125000
>   tstamp_mode  : NONE
>   period_step  : 1
>   avail_min    : 6000
>   start_threshold  : 1
>   stop_threshold   : 24000
>   silence_threshold: 0
>   silence_size : 0
>   boundary     : 1572864000
> 

at_daisuke.sasaki

2014年9月4日 20時36分

佐々木大輔です。

説明が抜けていましたね。。。

Linux2.6.35-at-alph4は対象製品が以下となっています。
- Armadillo-440 液晶モデル
- Armadillo-420 ベーシックモデル

そのため、420でイメージを作成しています。
まずは問題切り分けのため、お時間のあるときに、添付したカーネルで動作を確認してみてください。

尚、以下のスレッドにあるように、linux-2.6.26-atのカーネルでは
こちらでも動作を確認できていません。
https://users.atmark-techno.com/comment/466

Yamamotoです。

有難うございます。

420が空きましたので、週末にでも試してみます。

結果はまた投稿させていただきます。

Yamamotoです。

420で試してみましたが、以下の通り途中でリブートが掛かります。

何かファイルシステムが無いと言うことで、トレース出力でリセットになっているのかな?

========================================================================
Hermit-At v2.1.5 (armadillo4x0) compiled at 17:01:18, Jul 27 2012
Uncompressing kernel.............................................................................................................................done.
Copying ramdisk.......................................................done.
Doing console=ttymxc2
Linux version 2.6.35-at-alpha4 (atmark@atde3) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #3 PREEMPT Wed Aug 27 20:54:41 JST 2014
CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Armadillo-420
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttymxc2
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 46792k/46792k available, 18744k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xfde00000 - 0xffe00000 ( 32 MB)
vmalloc : 0xc4800000 - 0xf4000000 ( 760 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0028000 ( 128 kB)
.text : 0xc0028000 - 0xc03c6000 (3704 kB)
.data : 0xc03c6000 - 0xc03ec440 ( 154 kB)
Hierarchical RCU implementation.
RCU-based detection of stalled CPUs is disabled.
Verbose stalled-CPUs detection is disabled.
NR_IRQS:208
MXC GPIO hardware
MXC IRQ initialized
Clock input source is 24000000
Console: colour dummy device 80x30
Calibrating delay loop... 199.06 BogoMIPS (lpj=995328)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
regulator: core version 0.5
NET: Registered protocol family 16
i.MX IRAM pool: 128 KB@0xc4840000
Using SDMA I.API
MXC DMA API initialized
bio: create slab at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.23.
regulator: REG1_BKLT: 5000 mV
regulator: REG2_CPU: 3300 mV
regulator: REG3_CORE: 1450 mV
regulator: REG4_DDR: 1800 mV
regulator: REG5_PERS: 3300 mV
regulator: sdhc1.pwrsw: 3300 mV
regulator: USB_VIN: 5000 mV
mc34704 0-0054: Loaded
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
Trying to unpack rootfs image as initramfs...
rootfs image is not initramfs (junk in compressed archive); looks like an initrd
Freeing initrd memory: 14080K
Bus freq driver module loaded
usb: Host 2 host (serial) registered
usb: DR host (utmi) registered
msgmni has been set to 118
io scheduler noop registered
io scheduler cfq registered (default)
Serial: MXC Internal UART driver
mxcintuart.1: ttymxc1 at MMIO 0x43f94000 (irq = 32) is a Freescale i.MX
mxcintuart.2: ttymxc2 at MMIO 0x5000c000 (irq = 18) is a Freescale i.MX
console [ttymxc2] enabled
mxcintuart.4: ttymxc4 at MMIO 0x5002c000 (irq = 40) is a Freescale i.MX
brd: module loaded
loop: module loaded
armadillo-nor: Found 1 x16 devices at 0x0 in 16-bit bank
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Using buffer write method
Using auto-unlock on power-up/resume
cfi_cmdset_0001: Erase suspend on write enabled
armadillo-nor: use default partitions(4)
Creating 4 MTD partitions on "armadillo-nor":
0x000000000000-0x000000020000 : "nor.bootloader"
0x000000020000-0x000000220000 : "nor.kernel"
0x000000220000-0x000000fe0000 : "nor.userland"
0x000000fe0000-0x000001000000 : "nor.config"
FEC Ethernet Driver
PPP generic driver version 2.4.2
NET: Registered protocol family 24
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 35, io base 0x53ff4400
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 37, io base 0x53ff4000
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
input: gpio-keys as /devices/platform/gpio-keys.0/input/input0
rtc-s35390a 1-0030: rtc core: registered rtc-s35390a as rtc0
rtc-s35390a 2-0030: error resetting chip
rtc-s35390a: probe of 2-0030 failed with error -5
i2c /dev entries driver
Linux video capture interface: v2.00
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
i.MX ADC at 0x50030000 irq 46
mxsdhci: MXC Secure Digital Host Controller Interface driver
mxsdhci: MXC SDHCI Controller Driver.
mmc0: SDHCI detect irq 159 irq 9 INTERNAL DMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
usbcore: registered new interface driver snd-usb-audio
usbcore: registered new interface driver snd-ua101
usbcore: registered new interface driver snd-usb-caiaq
WM8978 2-001a: Failed to issue reset
WM8978: probe of 2-001a failed with error -5
ALSA device list:
No soundcards found.
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP cubic registered
NET: Registered protocol family 17
NET: Registered protocol family 15
Static Power Management for Freescale i.MX25
rtc-s35390a 1-0030: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
RAMDISK: Couldn't find valid RAM disk image starting at 0.
List of all partitions:
1f00 128 mtdblock0 (driver?)
1f01 2048 mtdblock1 (driver?)
1f02 14080 mtdblock2 (driver?)
1f03 128 mtdblock3 (driver?)
No filesystem could mount root, tried: ext3 ext2 vfat msdos
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
Backtrace:
[] (dump_backtrace+0x0/0x108) from [] (dump_stack+0x18/0x1c)
r6:c3ca9000 r5:c03eeca0 r4:c3c19f50
[] (dump_stack+0x0/0x1c) from [] (panic+0x68/0xf8)
[] (panic+0x0/0xf8) from [] (mount_block_root+0x264/0x2d0)
r3:00000029 r2:c3c19f50 r1:c3c19f50 r0:c037761c
[] (mount_block_root+0x0/0x2d0) from [] (mount_root+0x54/0x6c)
[] (mount_root+0x0/0x6c) from [] (prepare_namespace+0x118/0x1e8)
r5:c002247c r4:c03ec6f8
[] (prepare_namespace+0x0/0x1e8) from [] (kernel_init+0x130/0x184)
r5:c002247c r4:c002247c
[] (kernel_init+0x0/0x184) from [] (do_exit+0x0/0x710)
r6:c00467b8 r5:c00083d0 r4:00000000
Hermit-At v2.1.5 (armadillo4x0) compiled at 17:01:18, Jul 27 2012
Uncompressing kernel.............................................................................................................................done.
Copying ramdisk.......................................................done.
Doing console=ttymxc2

========================================================================

Yamamotoです。

済みません。
先ほどの投稿はromfs.imgをクリアしてたためにRAMDISKが作成できずにエラーになっておりました。

再度試しましたところ、上手く録音して録音したファイルにはマイクから入れた音声が入っておりました。

=======================================================================
[root@armadillo420-0 (ttymxc2) /home/guest]# arecord -d 7 -D hw:0 -c 1 -r 48000 -t wav -f S16_LE -v rec.wav
Recording WAVE 'rec.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Hardware PCM card 0 'USB PnP Sound Device' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 1
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
start_threshold : 1
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
[root@armadillo420-0 (ttymxc2) /home/guest]# ls
rec.wav
======================================================================

済みませんが、こちらのLinux環境の設定手順を教えていただくか環境をいただくことはできますでしょうか?

ちなみに使用しているデバイスは以下のものです。
・SD
・USBメモリ
・USBシリアル
・USBカメラ
・USBマイク
・シリアル通信
・Ether通信

at_daisuke.sasaki

2014年9月16日 20時21分

佐々木大輔です。

録音ができたとの事で安心しました。

> 済みませんが、こちらのLinux環境の設定手順を教えていただくか環境をいただくことはできますでしょうか?

私が添付した「linux-2.6.35-at-alpha4-stereo-record.bin.gz」のコンフィギュレーションを知りたい。という質問でしょうか?
質問が、私の認識で正しい場合、手順は以下のスレッドのの内容になります。

https://users.atmark-techno.com/comment/466#comment-466

Yamamotoです。

教えていただいたスレッドを参考にしてコンフィグレーションしてみます。

有難うございました。