質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

受付中

Golang (Discordgo) + Dockerで Discordのボットで音声ファイルを再生したいが、ビルド過程で Opus が見つからずエラーが出る。

Japaneasee
Japaneasee

総合スコア5

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0回答

0リアクション

0クリップ

665閲覧

投稿2022/08/27 12:43

前提

Golang 1.19でDiscordgoを用い、DiscordのBotを作成

実現したいこと

Golang (Discordgo) + Dockerで、Discordのボット用いボイスチャンネルで音声ファイルを再生したいが、linux/arm64/v8 用のビルド過程で Opus が見つからずエラーが出る。

発生している問題・エラーメッセージ

PS C:\xxxx> docker buildx build . -t xxxx/xxxx:xxx --platform linux/arm64/v8 [+] Building 359.2s (15/15) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 362B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/golang:1.19 2.1s => [auth] library/golang:pull token for registry-1.docker.io 0.0s => [ 1/10] FROM docker.io/library/golang:1.19@sha256:xxxxxx 0.0s => [internal] load build context 0.3s => => transferring context: 176.35kB 0.3s => CACHED [ 2/10] RUN mkdir /app 0.0s => [ 3/10] COPY . /app 1.2s => [ 4/10] WORKDIR /app 0.1s => [ 5/10] RUN apt update -y && apt upgrade -y 38.5s => [ 6/10] RUN apt-get install build-essential -y 24.6s => [ 7/10] RUN apt install ffmpeg -y 234.9s => [ 8/10] RUN apt install libopus0 opus-tools -y 15.2s => [ 9/10] RUN go mod download 6.3s => ERROR [10/10] RUN go build -o bot ./cmd/bot/ 35.8s ------ > [10/10] RUN go build -o bot ./cmd/bot/: #0 7.812 # pkg-config --cflags -- opus #0 7.812 Package opus was not found in the pkg-config search path. #0 7.812 Perhaps you should add the directory containing `opus.pc' #0 7.812 to the PKG_CONFIG_PATH environment variable #0 7.812 No package 'opus' found #0 7.812 pkg-config: exit status 1 ------ error: failed to solve: executor failed running [/bin/sh -c go build -o bot ./cmd/bot/]: exit code: 2

該当のソースコード

Dockerfile

FROM golang:1.19 RUN mkdir /app COPY . /app WORKDIR /app RUN apt update -y && apt upgrade -y RUN apt-get install build-essential -y RUN apt install ffmpeg -y RUN apt install libopus0 opus-tools -y RUN go mod download RUN go build -o bot ./cmd/bot/ CMD ["./bot"]

試したこと

今回エラーが発生する条件として、 Raspberrypi 4 Model B 8G (arm64/v8)用へ以下のコマンド使用しビルドしたときにエラーが発生する。

console

docker buildx build . -t xxxx/xxxx:xxx --platform linux/arm64/v8

因みにWindows 10 Docker Desktopで用いる為に以下のコマンドでビルドした場合はエラーが発生せず、Discord内のボイスチャンネルで音声ファイルを再生することができた。

console

docker build -t xxxx/xxxx:xxx .

補足情報(FW/ツールのバージョンなど)

go.mod

Go

module main go 1.19 require ( github.com/PuerkitoBio/goquery v1.8.0 // indirect github.com/andybalholm/cascadia v1.3.1 // indirect github.com/bwmarrin/dgvoice v0.0.0-20210225172318-caaac756e02e // indirect github.com/bwmarrin/discordgo v0.26.0 // indirect github.com/fatih/color v1.13.0 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/joho/godotenv v1.4.0 // indirect github.com/mattn/go-colorable v0.1.9 // indirect github.com/mattn/go-isatty v0.0.14 // indirect golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 // indirect golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect layeh.com/gopus v0.0.0-20210501142526-1ee02d434e32 // indirect )

以下二つのライブラリを主に用い、ボットを作成しています。
https://github.com/bwmarrin/discordgo
https://github.com/bwmarrin/dgvoice

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。