Skip to content

Commit 4706cb7

Browse files
committed
feat: add preview image generation
1 parent e696124 commit 4706cb7

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

src/ffmpeg.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,22 @@ fn run_command(command: &str) {
2020
println!("{}", result);
2121
}
2222

23-
// fn create_preview_image() {}
24-
2523
// fn create_preview_gif() {}
2624

25+
pub fn create_preview_image(input: String, output: String) {
26+
let path = format!("{}/lg", output);
27+
if !fs::metadata(&path).is_ok() {
28+
fs::create_dir_all(&path).unwrap();
29+
}
30+
31+
let command = format!(
32+
"ffmpeg -i {} -vf scale=iw*sar:ih,setsar=1 -ss 00:00:05 -t 1 -vframes 1 {}/{}.jpg",
33+
input, path, output
34+
);
35+
36+
run_command(&command);
37+
}
38+
2739
pub fn create_thumbnails(input: String, output: String) {
2840
println!("\ncreate_thumbnails");
2941

src/main.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
use crate::ffmpeg::create_preview_image;
12
use clap::{App, Arg};
23
use std::process;
34

45
enum Flags {
56
_Gif,
67
HLS,
78
_Metadata,
8-
_PreviewImage,
9+
PreviewImage,
910
Thumbnails,
1011
}
1112

@@ -33,7 +34,7 @@ impl Flags {
3334
Flags::_Gif => "gif",
3435
Flags::HLS => "HLS",
3536
Flags::_Metadata => "metadata",
36-
Flags::_PreviewImage => "preview_image",
37+
Flags::PreviewImage => "preview_image",
3738
Flags::Thumbnails => "thumbs",
3839
}
3940
}
@@ -68,6 +69,13 @@ fn main() {
6869
.help("Generate thumbnails")
6970
.takes_value(false),
7071
)
72+
.arg(
73+
Arg::with_name(Flags::PreviewImage.as_str())
74+
.short('p')
75+
.long(Flags::PreviewImage.as_str())
76+
.help("Generate preview")
77+
.takes_value(false),
78+
)
7179
.arg(
7280
Arg::with_name(Flags::HLS.as_str())
7381
.short('h')
@@ -94,6 +102,11 @@ fn main() {
94102
create_thumbnails(out.file_name.clone(), path.clone());
95103
}
96104

105+
let gen_preview_image = matches.is_present(Flags::PreviewImage.as_str());
106+
if gen_preview_image {
107+
create_preview_image(out.file_name.clone(), path.clone());
108+
}
109+
97110
let gen_hls = matches.is_present(Flags::HLS.as_str());
98111
if gen_hls {
99112
create_hls_encoding(out.file_name.clone(), path.clone());
@@ -110,7 +123,7 @@ fn main() {
110123
[ ] FFMPEG to generate media
111124
[x] thumbnails
112125
[ ] gif
113-
[ ] preview image
126+
[x] preview image
114127
[x] HLS
115128
[x] DASH
116129
[ ] Metadata

0 commit comments

Comments
 (0)