OPTION_HTTP_COARSE_TIMEBASE,
OPTION_HTTP_AUDIO_CODEC,
OPTION_HTTP_AUDIO_BITRATE,
+ OPTION_HTTP_PORT,
+ OPTION_NO_TRANSCODE_AUDIO,
OPTION_FLAT_AUDIO,
OPTION_GAIN_STAGING,
OPTION_DISABLE_LOCUT,
OPTION_OUTPUT_SLOP_FRAMES,
OPTION_TIMECODE_STREAM,
OPTION_TIMECODE_STDOUT,
+ OPTION_QUICK_CUT_KEYS,
OPTION_10_BIT_INPUT,
OPTION_10_BIT_OUTPUT,
OPTION_INPUT_YCBCR_INTERPRETATION,
fprintf(stderr, " --http-audio-bitrate=KBITS audio codec bit rate to use for HTTP streams\n");
fprintf(stderr, " (default is %d, ignored unless --http-audio-codec is set)\n",
DEFAULT_AUDIO_OUTPUT_BIT_RATE / 1000);
+ fprintf(stderr, " --http-port=PORT which port to use for the built-in HTTP server\n");
+ fprintf(stderr, " (default is %d)\n", DEFAULT_HTTPD_PORT);
+ if (program == PROGRAM_KAERU) {
+ fprintf(stderr, " --no-transcode-audio copy encoded audio raw from the source stream\n");
+ fprintf(stderr, " (requires --http-audio-codec= to be set)\n");
+ }
fprintf(stderr, " --http-coarse-timebase use less timebase for HTTP (recommended for muxers\n");
fprintf(stderr, " that handle large pts poorly, like e.g. MP4)\n");
if (program == PROGRAM_NAGERU) {
fprintf(stderr, " dropping the frame (default 0.5)\n");
fprintf(stderr, " --timecode-stream show timestamp and timecode in stream\n");
fprintf(stderr, " --timecode-stdout show timestamp and timecode on standard output\n");
+ fprintf(stderr, " --quick-cut-keys enable direct cutting by Q, W, E, ... keys\n");
fprintf(stderr, " --10-bit-input use 10-bit video input (requires compute shaders)\n");
fprintf(stderr, " --10-bit-output use 10-bit video output (requires compute shaders,\n");
fprintf(stderr, " implies --record-x264-video)\n");
{ "http-coarse-timebase", no_argument, 0, OPTION_HTTP_COARSE_TIMEBASE },
{ "http-audio-codec", required_argument, 0, OPTION_HTTP_AUDIO_CODEC },
{ "http-audio-bitrate", required_argument, 0, OPTION_HTTP_AUDIO_BITRATE },
+ { "http-port", required_argument, 0, OPTION_HTTP_PORT },
+ { "no-transcode-audio", no_argument, 0, OPTION_NO_TRANSCODE_AUDIO },
{ "flat-audio", no_argument, 0, OPTION_FLAT_AUDIO },
{ "gain-staging", required_argument, 0, OPTION_GAIN_STAGING },
{ "disable-locut", no_argument, 0, OPTION_DISABLE_LOCUT },
{ "output-slop-frames", required_argument, 0, OPTION_OUTPUT_SLOP_FRAMES },
{ "timecode-stream", no_argument, 0, OPTION_TIMECODE_STREAM },
{ "timecode-stdout", no_argument, 0, OPTION_TIMECODE_STDOUT },
+ { "quick-cut-keys", no_argument, 0, OPTION_QUICK_CUT_KEYS },
{ "10-bit-input", no_argument, 0, OPTION_10_BIT_INPUT },
{ "10-bit-output", no_argument, 0, OPTION_10_BIT_OUTPUT },
{ "input-ycbcr-interpretation", required_argument, 0, OPTION_INPUT_YCBCR_INTERPRETATION },
case OPTION_HTTP_AUDIO_BITRATE:
global_flags.stream_audio_codec_bitrate = atoi(optarg) * 1000;
break;
+ case OPTION_HTTP_PORT:
+ global_flags.http_port = atoi(optarg);
+ break;
+ case OPTION_NO_TRANSCODE_AUDIO:
+ global_flags.transcode_audio = false;
+ break;
case OPTION_HTTP_X264_VIDEO:
global_flags.x264_video_to_http = true;
break;
case OPTION_TIMECODE_STDOUT:
global_flags.display_timecode_on_stdout = true;
break;
+ case OPTION_QUICK_CUT_KEYS:
+ global_flags.enable_quick_cut_keys = true;
+ break;
case OPTION_10_BIT_INPUT:
global_flags.ten_bit_input = true;
break;
fprintf(stderr, "ERROR: --output-card points to a nonexistant card\n");
exit(1);
}
+ if (!global_flags.transcode_audio && global_flags.stream_audio_codec_name.empty()) {
+ fprintf(stderr, "ERROR: If not transcoding audio, you must specify ahead-of-time what audio codec is in use\n");
+ fprintf(stderr, " (using --http-audio-codec).\n");
+ exit(1);
+ }
if (global_flags.x264_speedcontrol) {
if (!global_flags.x264_preset.empty() && global_flags.x264_preset != "faster") {
fprintf(stderr, "WARNING: --x264-preset is overridden by --x264-speedcontrol (implicitly uses \"faster\" as base preset)\n");