Raspberry Pi 400でスイッチのプレイ動画を保存する(まとめ)
最終更新日:2023年3月4日
最近ハマっている(はず)のスプラ3のウデマエ上達のため、地道な反復練習も必要だが、振り返りのためのプレイ動画も必要なのでは。
また、手元で暇そうにしているラズパイを活用できないかという企画。
こちらが別ページで記載した動画保存、音声保存を呼び出す処理に関するページとなります。
目次
全体構想
サンプルソース
実験結果
1.全体構想
Raspberry Pi 400に対するHDMI入力の情報を保存するようにします。
別ページで書いた動画保存(VideoRecorder.py)、音声保存(SoundRecorder.py)の2処理をメインプログラムからCallして、動画保存を行います。
mp4とwavでの出力となるため、後段で結合あるいはエンコード処理が必要となります。
2.サンプルソース
現時点のサンプルソースを記載します
ソースは無保証です。少し見るとわかりますが、かなり雑です
Enterを1度押すと録画開始、もう一度押すと終わります
#capture.py
"""Pass input directly to output.
#
# 処理内容
# 1.入力映像、音声をキャプチャする
# 2.入力映像をmp4ファイルとWAVファイルへ保存する
#
# 使い方
# args = [-vh] [-ws] [-vo mp4ファイル名] [-wo Wavファイル名]
#
#
"""
import argparse
import VideoRecorder
import SoundRecorder
def int_or_str(text):
"""Helper function for argument parsing."""
try:
return int(text)
except ValueError:
return text
"""
初期化処理
"""
parser = argparse.ArgumentParser(add_help=False)
args, remaining = parser.parse_known_args()
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter,
parents=[parser])
parser.add_argument(
'-i', '--input-device', type=int_or_str,
help='input device (numeric ID or substring)')
parser.add_argument(
'-o', '--output-device', type=int_or_str,
help='output device (numeric ID or substring)')
parser.add_argument(
'-c', '--channels', type=int, default=2,
help='number of channels')
parser.add_argument('-wd', '--wave-dtype', help='audio data type')
parser.add_argument('-wr', '--wave-samplerate', type=float, help='sampling rate')
parser.add_argument('-wb', '--wave-blocksize', type=int, help='block size')
parser.add_argument('-wl', '--wave-latency', type=float, help='latency in seconds')
parser.add_argument('-wv', '--wave-volume', type=float, default=0.2, help='wave volume ratio')
parser.add_argument('-ws', '--wave-silentmode', action='store_true', help='silent mode')
parser.add_argument('-wo', '--wave-outputfile', help='output WAV file')
parser.add_argument('-vf', '--video-framerate', type=float, help='Video frame rate')
parser.add_argument('-vb', '--video-buffersize', type=int, help='Video buffersize')
parser.add_argument('-vc', '--video-convert', type=int, help='Video Convert')
parser.add_argument('-vh', '--video-hidden', action='store_true', help='hidden mode')
parser.add_argument('-vo', '--video-outputfile', help='output Video file')
args = parser.parse_args(remaining)
if __name__ == "__main__":
oVR = VideoRecorder.VideoRecorder(args)
oVR.start()
oSR = SoundRecorder.SoundRecorder(args)
oSR.start()
#状態確認待ち
input()
#録画開始
print("Recording Start")
oVR.recordstart()
oSR.recordstart()
#終了待ち
input()
print("Recording End")
oVR.end()
oSR.end()
3.実験結果
キャプチャしたサンプルです。(全ページ共通)
この記事が気に入ったらサポートをしてみませんか?