LoginSignup
4
4

More than 1 year has passed since last update.

jetson nano とmomoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する

Last updated at Posted at 2020-03-29

** 2022/05/13 新しい記事を書いたのでこちらを参照してください。
https://zenn.dev/tetsu_koba/articles/d931a843f16a4c

** 以降は古い記事。

以前に書いたラズパイ+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する と同じことをjetson nano でもやってみました。

オーディオループバックのカーネルモジュールのビルド

なんと、jetson nano のカーネルではオーディオループバックのカーネルモジュール(snd-aloop.ko)が標準では入っていません。
そこで自分でこれをビルドします。

ビルドの手順は以下のページの手順にそってやって問題なくできました。
https://developer.ridgerun.com/wiki/index.php?title=Jetson_Nano/Development/Building_the_Kernel_from_Source

私がやったときの手順をここに残します。
Jetson nano のリリースは 32.3.1 でした。

wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
sudo tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local

wget https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/Sources/T210/public_sources.tbz2
tar xvf public_sources.tbz2 
cd Linux_for_Tegra/source/public/

JETSON_NANO_KERNEL_SOURCE=$(pwd)
tar xf kernel_src.tbz2 
vi env.sh
env.sh
JETSON_NANO_KERNEL_SOURCE=$(pwd)
TOOLCHAIN_PREFIX=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
TEGRA_KERNEL_OUT=$JETSON_NANO_KERNEL_SOURCE/build
KERNEL_MODULES_OUT=$JETSON_NANO_KERNEL_SOURCE/modules
. env.sh 
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} tegra_defconfig
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} menuconfig

ここでオーデォオループバックデバイスをモジュールでビルドするように指定します。

Device Drivers  ---> 
 <*> Sound card support  ---> 
     <*>   Advanced Linux Sound Architecture  --->   
           [*]   Generic sound devices  --->   
                 <M>   Generic loopback driver (PCM)   

module をビルドします、

make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} -j2 --output-sync=target modules
cp build/sound/drivers/snd-aloop.ko .

必要なのはこのファイルひとつだけです。これをjetson nano に持っていきます。
面倒ですが、jetson nanoのカーネルのバージョンが上がるたびに同様の作業が必要になります。
snd-aloop.ko も標準で入れてくれないかなあ。

オーディオループバックのカーネルモジュールのロード

jetson nano で

sudo insmod snd-aloop.ko pcm_substreams=2

これで特にエラーメッセージがでなければOK。
念のために sudo lsmod |grep aloop でこのモジュールが入っていることを確認します。

pulseaudio を無効にする

ALSAを直接使いたいので、pulseaudio を無効にします。
このページの手順でできました。
https://kodi.wiki/view/PulseAudio/HOW-TO:_Disable_PulseAudio_and_use_ALSA_(without_removing_PulseAudio)_for_Ubuntu

以降はこのページの手順でいけます。
ラズパイ+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4