Automator 서비스에서 쉘 스크립트를 실행하고 출력을 표시하려면 어떻게해야합니까?


6

Automator를 사용하여 쉘 스크립트 (ffmpeg 트랜스 코드를 h264로 변환)를 '서비스'로 실행하여 고해상도 .mov 파일을 마우스 오른쪽 버튼으로 클릭하고 서비스를 선택할 수 있습니다. 잘 작동하지만 ffmpeg이므로 터미널 창에서 출력을 보는 것이 좋습니다. 실시간으로 결과를 볼 수있는 방법이 있습니까?

차이가 없어야하지만 다음과 같은 경우를 대비하여 스크립트가 있습니다.

for f in "$@"
do
/usr/local/bin/ffmpeg -i "$f" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done

답변:


5

이 AppleScript는 지정한 명령으로 터미널 윈도우를 시작합니다.

실행시 {input, parameters}
    응용 프로그램에게 "터미널"을 말하십시오
        활성화
        filesString을 ""로 설정
        입력에서 file_로 반복
            filesString을 filesString & ""& 인용 형식 (file_의 POSIX 경로)으로 설정
        끝 반복
        "for f in"& filesString & "; 스크립트 수행
/ usr / local / bin / ffmpeg -i \ "$ f \"-c : v libx264 -vf yadif -pix_fmt yuv420p -crf 21-사전 설정 느린 -movflags 빠른 시작 -c : a 사본 $ {f %. *} _ h264_yadif. mov
끝난"
    말하다
    리턴 입력
최종 실행

Automator에서 "AppleScript 실행"액션을 생성하여 붙여 넣습니다.


같은 매력으로 작동합니다-정말 고마워요. 아마도 AppleScript와 관련이 있다는 것을 알고 있었지만 파일 경로를 쉘 스크립트로 가져 오는 부두가 확실하지 않았습니다.
user1148106

5

훌륭하고 깨끗한 해결책은 알림 센터를 통해 메시지를 표시하는 것입니다. 스크립트에서 다음 터미널 명령을 실행하십시오.

osascript -e 'display notification "All files converted" with title "ffmpeg converter"'

'osascript'명령은 터미널에서 모든 AppleScript를 실행하며 'display notification'은 좋은 알림을 표시합니다.

여기에 이미지 설명을 입력하십시오


또한 '디스플레이 알림'을 사용할 수 있습니다. 메시지 길이에 제한이 없으며 OK버튼을 쉽게 추가 할 수 있습니다.

osascript -e 'set alertResult to display alert "Bad news :( Error converting your video file." buttons {"OK"} as warning'

여기에 이미지 설명을 입력하십시오

다음 은 Apple Script 명령 참조입니다. 자세한 내용은 '디스플레이 알림'및 '디스플레이 알림'을 찾으십시오.


고마워-일반적인 일에 도움이되지만 ffmpeg의 전체 출력을보고 싶습니다. 또한 s3cmd를 통해 디렉토리를 S3 백업에 동기화하는 비슷한 서비스가 있습니다. 두 경우 모두 전체 출력은 오류를 올바르게 처리하는 데 필수적입니다.
user1148106

1

다음은 내가 작업 한 간단한 솔루션이며 완료되면 명령 출력을 보여줍니다.

  1. 쉘 스크립트 실행 조치 의 출력 을 변수 값 설정으로 전달
  2. 예를 들어 알림을 표시하려면 해당 변수를 사용하십시오.

예를 들어, test.pyPython 스크립트를 사용하면 전달 된 인수 ( "...로 스크립트 실행 ...")를 인쇄하기 만하면됩니다. 스크립트를 실행하면 완료 후 다음과 같이 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.