From e2cd7491a94d61983477768e595e54e6dd0d29b6 Mon Sep 17 00:00:00 2001 From: Jeff Crowe Date: Thu, 21 Apr 2016 19:47:31 -0700 Subject: [PATCH] capture.py --- capture.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 capture.py diff --git a/capture.py b/capture.py new file mode 100644 index 0000000..70d4e5f --- /dev/null +++ b/capture.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +from subprocess import Popen, PIPE, STDOUT +import json +import argparse + +parser = argparse.ArgumentParser(description='Video Capture') +parser.add_argument('--video_size', default="720x480", help='Video resolution setting for capture device') +parser.add_argument('--scale_to', default="640x480", help='Scale video to resolution') +parser.add_argument('--fps', default=29.97, type=float, help='Frames per second (float)') +parser.add_argument('--device', default="Conexant Polaris Video Capture", help='Capture device name') +parser.add_argument('--time', default="2:05:00", help='Capture time limit') +parser.add_argument('--crf', default=24, type=int, help='CRF setting') +parser.add_argument('--maxrate', default=2500, type=int, help='Maximum bitrate') +parser.add_argument('--out', required=True, help='Output file') +args = parser.parse_args() + +cmd = [ + "ffmpeg", + "-framerate", str(args.fps), + "-vsync", "1", + "-video_size", "720x480", + "-f", "dshow", + "-rtbufsize", "250000k", + "-crossbar_video_input_pin_number", "1", + "-crossbar_audio_input_pin_number", "2", + "-i", "video=" + args.device + ":audio=" + args.device, + "-t", args.time, + "-force_key_frames", ",".join(["00:00:%02d.000" % x for x in range(11)]), + "-vf", "fps=" + str(args.fps) + ",yadif=0:0:0,hqdn3d=6:4:6:4,scale=" + args.scale_to, + "-c:v", "libx264", + "-preset", "medium", + "-tune", "film", + "-profile:v", "main", + "-level", "3.1", + "-pix_fmt", "yuv420p", + "-crf", str(args.crf), + "-maxrate", str(args.maxrate) + "k", + "-bufsize", str(args.maxrate*2) + "k", + "-af", "aresample=async=1000,highpass=200,lowpass=3500", + "-c:a", "aac", + "-b:a", "96k", + "-strict", "-2", + "-r", str(args.fps), + args.out +] + +print(cmd) +p = Popen(cmd, stdout=None, stderr=None) +#for line in p.stdout: +# print("FFMPEG: " + line.decode('utf-8').rstrip()) +exit = p.wait() +print("FFMPEG exit code " + str(exit)) \ No newline at end of file