Skip to content

Commit

Permalink
Moved ffmpeg output parameters to make it reusable
Browse files Browse the repository at this point in the history
  • Loading branch information
phw committed Nov 25, 2017
1 parent 08d9351 commit e16205b
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 41 deletions.
13 changes: 7 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -147,15 +147,16 @@ vala_precompile(VALA_C
src/post-processing/imagemagick-post-processor.vala
src/post-processing/post-processing-pipeline.vala
src/post-processing/post-processor.vala
src/recording/screen-recorder.vala
src/recording/avconv-screen-recorder.vala
src/recording/base-screen-recorder.vala
src/recording/screen-recorder-factory.vala
src/recording/recording-area.vala
src/recording/recording-config.vala
src/recording/gnome-shell-dbus-recorder.vala
src/recording/cli-screen-recorder.vala
src/recording/avconv-screen-recorder.vala
src/recording/ffmpeg-screen-recorder.vala
src/recording/ffmpeg.vala
src/recording/gnome-shell-dbus-recorder.vala
src/recording/recording-area.vala
src/recording/recording-config.vala
src/recording/screen-recorder-factory.vala
src/recording/screen-recorder.vala
src/ui/about-dialog.vala
src/ui/application-window.vala
src/ui/error-dialog.vala
Expand Down
38 changes: 3 additions & 35 deletions src/recording/ffmpeg-screen-recorder.vala
Original file line number Diff line number Diff line change
Expand Up @@ -42,41 +42,6 @@ namespace Peek.Recording {
args.append_val ("-i");
args.append_val (display + "+" + area.left.to_string () + "," + area.top.to_string ());

string extension;

if (config.output_format == OUTPUT_FORMAT_WEBM) {
extension = Utils.get_file_extension_for_format (config.output_format);
args.append_val ("-codec:v");
// args.append_val ("libvpx-vp9");
args.append_val ("libvpx");
args.append_val ("-qmin");
args.append_val ("10");
args.append_val ("-qmax");
args.append_val ("50");
args.append_val ("-crf");
args.append_val ("13");
args.append_val ("-b:v");
args.append_val ("1M");
} else if (config.output_format == OUTPUT_FORMAT_MP4) {
extension = Utils.get_file_extension_for_format (config.output_format);
args.append_val ("-codec:v");
args.append_val ("libx264");
args.append_val ("-preset:v");
args.append_val ("fast");
args.append_val ("-profile:v");
args.append_val ("baseline");
args.append_val ("-pix_fmt");
args.append_val ("yuv420p");
} else {
extension = "mkv";
args.append_val ("-codec:v");
args.append_val ("libx264rgb");
args.append_val ("-preset:v");
args.append_val ("ultrafast");
args.append_val ("-crf");
args.append_val ("0");
}

args.append_val ("-filter:v");
var filter = "scale=iw/" + config.downsample.to_string () + ":-1";
if (config.output_format == OUTPUT_FORMAT_MP4) {
Expand All @@ -85,6 +50,9 @@ namespace Peek.Recording {

args.append_val (filter);

string extension;
Ffmpeg.add_output_parameters (args, config, out extension);

temp_file = Utils.create_temp_file (extension);
args.append_val ("-y");
args.append_val (temp_file);
Expand Down
46 changes: 46 additions & 0 deletions src/recording/ffmpeg.vala
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
Peek Copyright (c) 2015-2017 by Philipp Wolfer <[email protected]>
This file is part of Peek.
This software is licensed under the GNU General Public License
(version 3 or later). See the LICENSE file in this distribution.
*/

namespace Peek.Recording.Ffmpeg {
public void add_output_parameters (
Array<string> args, RecordingConfig config, out string extension) {
if (config.output_format == OUTPUT_FORMAT_WEBM) {
extension = Utils.get_file_extension_for_format (config.output_format);
args.append_val ("-codec:v");
// args.append_val ("libvpx-vp9");
args.append_val ("libvpx");
args.append_val ("-qmin");
args.append_val ("10");
args.append_val ("-qmax");
args.append_val ("50");
args.append_val ("-crf");
args.append_val ("13");
args.append_val ("-b:v");
args.append_val ("1M");
} else if (config.output_format == OUTPUT_FORMAT_MP4) {
extension = Utils.get_file_extension_for_format (config.output_format);
args.append_val ("-codec:v");
args.append_val ("libx264");
args.append_val ("-preset:v");
args.append_val ("fast");
args.append_val ("-profile:v");
args.append_val ("baseline");
args.append_val ("-pix_fmt");
args.append_val ("yuv420p");
} else {
extension = "mkv";
args.append_val ("-codec:v");
args.append_val ("libx264rgb");
args.append_val ("-preset:v");
args.append_val ("ultrafast");
args.append_val ("-crf");
args.append_val ("0");
}
}
}

0 comments on commit e16205b

Please sign in to comment.