音声付き動画を撮影、保存する
ここでは、カメラとマイクを両方同時に使って、音声付き動画を撮影します。
まずは、ラズパイに接続されているカメラで(音声なしの)動画が撮影できることを確認してください(「動画を撮影、保存する」を参照)。そして、以下どちらかの方法でマイクを接続し、
そのマイクを使って録音できることを確認してください(「マイクを使って音を録音する」を参照)。
Terminalでコマンドを使って録画する
まずは、Terminalでコマンドを使って音声付き動画を録画します。以下3つのコマンドを組み合わせます。
- raspivid:音声なしの動画を録画するコマンド。「動画を撮影、保存する」を参照
- arecord:録音をするコマンド。「マイクを使って音を録音する」を参照
- ffmpeg:音声なしの動画と音声を組み合わせるコマンド。「動画を撮影、保存する」と「マイクを使って音を録音する」を参照
以下、動画と音声の品質を少しづつ変えて、いくつかのコマンド例を紹介します。まずは次の設定で録画します。
動画の解像度 | 動画のフレームレート | 音声のビット深度(ビット数) | 音声のサンプリングレート |
---|---|---|---|
640 x 480 | 15 fps | 16 bits | 8 kHz |
以下のコマンドを(コピー・アンド・ペーストして)実行してください。
raspivid -t 5000 -w 640 -h 480 -fps 15 -o test.h264 | arecord -q -d 5 -f S16_LE -r 8000 test.wav; ffmpeg -v quiet -y -r 15 -i test.h264 -i test.wav -r 15 -ar 8000 -vcodec copy test.mp4; rm test.h264 test.wav
このコマンドは、5秒間の動画を音声付きで録画し、それをtest.mp4というファイルに保存します。5秒間録画して、その後MP4ファイルを生成するのに少し時間がかかるので、全体で10秒弱の時間がかかります。ファイルサイズは600 kB弱ではないかと思います。
上記のコマンドでは、まず以下の部分で、
raspivid ... test.h264 | arecord ... test.wav
raspivid(音声なし録画)とarecord(録音)を同時に実行し、それぞれの結果をtest.h264とtest.wavに保存します。「 | 」は、それ以前のコマンドとそれ以降のコマンドを同時実行する指示と理解してください。それぞれのコマンドの各種オプション(-tや-fpsなど)は、「動画を撮影、保存する」と「マイクを使って音を録音する」を参照してください。 |
上記コマンドでは、続く部分で、
; ffmpeg ... -i test.h264 -i test.wav test.mp4
ffmpegを実行して、test.h264とtest.wavを組み合わせてtest.wavを生成します。このように、音無し動画と音声をそれぞれ入力ファイルとして「-i」で指定します。その他の各種オプションについては、「動画を撮影、保存する」を参照してください。なお「;」は、それ以前のコマンドを先に実行し、続いてそれ以降のコマンドを実行する指示です。
次に、以下の設定で録画してみましょう。先の設定では音声のサンプリングレートが 8 kHzでしたが、それを16 kHzへ上げています。
動画の解像度 | 動画のフレームレート | 音声のビット深度(ビット数) | 音声のサンプリングレート |
---|---|---|---|
640 x 480 | 15 fps | 16 bits | 16 kHz |
この設定で録画するコマンドが以下です。
raspivid -t 5000 -w 640 -h 480 -fps 15 -o test.h264 | arecord -q -d 5 -f S16_LE -r 16000 test.wav; ffmpeg -v quiet -y -r 15 -i test.h264 -i test.wav -r 15 -ar 16000 -vcodec copy test.mp4; rm test.h264 test.wav
生成されるMPファイルのサイズは600 kB強になると思います。
さらにもうひとつ、以下の設定で録画してみましょう。先の設定では動画のフレームレートが15 kHzでしたが、それを20 kHzに上げています。
動画の解像度 | 動画のフレームレート | 音声のビット深度(ビット数) | 音声のサンプリングレート |
---|---|---|---|
640 x 480 | 20 fps | 16 bits | 16 kHz |
この設定で録画するコマンドが以下です。
raspivid -t 5000 -w 640 -h 480 -fps 20 -o test.h264 | arecord -q -d 5 -f S16_LE -r 16000 test.wav; ffmpeg -v quiet -y -r 20 -i test.h264 -i test.wav -r 20 -ar 16000 -vcodec copy test.mp4; rm test.h264 test.wav
生成されるMPファイルのサイズは650 kB程度かと思います。
実際にコマンドを実行して、生成された動画を見てみてください。動画と音声の品質を上げると、より見やすく、聞きやすい動画となり、生成されるファイルのサイズが大きくなるのが実感できます。
ラズパイZeroを使うプロジェクトでは、上記に挙げた程度の設定がおすすめです。ラズパイZeroのCPUを使って高品質の音声なし録画、高品質の音声の録音を別々に行うことは可能ですが、両者を同時に行うほどの能力はありません。仮に運よくできたとしても、両者を組み合わせて高品質の音声付き動画を生成するパワーは、ラズパイZeroのCPUにはありません。無理矢理やると、「音飛び」した動画が生成されるはずです。