diff options
| author | dec05eba <dec05eba@protonmail.com> | 2026-07-13 12:39:12 +0200 |
|---|---|---|
| committer | dec05eba <dec05eba@protonmail.com> | 2026-07-13 12:43:56 +0200 |
| commit | 174192d5605c51b41f39bb8c5de1abc1edc8a106 (patch) | |
| tree | 320ecd136fb4b335660565b2804eccecb368e2f4 | |
| parent | c09fb1b15dff6a06ac5e704022cd8e0193c7ca91 (diff) | |
Add -exclude-metadata option
| -rw-r--r-- | gpu-screen-recorder.1 | 3 | ||||
| -rw-r--r-- | include/args_parser.h | 3 | ||||
| -rw-r--r-- | src/args_parser.c | 4 | ||||
| -rw-r--r-- | src/main.cpp | 4 |
4 files changed, 10 insertions, 4 deletions
diff --git a/gpu-screen-recorder.1 b/gpu-screen-recorder.1 index 6a573db..38d4df6 100644 --- a/gpu-screen-recorder.1 +++ b/gpu-screen-recorder.1 @@ -382,6 +382,9 @@ when this is set to .B yes to only encode frames when the screen content updates to lower GPU and video encoding usage when the system is idle. .TP +.BI \-exclude-metadata " yes|no" +Exclude personal metadata from the video file, such as audio track title that is composed from the name of the audio device by default (default: no). +.TP .BI \-write\-first\-frame\-ts " yes|no" When enabled, writes a timestamp file with extra extension \fI.ts\fR next to the output video containing: .nf diff --git a/include/args_parser.h b/include/args_parser.h index 2208a9a..e8c68d8 100644 --- a/include/args_parser.h +++ b/include/args_parser.h @@ -8,7 +8,7 @@ typedef struct gsr_egl gsr_egl; -#define NUM_ARGS 37 +#define NUM_ARGS 38 typedef enum { GSR_CAPTURE_SOURCE_TYPE_WINDOW, @@ -93,6 +93,7 @@ typedef struct { bool gl_debug; bool fallback_cpu_encoding; bool low_power; + bool exclude_metadata; bool record_cursor; bool date_folders; bool restore_portal_session; diff --git a/src/args_parser.c b/src/args_parser.c index 1957f32..c37712a 100644 --- a/src/args_parser.c +++ b/src/args_parser.c @@ -204,7 +204,7 @@ static void usage_header(void) { "[-cursor yes|no] [-keyint <value>] [-restore-portal-session yes|no] [-portal-session-token-filepath filepath] [-encoder gpu|cpu] " "[-fallback-cpu-encoding yes|no] [-o <output_file>] [-ro <output_directory>] [-ffmpeg-opts <options>] [--list-capture-options [card_path]] " "[--list-monitors] [--list-audio-devices] [--list-application-audio] [--list-v4l2-devices] [-write-first-frame-ts yes|no] [-low-power yes|no] " - "[-v yes|no] [-gl-debug yes|no] [--version] [-h|--help]\n", program_name); + "[-v yes|no] [-gl-debug yes|no] [-exclude-metadata yes|no] [--version] [-h|--help]\n", program_name); fflush(stdout); } @@ -272,6 +272,7 @@ static bool args_parser_set_values(args_parser *self) { self->fallback_cpu_encoding = args_get_boolean_by_key(self->args, NUM_ARGS, "-fallback-cpu-encoding", false); self->write_first_frame_ts = args_get_boolean_by_key(self->args, NUM_ARGS, "-write-first-frame-ts", false); self->low_power = args_get_boolean_by_key(self->args, NUM_ARGS, "-low-power", false); + self->exclude_metadata = args_get_boolean_by_key(self->args, NUM_ARGS, "-exclude-metadata", false); self->audio_bitrate = args_get_i64_by_key(self->args, NUM_ARGS, "-ab", 0); self->audio_bitrate *= 1000LL; @@ -567,6 +568,7 @@ bool args_parser_parse(args_parser *self, int argc, char **argv, const args_hand self->args[arg_index++] = (Arg){ .key = "-ffmpeg-audio-opts", .optional = true, .list = false, .type = ARG_TYPE_STRING }; self->args[arg_index++] = (Arg){ .key = "-write-first-frame-ts", .optional = true, .list = false, .type = ARG_TYPE_BOOLEAN }; self->args[arg_index++] = (Arg){ .key = "-low-power", .optional = true, .list = false, .type = ARG_TYPE_BOOLEAN }; + self->args[arg_index++] = (Arg){ .key = "-exclude-metadata", .optional = true, .list = false, .type = ARG_TYPE_BOOLEAN }; assert(arg_index == NUM_ARGS); for(int i = 1; i < argc; i += 2) { diff --git a/src/main.cpp b/src/main.cpp index 2ece52d..c574141 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1116,7 +1116,7 @@ static RecordingStartResult start_recording_create_streams(const char *filename, for(const AudioTrack &audio_track : audio_tracks) { AVStream *audio_stream = create_stream(av_format_context, audio_track.codec_context); - if(!audio_track.name.empty()) + if(!audio_track.name.empty() && !arg_parser.exclude_metadata) av_dict_set(&audio_stream->metadata, "title", audio_track.name.c_str(), 0); avcodec_parameters_from_context(audio_stream->codecpar, audio_track.codec_context); result.audio_inputs.push_back({&audio_track, audio_stream}); @@ -4081,7 +4081,7 @@ int main(int argc, char **argv) { fprintf(stderr, "gsr error: added too many audio sources\n"); } - if(audio_stream && !merged_audio_inputs.track_name.empty()) + if(audio_stream && !merged_audio_inputs.track_name.empty() && !arg_parser.exclude_metadata) av_dict_set(&audio_stream->metadata, "title", merged_audio_inputs.track_name.c_str(), 0); open_audio(audio_codec_context, arg_parser.ffmpeg_audio_opts); |
