Macがsleep中にffmpegを実行してもCPUがフル稼働しない
解決したいこと
別のPCで録画した動画をMacでエンコードしています。PCで録画が終わるとメールをトリガーにApplescriptを起動し,ffmpegでエンコードするのですが,Macがスリープ状態のときに実行された場合に,CPUが効率コアのみの稼働となりパフォーマンスコアが使われません。
スリープ中に実行された場合でも,CPUをフルに使ってエンコードしたいのですがうまくいきません。
よろしくお願いします。
M2pro(10コア) Mac mini 16GB
Ventura 13.4
発生している問題・エラー
エンコード中にログインするとこのような状態です。
このあとrepeatによる次のエンコードでもログイン後にも関わらず同様です。スクリプト自体を起動し直せば正常に動作します。
また,動画視聴中に実行された場合も,同様の挙動をします。
該当するソースコード
--メールからの呼び出し
set scriptPath to POSIX path of (((path to current user folder) as text) & "Library:Mobile Documents:com~apple~ScriptEditor2:Documents:MP4Enc.scpt")
do shell script "osascript " & quoted form of scriptPath & " > /dev/null 2>&1 &"
--本体
--MP4Enc.scpt
property outFolder : ((path to current user folder) as string) & "mp4:"
property recFolder : POSIX file "/Volumes/rec/"
property ffmpegPath : "/opt/homebrew/Cellar/ffmpeg/6.0/bin/ffmpeg"
on run
set myPID to do shell script "ps aux | grep -i -e 'MP4Enc.scpt' | grep -i -v 'grep' | awk '{print $2}'"
if myPID ≠ "" then do shell script "caffeinate -w " & myPID & " >/dev/null 2>&1 &"
tell application "Finder" to set fileList to every file of folder recFolder whose name ends with "【SP】.ts"
repeat with aFile in fileList
set aFilePath to POSIX path of (aFile as string)
tell application "Finder" to set aName to name of aFile
set outFilePath to POSIX path of (outFolder & text 1 thru -4 of aName & ".mp4")
try
do shell script ffmpegPath & " -i " & quoted form of aFilePath & " -c:v libx264 -c:a aac -y " & quoted form of outFilePath
end try
end repeat
end run
自分で試したこと
ffmpegのオプションに "-threads 10" を入れてみる。
メールからの呼び出し時にスケジュールでwakeしてみる。
do shell script "sudo pmset schedule wake \"$(date -j -v+3S \"+%m/%d/%y %H:%M:%S\")\"" user name "XXXX" password "XXXX" with administrator privileges
ログイン後,スクリプトに"renice -15"してみる。
上記全て効果ありませんでした。
また,
"ps aux -l"で確認すると,Priority値が通常起動時で31,スリープ中に起動時で4でした。
メールから呼び出し時に
"sudo nice -15"を付けてみましたが,こちらはうまく起動されませんでした。
0 likes