ffmpegでtsファイルをmp4ファイルに変換するpowersehllスクリプト

PoweShell コンピュータ
PowerShell

コマンドラインで実行するffmpeg.exeをpowersehllスクリプトから実行します。初回引数無しでスクリプトを実行すると、ショートカットをデスクトップに配置しますので、ショートカットアイコンに.tsファイルをドロップ&ドロップするとエンコードが開始されます。

ffmpegのオプションや各種パスを決め打ちしていますので、ご利用の際は実行環境に合わせて変更してください。

ffmpegダウンロード~インストール

  1. 左側のフレームの「download」をクリック
  2. Windowsの画像をクリック
  3. Windows Buildsをクリック
  4. Download Buildをクリック

ダウンロードしたファイルをお好みのフォルダに展開します。次にスクリプト内の変数$FFMPEGPathに展開したffmpeg.exeへのパスをセットしてください。

スクリプト

<#
.SYNOPSIS
.tsファイルを解像度1280x720の.mp4ファイルに変換します。
<CommonParameters> はサポートしていません

.DESCRIPTION
音声は再圧縮しません。

.EXAMPLE
.\TStoMP4-1280x720.ps1 
引数なしで実行するとデスクトップにショートカットを作成します。

.EXAMPLE
.\TStoMP4-1280x720.ps1 パス.ts 
デスクトップのショートカットから実行

.PARAMETER $TSPath
変換元の.tsファイルのパス

#>


$ErrorActionPreference = "STOP"

$ScriptDirectory = Split-Path $PSCommandPath -Parent
$FFMPEGPath = "C:\Users\karet\Documents\tools\ffmpeg\bin\ffmpeg.exe"



echo $Args
echo $ScriptDirectory
echo $FFMPEGPath

if (0 -eq $Args.Length) {
    # インストール
    $TargetPath = Join-Path ([Environment]::GetFolderPath('desktop')) "\MP4変換1280x720.lnk"
    $PowershellPath = Join-Path $PSHOME "powershell.exe"

    $WSH = New-Object -ComObject WScript.Shell
    $Shortcut = $WSH.CreateShortcut($TargetPath)
    $Shortcut.TargetPath = $PowershellPath
    $Shortcut.Arguments = "-NoExit -File """ + $PSCommandPath + """"
    $Shortcut.IconLocation = ($PowershellPath + ",0")
    $Shortcut.Description = "ffmpegで解像度1280x720の.mp4ファイルに変換します。"
    $Shortcut.WorkingDirectory = $ScriptDirectory
    $Shortcut.Save()

    exit
}

$TSPath = $Args[0]
if (-not(Test-Path -LiteralPath $TSPath)) {
    exit
}
echo $TSPath

$MP4Path = Join-Path (Split-Path $TSPath -Parent) ([System.IO.Path]::GetFileNameWithoutExtension($TSPath) + ".mp4")
if (Test-Path -LiteralPath $MP4Path) {
    Remove-Item -LiteralPath $MP4Path -Force
}
echo $MP4Path

$LogPath = Join-Path $ScriptDirectory "TStoMP4-1280x720.log"
echo $LogPath

Start-Process $FFMPEGPath -ArgumentList "-i ""${TSPath}"" -vf bwdif=1 -c:v libx264 -preset medium -crf 23 -c:a copy -bsf:a aac_adtstoasc -s 1280x720 ""${MP4Path}""" -Wait -NoNewWindow -RedirectStandardError $LogPath

初回はpowersehll.exeから引数無しで実行してください。デスクトップに「MP4変換1280×720」というショートカットアイコンが作成されます。そちらにtsファイルをドラック&ドロップすると変換が開始されます。

ffmpegオプション

-vf bwdif=1
インタレース解除
-c:v libx264
映像コーデック:x264
-preset medium
画質のプリセット:midium
-crf 23
固定品質:23
-c:a copy -bsf:a aac_adtstoasc
音声コーディク:変換しない:AAC
-s 1280x720
解像度:1280×720

コメント