for-vspx3.ps1

(やっぱり,PowerShellだとまどろっこしいので,最近は専ら,cygwinに逆戻り,そしてまた,「chere」を設定したので,使いやすさ倍増だし・・・)
昨日の記事「地デジTSファイルの編集」をバッチ処理するスクリプトを作成。PowerShellで初めて書いたので、Cygwin Bashスクリプトを焼きなおしたものとなっています。
編集作業にはPSのISE(統合環境)ではなく、meadowPowerShell modeを使っています。
PSを使うのも今日が初めてなので、googleにて「powershell xxxxx」と検索し、トップ数件を参考に作成したので、どのサイトに謝意をというのも困難です。なので、皆さんに感謝。

てな事柄がCygwinと違ってました。結局ほとんど?でも、変数名の$とかは同じ。

powershellスクリプト for-vspx3.ps1(Shift-JISで保存)

ffmpeg64.exeへのパス(MediaCoder/codecs)は通してますが、tsMuxeR.exeへのパス(MediaCoder/tools)へのパスは通してません。その為、tsMuxeR.exeはフルパスで記述する必要がありました。

# DY-UD200+RecTestで録画した地デジTSファイルを
# Corel VideoStudio Pro X3 用M2TS(MPEG-2,AC3)に変換

if ( $args.length -eq 0 )
{
    Write-Host ( "usage: "+$MyInvocation.mycommand.name+" <TS-file> [<M2TS-file>]" )
    exit 1
}

$ipath=$args[0]
$ifile=Split-Path $ipath -leaf

##### $iname=$ifile -replace "`.ts", ""
$iname=[system.io.path]::GetFilenameWithoutExtension($ifile)
$mfile=$iname+".meta"
$video=$iname+"-temp.m2v"
$audio=$iname+"-temp.ac3"

if ( $arg.length -eq 2 ) 
{
    $ofile=$args[1]
}
else
{
    $ofile=$iname+".m2ts"
}

ffmpeg64.exe -y -i $ipath -vcodec copy $video -acodec ac3 -ab 192k $audio

$mssg1="MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500"
$mssg2="V_MPEG-2, `"${video}`", fps=29.970"
$mssg3="A_AC3, `"${audio}`""

$mssg1| Out-File -encoding default -filepath $mfile 
$mssg2| Out-File -encoding default -append -filepath $mfile 
$mssg3| Out-File -encoding default -append -filepath $mfile 

d:\Program` Files\MediaCoder\tools\tsMuxeR.exe $mfile $ofile

# rm -f $video $audio $mfile

rm(Remove-Item)の書き方を新たに憶えました(2010.5.22)。

rm -Path $video, $audio, $mfile -Force

bashスクリプト for-vspx3.sh (UTF-8で保存)

#! /usr/bin/sh
# DY-UD200+RecTestで録画した地デジTSファイルを
# Corel VideoStudio Pro X3 用M2TS(MPEG-2,AC3)に変換

if [ $# -eq 0 ]; then
    echo "usage: `basename $0` <TS-file> [<M2TS-file>]"
    exit 1
fi

ipath=$1
ifile=`basename ${ipath}`
iname=${ifile%%.ts}
mfile="$iname.meta"
video="${iname}-temp.m2v"
audio="${iname}-temp.ac3"

if [ $# -eq 2 ]; then
    ofile=`cygpath -w $2`;
else
    ofile="$iname.m2ts";
fi

ipath=`cygpath -w ${ipath}`
ffmpeg64.exe -y -i ${ipath} -vcodec copy ${video} -acodec ac3 -ab 192k ${audio}

echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500" >$mfile
echo "V_MPEG-2, \"${video}\", fps=29.970" >>$mfile
echo "A_AC3, \"${audio}\"" >>$mfile

/cygdrive/d/Program\ Files/MediaCoder/tools/tsMuxeR.exe ${mfile} ${ofile}

rm -f ${video} ${audio} ${mfile}

実行ポリシー

PSでスクリプトを実行すると、次のメッセージが表示され、実行を拒否されました。

スクリプトの実行がシステムで無効になっているため、・・・

つぎのように実行ポリシーとやらを設定しました。

 PS > Set-ExecutionPolicy RemoteSigned
  • 有効な列挙値: Unrestricted、RemoteSigned、AllSigned、Restricted、Default、Bypass、Undefined

ということですが、詳細は不明。