for-vspx3.ps1
(やっぱり,PowerShellだとまどろっこしいので,最近は専ら,cygwinに逆戻り,そしてまた,「chere」を設定したので,使いやすさ倍増だし・・・)
昨日の記事「地デジTSファイルの編集」をバッチ処理するスクリプトを作成。PowerShellで初めて書いたので、Cygwin Bashスクリプトを焼きなおしたものとなっています。
編集作業にはPSのISE(統合環境)ではなく、meadow+PowerShell modeを使っています。
PSを使うのも今日が初めてなので、googleにて「powershell xxxxx」と検索し、トップ数件を参考に作成したので、どのサイトに謝意をというのも困難です。なので、皆さんに感謝。
- PowerShell 実行時コマンドライン引数処理 $args[0]、$args[1]、$args.length
- PowerShell ファイル拡張子の削除 [system.io.path]::GetFilenameWithoutExtension()
- PowerShell 文字列の置換 $newstr=$str -replace "before", "After"
- PowerShell 実行コマンド名(自分自身のファイル名称)$MyInvocation.mycommand.name
- PowerShell エスケープ文字 バッククォート(`)
- PowerShell 文字列連結 "string"+"string"
- PowerShell ファイル出力(エンコーディング) Out-File -encoding default
- PowerShell エコー出力 Write-Host
てな事柄が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}