2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ffmpegでDiscordのVCに動画を音声と共に流す

Last updated at Posted at 2021-03-28

はじめに

お久しぶりです。初めての方は初めまして。

ffmpegを使って、DiscordのVCに動画を音声と共に流してみたいと思います。

この記事は、Ubuntu Desktop 20.04での方法を書いています。
また、各コマンドの意味は一番最後のffmpeg以外ほとんど理解していないため、その点はご容赦下さい。

加えて、この行為によってどうなっても知りません。何も保証しません。できません。よろしくお願いします。

他との違い

他のV4L2の記事では全て映像のみですが、この記事では両方扱います。

セットアップ

まず、必要なものは以下の通りになります。

  • ffmpeg
  • ブラウザかDiscordのデスクトップクライアント
    • 今回はGoogle Chromeを使用します
    • FirefoxはVCとの相性が悪いのでおすすめしません
  • 次に挙げるもの

物理カメラを無効化

ls /dev/video*して出てきたビデオデバイスを、必要に応じて無効化します。
これをしないと、映像を止めた隙に顔バレします。ご注意下さい。

仮想カメラ (映像のために必要)

上記を参考に、

# インストール
sudo apt install v4l2loopback-dkms v4l2loopback-utils

# /dev/video10 を生成
sudo /usr/sbin/modprobe v4l2loopback devices=1 video_nr=10 card_label="OBS Cam" exclusive_caps=1

このようにして、OBS Camという名前で/dev/video10を生成します。

仮想マイク (音声のために必要)

上記を参考に、

# 仮想マイクを作成
pactl load-module module-null-sink sink_name="virtual_speaker" sink_properties=device.description="virtual_speaker"
pactl load-module module-remap-source master="virtual_speaker.monitor" source_name="virtual_mic" source_properties=device.description="virtual_mic"

virtual_micという名前でマイクを生成します。

本番

1倍速以上でデコードできる動画を使うことをおすすめします。

まず、DiscordでVCに参加します。何をしても文句を言われない所にして下さい。

次に、先に何らかの動画を次のコマンドで再生します。

PULSE_SINK=virtual_speaker ffmpeg -re -i "video.mkv" -f v4l2 /dev/video10 -f pulse "stream name"

その後、Discord側で配信の設定を行います。

カメラ設定

マイク設定

画像の通り、カメラをOBS Camに、マイクをvirtual_micにします。
また、同時に映像が反転していないことを確認してください。
音声に関しては、サブ垢を使うか同じチャンネルの別の人に確認してもらって下さい。

反転している場合の対処法は、後述します。

その後、ffmpegCtrl+Cで止めてから再度再生すれば、映像を音声つきでDiscordに流すことができます。

その他

コマンドの説明

PULSE_SINK=virtual_speaker ffmpeg -re -i "video.mkv" -f v4l2 /dev/video10 -f pulse "stream name"

主要な部分だけ説明します。

  • PULSE_SINK=virtual_speaker --- 出力先のマイクデバイスの指定
  • -re --- リアルタイム出力。これがないと速度が無制限になるので、一瞬で終わる
  • -f v4l2 /dev/video10 --- 映像の出力先の指定
  • -f pulse "stream name" --- 音声の出力先の指定。stream nameはよく分からない

なお出力を同時に2つ指定していますが、これでも問題は無いようです。

反転してしまう場合

ffmpegが映像をV4L2に入力する際、場合によっては左右反転する場合があるので、そのときは-vf hflipをV4L2の出力に追加して下さい。
他の反転は上記のURLを参照して下さい。

おわりに

以上の方法で、DiscordのVCに動画と音声の両方を流すことができます。

...というかこれってBotでやるべきだと思うんですけど

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?