個人的なまとめ。

何かてきとーに書きます。

Linuxで動画を録画・編集し音声のみを抽出するまで【メモ】

COVID-19のおかげで教室に集まらずに講義を展開する必要に迫られた.

しかも学生は(当然)そのようなことを想定していない.つまり,家の通信環境は保証されない.

本学ではZoomをつかって講義を行う方針だそうだが,通信量による従量課金の学生は料金が気になって講義どころではないだろうし,帯域制限がかかっている学生はZoomを快適に使えるわけがない.

さてどうしたものか,ということで(しょうがなく)PDFと音声を配布して,Zoomによる講義は参加を必須ではないようにした.
通信環境が潤沢な学生は動画でも良いようにしたかったので,動画で収録をして音声を抽出することにした.
(こうしておかないと動画の人とPDF+音声で学んでいる人で差異が出るとか言われかねない気がする.)

音声だけでよければaudacityなんかの優秀なソフトウェアに向かって話しかければいいと思う.

ここではLinuxだけでできる動画の作成方法から,音声のみ抽出するまでの方法をメモっておく.

動画はOBSというソフトウェアを利用して撮影

obsproject.com

OBSのインストールは

yay -Syu obs-studio

OBSの起動は

obs

フォーマットはmkvがおすすめ


講義の一発撮りで噛まないなんて普通に無理なので,撮影した複数の動画をopenshotでつなぎ合わせる.

github.com

openshotのインストールは

yay -Syu openshot-pt

openshotの起動は

openshot-pt

これでH.265でレンダリングすればきれいに出来上がる.
70分の動画をレンダリングするには,私の環境(Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 2つ)では4時間くらいかかった
相当古い(たしか2007年くらいの)CPUなので他の環境ならもっと早いと思う.

さらに凝った動画をつくりたければkdenliveもいいかも

kdenlive.org

kdenliveのインストールは

yay -Syu kdenlive

kdenliveの起動は

kdenlive

ちなみに私はPDFを写してるだけなのでopenshotで十分


出来上がった動画からffmpegを使って音声を抽出する.聞ける程度の音質を保ちつつ,ファイルサイズを小さくする.


まずは動画から音声を抽出

ffmpeg -i 'input_video.mp4' -vn -acodec copy 'only_sound.m4a'

このときに動画と音声のコーデックを合わせる必要がある.
例えばAACであればmp4やm4a,mp3音声であれば拡張子はmp3となる.
ffmpegが親切に怒ってくれるので,うまく行かなかったらffmpeg先生の言うことを聞けば良い.

次に情報量を少なくするために,音声を意図的に劣化させる.

いくつか試してみた結果,私の耳には以下に落ち着いた
モノラル音声,サンプリング周波数48kHz,ビットレート24kbps

ffmpeg -i 'only_sound.m4a' -ac 1 -ab 24k -ar 48k 'output_sound.m4a'

acでチャネル数の指定,abでビットレートの指定,arでサンプリング周波数の指定ができるっぽい

まさかこんな形でYoutuberみたいな,ちびっこたちのあこがれの職業っぽいことをするようになるとは思わなかった.