728x90
https://crates.io/crates/video-rs
video-rs는 ffmpeg의 libav 계열 라이브러리를 사용하는 Rust용 범용 비디오 라이브러리입니다. 읽기, 쓰기, 믹싱, 인코딩 및 디코딩과 같은 많은 일반적인 비디오 작업에 안정적이고 Rusty 인터페이스를 제공합니다.
설치
먼저 ffmpeg 라이브러리를 설치합니다.
그런 다음 Cargo.toml의 종속성에 다음을 추가합니다:
video-rs = "0.4"
ndarray 크레이트에서 원시 프레임을 사용할 수 있게 하려면 ndarray 기능을 사용합니다:
video-rs = { version = "0.4", features = ["ndarray"] }
예제
Decode a video and print the RGB value for the top left pixel:
use video_rs::{self, Decoder, Locator};
fn main() {
video_rs::init().unwrap();
let source = Locator::Url(
"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
.parse()
.unwrap(),
);
let mut decoder = Decoder::new(&source)
.expect("failed to create decoder");
for frame in decoder.decode_iter() {
if let Ok((_, frame)) = frame {
let rgb = frame
.slice(ndarray::s![0, 0, ..])
.to_slice()
.unwrap();
println!(
"pixel at 0, 0: {}, {}, {}",
rgb[0],
rgb[1],
rgb[2],
);
} else {
break;
}
}
}
Rust에서 비디오 불러와서 비디오 저장하기(crowd.mp4불러와서 man.mp4로 저장)
use video_rs::{self, Decoder, Locator};
use std::path::PathBuf;
use ndarray::Array3;
use video_rs::{Encoder, EncoderSettings, Time};
fn main() {
video_rs::init().unwrap();
let source:Locator=PathBuf::from("crowd.mp4").into();
let mut decoder = Decoder::new(&source)
.expect("failed to create decoder");
let destination: Locator = PathBuf::from("man.mp4").into();
let settings = EncoderSettings::for_h264_yuv420p(1280, 720, false);
let mut encoder = Encoder::new(&destination, settings)
.expect("failed to create encoder");
let duration: Time = Time::from_nth_of_a_second(24);
let mut position = Time::zero();
for frame in decoder.decode_iter() {
if let Ok((_, frame)) = frame {
let rgb = frame
.slice(ndarray::s![0, 0, ..])
.to_slice()
.unwrap();
encoder
.encode(&frame, &position)
.expect("failed to encode frame");
// Update the current position and add the inter-frame
// duration to it.
position = position.aligned_with(&duration).add();
} else {
break;
}
}
encoder.finish().expect("failed to finish encoder");
}
'Rust' 카테고리의 다른 글
[Rust] error: failed to run custom build command for `clang-sys v1.6.1` (80) | 2023.07.04 |
---|---|
[Rust] error:linker link.exe not found (17) | 2023.07.04 |
[Rust] ONNX모델로 detection (23) | 2023.07.02 |
[Rust-Python] PyO3 (96) | 2023.06.30 |
Rust Trait (160) | 2023.06.20 |