render videos with 3x bitrate
This commit is contained in:
parent
f2f3f67d10
commit
27c7cb3c7d
3 changed files with 18 additions and 9 deletions
12
src/main.rs
12
src/main.rs
|
@ -79,7 +79,7 @@ macro_rules! resolutions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn bitrate(self) -> &'static str {
|
fn bitrate(self) -> u64 {
|
||||||
match self {
|
match self {
|
||||||
$(Self::$res => $bitrate),+
|
$(Self::$res => $bitrate),+
|
||||||
}
|
}
|
||||||
|
@ -100,12 +100,12 @@ macro_rules! resolutions {
|
||||||
}
|
}
|
||||||
|
|
||||||
resolutions! {
|
resolutions! {
|
||||||
nHD: 640 x 360 at "500k",
|
nHD: 640 x 360 at 500_000,
|
||||||
HD: 1280 x 720 at "1M",
|
HD: 1280 x 720 at 1_000_000,
|
||||||
FullHD: 1920 x 1080 at "2M",
|
FullHD: 1920 x 1080 at 2_000_000,
|
||||||
WQHD: 2560 x 1440 at "3M",
|
WQHD: 2560 x 1440 at 3_000_000,
|
||||||
// TODO qsx muss mal sagen wieviel bitrate für 4k
|
// TODO qsx muss mal sagen wieviel bitrate für 4k
|
||||||
UHD: 3840 x 2160 at "4M"
|
UHD: 3840 x 2160 at 4_000_000
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Deserialize, Serialize)]
|
||||||
|
|
|
@ -110,7 +110,7 @@ enum FfmpegFilter {
|
||||||
pub(crate) struct Ffmpeg {
|
pub(crate) struct Ffmpeg {
|
||||||
inputs: Vec<FfmpegInput>,
|
inputs: Vec<FfmpegInput>,
|
||||||
filter: FfmpegFilter,
|
filter: FfmpegFilter,
|
||||||
video_bitrate: Option<&'static str>,
|
video_bitrate: Option<u64>,
|
||||||
output: FfmpegOutput,
|
output: FfmpegOutput,
|
||||||
|
|
||||||
filter_idx: usize
|
filter_idx: usize
|
||||||
|
@ -182,7 +182,7 @@ impl Ffmpeg {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_video_bitrate(&mut self, bitrate: &'static str) -> &mut Self {
|
pub fn set_video_bitrate(&mut self, bitrate: u64) -> &mut Self {
|
||||||
self.video_bitrate = Some(bitrate);
|
self.video_bitrate = Some(bitrate);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ impl Ffmpeg {
|
||||||
cmd.arg("-c:v").arg("copy");
|
cmd.arg("-c:v").arg("copy");
|
||||||
}
|
}
|
||||||
if venc && self.video_bitrate.is_some() {
|
if venc && self.video_bitrate.is_some() {
|
||||||
cmd.arg("-b:v").arg(self.video_bitrate.unwrap());
|
cmd.arg("-b:v").arg(self.video_bitrate.unwrap().to_string());
|
||||||
}
|
}
|
||||||
if aenc {
|
if aenc {
|
||||||
cmd.arg("-c:a").arg("aac");
|
cmd.arg("-c:a").arg("aac");
|
||||||
|
|
|
@ -443,6 +443,15 @@ impl<'a> Renderer<'a> {
|
||||||
|
|
||||||
// we're done :)
|
// we're done :)
|
||||||
ffmpeg.set_filter_output(overlay);
|
ffmpeg.set_filter_output(overlay);
|
||||||
|
ffmpeg.set_video_bitrate(
|
||||||
|
project
|
||||||
|
.source
|
||||||
|
.metadata
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.source_res
|
||||||
|
.bitrate() * 3
|
||||||
|
);
|
||||||
ffmpeg.run()?;
|
ffmpeg.run()?;
|
||||||
|
|
||||||
Ok(output)
|
Ok(output)
|
||||||
|
|
Loading…
Reference in a new issue