# 🎬 Python Video Bitrate Reducer โปรแกรมลดขนาดไฟล์วิดีโอด้วยการลด Bitrate แบบ Batch Processing พร้อม GPU Acceleration (AMD RX 5700 XT) ![Screenshot](https://raw.githubusercontent.com/ITCSsDeveloper/Python_Video_Bitrate_Reducer/refs/heads/main/Screenshort.png) ## ✨ คุณสมบัติ - 🚀 **GPU Acceleration** - รองรับ AMD (AMF), NVIDIA (NVENC), และ Intel (QSV) Encoders - 📊 **Real-time Progress** - แสดงความคืบหน้าแบบเรียลไทม์พร้อม Progress Bar - ⚡ **Batch Processing** - ประมวลผลหลายไฟล์พร้อมกัน (Multi-threading) - 💾 **ประหยัดพื้นที่** - ลดขนาดไฟล์ได้มากถึง 50-80% โดยคุณภาพคงเดิม - 🎯 **ปรับแต่งได้** - เลือก Bitrate Reduction % และจำนวน Worker ตามต้องการ - 🌐 **รองรับภาษาไทย** - รองรับชื่อไฟล์และ Path ภาษาไทย/Unicode อย่างสมบูรณ์ - 📁 **รองรับหลายรูปแบบ** - MP4, MOV, MKV, AVI, WEBM, FLV - 🎨 **GUI ใช้งานง่าย** - อินเทอร์เฟซภาษาไทยที่เข้าใจง่าย - 📈 **สถิติครบถ้วน** - แสดงขนาดไฟล์ก่อน-หลัง และพื้นที่ที่ประหยัดได้ ## 📋 ความต้องการของระบบ ### ซอฟต์แวร์ - **Windows 10/11** (64-bit) - **Python 3.8+** (สำหรับการพัฒนา) - **FFmpeg 4.0+** (จำเป็น - ดูวิธีติดตั้งด้านล่าง) ### ฮาร์ดแวร์ - **GPU**: AMD (AMF), NVIDIA (NVENC), หรือ Intel (QSV) สำหรับ Hardware Encoding - ตัวอย่าง: AMD RX 5700 XT, NVIDIA GTX 1060+, Intel HD Graphics 630+ - **RAM**: 4GB ขึ้นไป (แนะนำ 8GB+ สำหรับการประมวลผลหลายไฟล์) - **พื้นที่ว่าง**: ขึ้นอยู่กับขนาดไฟล์ที่ต้องการประมวลผล ## 🔧 การติดตั้ง ### 1️⃣ ติดตั้ง FFmpeg #### วิธีที่ 1: ดาวน์โหลดและแตกไฟล์ (แนะนำสำหรับผู้ใช้ทั่วไป) 1. ดาวน์โหลด FFmpeg จาก: https://www.gyan.dev/ffmpeg/builds/ - เลือก **ffmpeg-release-essentials.zip** (ขนาดเล็กกว่า) 2. แตกไฟล์ไปที่โฟลเดอร์โปรเจค 3. คัดลอก `ffmpeg.exe` และ `ffprobe.exe` จาก `bin\` มาไว้ในโฟลเดอร์โปรเจค: ```powershell # ตัวอย่าง: ถ้าแตกไฟล์ไว้ที่ D:\ffmpeg-8.0 robocopy "D:\ffmpeg-8.0\bin" "D:\Python_VDO_Converter" ffmpeg.exe ffprobe.exe ``` #### วิธีที่ 2: ติดตั้งผ่าน Chocolatey (แนะนำสำหรับ Developer) ```powershell # ติดตั้ง Chocolatey ก่อน (ถ้ายังไม่มี): https://chocolatey.org/install choco install ffmpeg ``` #### วิธีที่ 3: เพิ่ม FFmpeg เข้า PATH 1. แตกไฟล์ FFmpeg ไปที่ใดก็ได้ เช่น `C:\ffmpeg` 2. เพิ่ม Path เข้า System Environment Variables: - เปิด "Edit the system environment variables" - คลิก "Environment Variables" - เพิ่ม `C:\ffmpeg\bin` เข้าไปใน "Path" 3. ทดสอบด้วยคำสั่ง: ```powershell ffmpeg -version ``` ### 2️⃣ ติดตั้ง Python Dependencies #### สำหรับผู้ใช้ทั่วไป (ใช้ไฟล์ .exe) - **ไม่ต้องติดตั้ง Python** - ดาวน์โหลดไฟล์ .exe จาก [Releases](https://drive.google.com/drive/folders/1vdvu38JKDiRI9zVKzQ7x6_s91eI53m9e?usp=sharing) - แตกไฟล์และเปิด `VideoConverter.exe` #### สำหรับ Developer (รันจาก Source Code) ```powershell # Clone repository git clone https://github.com/ITCSsDeveloper/Python_Video_Bitrate_Reducer.git cd Python_Video_Bitrate_Reducer # สร้าง Virtual Environment python -m venv .venv .venv\Scripts\activate # ติดตั้ง Dependencies pip install -r requirements.txt ``` ### 3️⃣ สร้างไฟล์ .exe (Optional - สำหรับ Developer) ```powershell # เปิด Virtual Environment .venv\Scripts\activate # สร้าง .exe พร้อม FFmpeg pyinstaller --noconsole --onefile ^ --add-binary "ffmpeg.exe;." ^ --add-binary "ffprobe.exe;." ^ --name "VideoConverter" ^ video_converter_gui.py # ไฟล์ .exe จะอยู่ที่ dist\VideoConverter.exe ``` ## 🚀 วิธีใช้งาน ### สำหรับผู้ใช้ทั่วไป (.exe) 1. เปิดโปรแกรม `VideoConverter.exe` 2. **Browse Input Folder** - เลือกโฟลเดอร์ที่มีไฟล์วิดีโอ 3. **Browse Output Folder** - เลือกโฟลเดอร์สำหรับบันทึกไฟล์ (หรือเว้นว่างให้สร้างโฟลเดอร์ `Output` อัตโนมัติ) 4. **Bitrate Reduction %** - ตั้งค่าเปอร์เซ็นต์การลด Bitrate (แนะนำ 30-50%) 5. **Max Workers** - จำนวนไฟล์ที่ประมวลผลพร้อมกัน (แนะนำ 2-4) 6. คลิก **เริ่มแปลงไฟล์** ### สำหรับ Developer (Python) ```powershell # เปิด Virtual Environment .venv\Scripts\activate # รันโปรแกรม python video_converter_gui.py ``` ## ⚙️ การตั้งค่า GPU Encoder โปรแกรมใช้ **h264_amf** (AMD) เป็นค่าเริ่มต้น หากต้องการเปลี่ยน GPU Encoder: ```python # เปิดไฟล์ video_converter_gui.py # แก้ไขบรรทัดที่ 12: # สำหรับ AMD GPU_ENCODER = 'h264_amf' # สำหรับ NVIDIA GPU_ENCODER = 'h264_nvenc' # สำหรับ Intel GPU_ENCODER = 'h264_qsv' # สำหรับ CPU (ช้ากว่า แต่รองรับทุกเครื่อง) GPU_ENCODER = 'libx264' ``` ## 📊 ตัวอย่างผลลัพธ์ ``` 📊 ไฟล์ทั้งหมด: 10 ไฟล์ ✅ แปลงสำเร็จ: 10 ไฟล์ ❌ แปลงไม่สำเร็จ: 0 ไฟล์ 💾 ขนาดไฟล์เดิมรวม: 5.23 GB 💾 ขนาดไฟล์ใหม่รวม: 2.15 GB 🎯 ประหยัดพื้นที่รวม: 3.08 GB (58.9%) ``` ## 🐛 แก้ปัญหาที่พบบ่อย ### ❌ Error: ไม่พบ FFmpeg **แก้ไข**: ตรวจสอบว่า `ffmpeg.exe` และ `ffprobe.exe` อยู่ในโฟลเดอร์เดียวกับโปรแกรม หรืออยู่ใน PATH ```powershell # ตรวจสอบว่า FFmpeg อยู่ใน PATH หรือไม่ where ffmpeg ``` ### ❌ UnicodeDecodeError **แก้ไข**: อัปเดตโค้ดให้รองรับ Unicode (โปรแกรมเวอร์ชันใหม่แก้ไขแล้ว) ### ❌ GPU Encoder ไม่ทำงาน **แก้ไข**: 1. ตรวจสอบว่า GPU Driver เป็นเวอร์ชันล่าสุด 2. ลองเปลี่ยน Encoder ตามการ์ดจอของคุณ (ดู [การตั้งค่า GPU Encoder](#%EF%B8%8F-การตั้งค่า-gpu-encoder)) 3. ถ้ายังไม่ได้ ลองใช้ `libx264` (CPU encoding) ### ⚠️ ไฟล์เสียงขาดหาย **สาเหตุ**: โปรแกรมใช้ `-c:a copy` (คัดลอกเสียงตรงๆ) - ถ้าไฟล์ต้นฉบับมีปัญหา output อาจผิดพลาด **แก้ไข**: เปลี่ยนเป็น `-c:a aac -b:a 128k` ในโค้ด (บรรทัดที่ 182) ## 📄 License ### FFmpeg License โปรแกรมนี้ใช้ **FFmpeg** ซึ่งเป็นซอฟต์แวร์ภายใต้ **LGPL v2.1** และ **GPL v2+** - FFmpeg Official Site: https://ffmpeg.org/ - FFmpeg License: https://ffmpeg.org/legal.html - **หมายเหตุ**: การใช้ FFmpeg ที่ต้อง link แบบ static อาจต้องปฏิบัติตาม GPL (ควรแจกจ่าย ffmpeg.exe แยก)