Coding

Script Rename + Convert + Thumbnail dengan FFmpeg

0
Please log in or register to do it.

Rekomendasi Format Thumbnail

JPG – lebih bagus untuk thumbnail (ukuran kecil, kompatibel universal)

Script Bash (Linux/Mac)

#!/bin/bash

INPUT_DIR="./videos"      # Ganti dengan path folder kamu
OUTPUT_DIR="./output"     # Folder hasil output

mkdir -p "$OUTPUT_DIR"

counter=1

# Loop semua file mp4 dan ts
for file in "$INPUT_DIR"/*.mp4 "$INPUT_DIR"/*.ts; do
    # Skip jika file tidak ada
    [ -f "$file" ] || continue
    
    new_name="video${counter}"
    
    echo "Processing: $file -> ${new_name}"
    
    # Convert ke MP4
    ffmpeg -i "$file" \
        -c:v libx264 \
        -c:a aac \
        -preset fast \
        -crf 23 \
        "$OUTPUT_DIR/${new_name}.mp4" \
        -y
    
    # Generate Thumbnail (ambil frame di detik ke-5)
    ffmpeg -i "$OUTPUT_DIR/${new_name}.mp4" \
        -ss 00:00:05 \
        -vframes 1 \
        -q:v 2 \
        "$OUTPUT_DIR/${new_name}.jpg" \
        -y
    
    echo "✓ Done: ${new_name}.mp4 + ${new_name}.jpg"
    echo "---"
    
    ((counter++))
done

echo "Selesai! Total: $((counter-1)) file diproses"

Script Windows (PowerShell)

$InputDir  = "C:\Videos"     # Ganti path kamu
$OutputDir = "C:\Output"     # Folder hasil

New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null

$counter = 1

# Ambil semua file mp4 dan ts
$files = Get-ChildItem -Path $InputDir -Include "*.mp4","*.ts" -File

foreach ($file in $files) {
    $newName = "video$counter"
    
    Write-Host "Processing: $($file.Name) -> $newName"
    
    # Convert ke MP4
    ffmpeg -i "$($file.FullName)" `
        -c:v libx264 `
        -c:a aac `
        -preset fast `
        -crf 23 `
        "$OutputDir\$newName.mp4" `
        -y
    
    # Generate Thumbnail (frame di detik ke-5)
    ffmpeg -i "$OutputDir\$newName.mp4" `
        -ss 00:00:05 `
        -vframes 1 `
        -q:v 2 `
        "$OutputDir\$newName.jpg" `
        -y
    
    Write-Host "Done: $newName.mp4 + $newName.jpg"
    
    $counter++
}

Write-Host "Selesai! Total: $($counter-1) file"

Penjelasan Parameter FFmpeg

ParameterFungsi
-c:v libx264Codec video H.264 (paling kompatibel)
-c:a aacCodec audio AAC
-preset fastKecepatan encode (fast/medium/slow)
-crf 23Kualitas video (0=terbaik, 51=terburuk, 18-28 ideal)
-ss 00:00:05Ambil thumbnail di detik ke-5
-vframes 1Ambil 1 frame saja
-q:v 2Kualitas JPG (2=terbaik, 31=terburuk)
-yOverwrite otomatis tanpa konfirmasi

Cara Pakai

Linux/Mac:

chmod +x script.sh
./script.sh

Windows:

Klik kanan script.ps1 -> Run with PowerShell

Tips Tambahan

Jika video kurang dari 5 detik, ganti -ss 00:00:05 dengan -ss 00:00:01
Jika ingin kualitas lebih tinggi, ganti -crf 23 dengan -crf 18
Jika ingin proses lebih cepat (tanpa re-encode jika sudah mp4):

# Untuk file yang sudah MP4, bisa copy stream langsung
ffmpeg -i input.mp4 -c copy output.mp4

Fix untuk Git Bash di Windows

libavutil      60. 29.100 / 60. 29.100
libavcodec     62. 29.101 / 62. 29.101
libavformat    62. 13.102 / 62. 13.102
libavdevice    62.  4.100 / 62.  4.100
libavfilter    11. 15.101 / 11. 15.101
libswscale      9.  7.100 /  9.  7.100
libswresample   6.  4.100 /  6.  4.100
Missing argument for option 'v'.
Error splitting the argument list: Invalid argu

Error terjadi karena backtick (`) adalah syntax PowerShell, bukan Bash. Di Git Bash pakai backslash (\$ untuk line continuation.

Fix untuk Git Bash di Windows

Error terjadi karena backtick (`) adalah syntax PowerShell, bukan Bash. Di Git Bash pakai backslash (\$ untuk line continuation.

Buat file convert.sh:

Script untuk Git Bash (Windows)

#!/bin/bash

INPUT_DIR="/c/Videos"       # Ganti path folder kamu
OUTPUT_DIR="/c/Output"      # Ganti path output

# Contoh jika di Desktop:
# INPUT_DIR="/c/Users/NamaKamu/Desktop/videos"
# OUTPUT_DIR="/c/Users/NamaKamu/Desktop/output"

mkdir -p "$OUTPUT_DIR"

counter=1

for file in "$INPUT_DIR"/*.mp4 "$INPUT_DIR"/*.ts; do
    [ -f "$file" ] || continue
    
    new_name="video${counter}"
    
    echo "Processing: $file -> ${new_name}"
    
    # Convert ke MP4
    ffmpeg -i "$file" -c:v libx264 -c:a aac -preset fast -crf 23 "$OUTPUT_DIR/${new_name}.mp4" -y
    
    # Generate Thumbnail di detik ke-5
    ffmpeg -i "$OUTPUT_DIR/${new_name}.mp4" -ss 00:00:05 -vframes 1 -q:v 2 "$OUTPUT_DIR/${new_name}.jpg" -y
    
    echo "Done: ${new_name}.mp4 + ${new_name}.jpg"
    echo "---"
    
    ((counter++))
done

echo "Selesai! Total: $((counter-1)) file diproses"

Cara Pakai di Git Bash

# 1. Masuk ke folder tempat script disimpan
cd /c/Users/NamaKamu/Desktop

# 2. Beri izin execute
chmod +x convert.sh

# 3. Jalankan
./convert.sh

Format Path di Git Bash

Windows PathGit Bash Path
C:\Videos/c/Videos
C:\Users\Budi\Desktop/c/Users/Budi/Desktop
D:\MyFiles/d/MyFiles

Atau Jalankan Langsung Tanpa Script

mkdir -p /c/Output && counter=1 && for file in /c/Videos/*.mp4 /c/Videos/*.ts; do [ -f "$file" ] || continue; ffmpeg -i "$file" -c:v libx264 -c:a aac -preset fast -crf 23 "/c/Output/video${counter}.mp4" -y && ffmpeg -i "/c/Output/video${counter}.mp4" -ss 00:00:05 -vframes 1 -q:v 2 "/c/Output/video${counter}.jpg" -y && echo "Done video${counter}" && ((counter++)); done

Ganti /c/Videos dan /c/Output sesuai path kamu

Perbandingan Platform Video Hosting

Perbandingan

PlatformFree StorageDirect LinkEmbedKecepatanPraktis
PixeldrainUnlimited*✅ Ya✅ Ya⭐⭐⭐⭐⭐⭐⭐⭐
Cloudflare R210GB/bulan✅ YaManual⭐⭐⭐⭐⭐⭐⭐⭐
Cloudflare Stream❌ Berbayar✅ Ya✅ Ya⭐⭐⭐⭐⭐⭐⭐⭐⭐

*Pixeldrain free ada batasan bandwidth per hari

Penyimpanan File di Telegram (Server Side)
𝐂𝐀𝐍𝐓𝐈𝐊 𝐁𝐄𝐍𝐈𝐍𝐆 𝐈𝐍𝐃𝐎

Your email address will not be published. Required fields are marked *