0

私は、Handbrake CLIを使用してApplescriptを使用して、mv4ファイル全体を640x480にbashconvertします。どこかでパラメーターが変更されているのを見つけたapplescriptがあり、うまく機能します。ただし、時間を節約するために、すべてのファイルを変換する必要があるわけではないため、スクリプトで既に 640x480 のファイルをスキップする必要があります。どうすればそれについて行くでしょうか?

スクリプトは次のとおりです。

--on adding folder items to this_folder after receiving these_items
with timeout of (720 * 60) seconds
tell application "Finder"
    --Get all m4v files that have no label color yet, meaning it hasn’t been processed
    set allFiles to every file of entire contents of ("FIRSTHD:Users:jerry:Desktop:Omkodning" as alias) whose ((name extension is "m4v") and label index is 0)
    --Repeat for all files in above folder
    repeat with i from 1 to number of items in allFiles
        set currentFile to (item i of allFiles)
        try
            --Set to gray label to indicate processing
            set label index of currentFile to 7
            --Assemble original and new file paths
            set origFilepath to quoted form of POSIX path of (currentFile as alias)
            set newFilepath to (characters 1 thru -5 of origFilepath as string) & "mp4'"
            --Start the conversion
            set shellCommand to "nice /Applications/HandBrakeCLI -i " & origFilepath & " -o " & newFilepath & " -e ffmpeg4 -b 1200 -a 1 -E faac -B 160 -R 29.97 -f mp4 –crop 0:0:0:0 crf 24 -w 640 -l 480  ;"
            do shell script shellCommand
            --Set the label to green in case file deletion fails
            set label index of currentFile to 6
            --Remove the old file
            set shellCommand to "rm -f " & origFilepath
            do shell script shellCommand
        on error errmsg
            --Set the label to red to indicate failure
            set label index of currentFile to 2
        end try
    end repeat
end tell
end timeout
--end adding folder items to
4

1 に答える 1

0

わかりやすくするために編集されています....

HandBreakCLIには、解像度が 640x480 の場合に変換しないように指示するオプションがないため、スクリプトでそのビットのロジックを処理する必要があります。簡単にできます。

したがって、スクリプトで行う必要があるのは...

get the video file resolution

If file is not at desired resolution then
    convert the file
else
    skip it
end if

したがって、ここで説明したように、無料で入手できるmediainfoコマンド ライン ツールを使用して、ビデオの解像度を取得できます。

これは、コピー/貼り付けして実行して、それがどのように機能するかを確認できるいくつかのapplescriptコードです...

set filterStr to " | grep pixels | tr -d [:alpha:][:blank:][:punct:]"

set allFiles to (choose file with multiple selections allowed)

repeat with i from 1 to number of items in allFiles
    set currentFile to (item i of allFiles)

    set cmdStr to "/usr/local/bin/mediainfo " & ¬
        quoted form of POSIX path of currentFile & filterStr

    set h to 0
    set w to 0
    try
        set fileInfo to do shell script (cmdStr)
        set {w, h} to every paragraph of fileInfo
    end try

    if w is not 640 and h is not 480 then
        log w & " x " & h

        # Convert to desired resolution....
    end if
end repeat

それが役に立ったことを願っています。

于 2014-07-26T10:38:15.280 に答える