Convert Video with Powershell

โดยปกติวีดีโอก็จะมีไฟล์นามสกุลอยู่มากมาย ไม่ว่าจะเป็น mp4, avi, trec, mov m4v, mpeg เวลาเปิดดูก็ต้องหาโปรแกรมที่รองรับนามสกุลไฟล์เหล่านี้ เวลาแปลงวีดีโอหลาย ๆ ไฟล์ หากต้องมานั่งคลิกคงไม่ไหว เราจะมาเขียน Powershell Script แปลงให้เป็น mp4 ซึ่งเป็นมาตรฐานกัน


Handbrake

โปรแกรม Convert ก็มีอยู่มากมาย แต่จะขอแนะนำ Handbrake เพราะเป็น Open Source และสามารถใช้ Command ในการเขียนเป็น Script เพื่อ Convert ได้ จะสะดวกมากหากเราต้อง Convert Video หลาย ๆ ไฟล์ เราจะได้ไม่ต้องมานั่งเสียเวลา แต่ถ้าใครไม่ถนัดใช้ Command ก็ใช้แบบโปรแกรมก็ได้ครับ

Handbrake CLI Script

  • ดาวน์โหลด Handbrake CLI โดยเลือกให้ตรงกับ OS
  • Format Command ของ Handbrake CLI
# PS C:\> HandBrakeCLI -i filename.avi -o filename.mp4 -e x264 -q 22 -r 30 -B 352 -X 1152 -O
i input
o output
e video format H264
q video quality 22 RF for web mp4
r framerate 30 frames / second
B audio bitrate 64 for stereo and 160 for mono
x max width 1152
  • ทีนี้เราก็มาเขียน Powershell Script ชื่อว่า handbrake.ps1 แปลงวีดีโอนามสกุล .avi เป็น .mp4 โดยวนลูป แปลงทุกไฟล์ในโฟลเดอร์ Video
$filelist = Get-ChildItem "E:\Video" -filter *.avi -recurse

$num = $filelist | measure
$filecount = $num.count

$i = 0;
ForEach ($file in $filelist)
{
    $i++;
    $oldfile = $file.DirectoryName + "\" + $file.BaseName + $file.Extension;
    $newfile = $file.DirectoryName + "\" + $file.BaseName + ".mp4";
     
    $progress = ($i / $filecount) * 100
    $progress = [Math]::Round($progress,2)

    Clear-Host
    Write-Host -------------------------------------------------------------------------------
    Write-Host Handbrake Batch Encoding 
    Write-Host "Processing - $oldfile"
    Write-Host "File $i of $filecount - $progress%"
    Write-Host -------------------------------------------------------------------------------

    Start-Process "C:\Program Files\Handbrake\HandBrakeCLI.exe" -ArgumentList "-i `"$oldfile`" -o `"$newfile`" -f mp4 -e x264 -q 22 -r 30 -B 352 -X 1152 -O" -Wait -NoNewWindow
}
  • จากนั้นก็รันผ่าน Powershell

อ่านเพิ่มเติม : https://bit.ly/2vOIaJp


Leave a Reply

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