, 5 min read
Rust adalah bahasa pemrograman sistem modern yang didesain untuk kecepatan, keamanan, dan keterandalan. Bahasa ini dikembangkan oleh Mozilla Research dengan kontribusi dari komunitas open-source yang luas.
Rust adalah bahasa pemrograman sistem modern yang didesain untuk kecepatan, keamanan, dan keterandalan. Bahasa ini dikembangkan oleh Mozilla Research dengan kontribusi dari komunitas open-source yang luas.
Rust memiliki sintaks yang mirip dengan bahasa C++ dan memiliki fitur-fitur modern seperti penanganan kesalahan (error handling) yang aman dan sistem kepemilikan (ownership system) yang memungkinkan programer mengelola memori dengan aman tanpa perlu membebani pengguna dengan tugas manual seperti alokasi dan dealokasi memori.
CLI adalah singkatan dari "Command Line Interface", yang merupakan antarmuka pengguna yang memungkinkan pengguna untuk berinteraksi dengan sistem melalui baris perintah teks. Dalam CLI, pengguna memasukkan perintah atau argumen dalam baris perintah dan sistem akan mengeksekusi perintah tersebut. CLI sering digunakan pada sistem operasi dan aplikasi konsol yang tidak memiliki antarmuka pengguna grafis. Contoh dari CLI termasuk Command Prompt di Windows, Terminal di macOS dan Linux, dan shell di UNIX.
Membuat aplikasi CLI menggunakan bahasa pemrograman Rust sangatlah mudah karena banyak library yang siap pakai yang bisa kita gunakan untuk membuat aplikasi berbasis CLI.
Sebelum membuat aplikasi CLI menggunakan Rust, ada beberapa persiapan yang harus di penuhi diantaranya adalah:
Setelah menginstall tools diatas, saatnya kita membuat project menggunakan Cargo
cargo new rust-cli
Kemudian edit file Caro.toml menjadi seperti berikut ini:
[package]
name = "rust-cli"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.1.11", features = ["derive"] }
ffmpeg-cli = "0.1.0"
futures = "0.3.27"
tokio = "1.26.0"
lalu edit file main.rs menjadi
#![allow(unused)]
use clap::Parser;
use std;
use std::process::Stdio;
use ffmpeg_cli::{FfmpegBuilder, File, Parameter};
use futures::{future::ready, StreamExt};
#[derive(Parser)]
struct Cli {
source: String,
destination: String,
}
#[tokio::main]
async fn main() {
let args = Cli::parse();
let builder = FfmpegBuilder::new()
.stderr(Stdio::piped())
.input(File::new(&args.source))
.output(
File::new(&args.destination)
.option(Parameter::KeyValue("c:v", "libx264"))
.option(Parameter::KeyValue("c:a", "copy"))
.option(Parameter::KeyValue("strict", "-2"))
.option(Parameter::KeyValue("crf", "18")),
);
let ffmpeg = builder.run().await.unwrap();
ffmpeg
.progress
.for_each(|x| {
dbg!(x.unwrap());
ready(())
})
.await;
let output = ffmpeg.process.wait_with_output().unwrap();
println!(
"{}\nstderr:\n{}",
output.status,
std::str::from_utf8(&output.stderr).unwrap()
);
}
Lalu build menggunakan perintah divawah ini untuk meng-compile menjadi binary file
cargo build --release
Setelah menjalankan perintah diatas, maka akan terbentuk file binary "target/release/rust-cli"
Untuk menggunakanya kita bisa menjalankan
./target/release/rust-cli
Pada gambar diatas terjadi error karena kita belum memasukan paramater lokasi video dan tujuan video.
Supaya bisa kita gunakan secara global, kita bisa memindahkan file rust-cli ke dalam /usr/local/bin
Jalankan perintah
rust-cli SOURCE_LOKASI_VIDEO DESTINASI_LOKASI_VIDEO
Tags