iPhone을 QuickTime으로 미러링하는 AppleScript

많은 사람들과 마찬가지로 저는 iPhone에서 모바일 게임을 하는 것에 대해 유죄입니다. 컨트롤러를 지원하는 게임의 경우 더 큰 화면에서 비디오를 스트리밍합니다. 내 previous article에서 언급했듯이 가끔 운동용 자전거를 타곤 합니다. 이 경우 컨트롤러로 더 큰 화면에서 플레이할 수 있도록 QuickTime을 통해 iOS 기기를 미러링합니다.

수동 단계



내 iPhone을 QuickTime에 미러링하려면 완료해야 하는 여러 단계가 있습니다.
  • 활성화KeepingYouAwake(모니터가 입력 없이 절전 모드로 전환되지 않도록)
  • QuickTime 열기
  • 새 동영상 녹화 만들기
  • 비디오 입력을 위해 내 iPhone 선택
  • 오디오 입력을 위해 내 iPhone 선택
  • 볼륨 슬라이더를 100%로 드래그합니다.
  • Quicktime 창 최대화

  • 달콤한 자동화



    이 GIF는 7가지 수동 단계를 모두 포함하는 자동화를 보여줍니다. Alfred을 사용하여 시작합니다.

    Mirror ios alfred

    코드



    내가 편파적일 수 있지만 소스 코드는 내 생각에 꽤 잘 구성되어 있습니다. 처음 여덟 줄은 함수 호출이므로 필요한 모든 사용자 지정 요구 사항을 다룹니다. 필요한 경우 언제든지 기능 자체에 뛰어들 수 있습니다. 다음은 Public Gist 에서 호스팅되는 코드입니다.




    도전



    비디오 입력 선택



    AppleScript를 사용하여 QuickTime에서 비디오/오디오 입력으로 iPhone을 선택해야 했습니다. 빠른 검색 결과 이 ​​항목이 나타났습니다Stack Overflow question. 다음을 해야 합니다.




    tell application "QuickTime Player"
        set newMovieRecording to new movie recording
        tell newMovieRecording
            set current camera of newMovieRecording to "Kevin's iPhone"
            set current microphone of newMovieRecording to "Kevin's iPhone"
        end tell
    end tell
    


    안타깝게도 Can’t make "Kevin's iPhone" into type video recording device에 맞으면 작동하지 않습니다. 이렇게 하면 일이 훨씬 쉬워집니다.



    대신 버튼을 클릭하여 입력 목록을 연 다음 AppleScript를 통해 선택해야 합니다. 메뉴 항목 목록을 반복하고 내 기기 이름과 일치하는 항목을 클릭하는 것이었기 때문에 처음에는 그리 나쁘지 않았습니다.



    오디오/비디오 입력의 동일한 이름



    비디오 입력을 선택한 후 다음 문제는 오디오 입력을 선택하는 것입니다. 이제 문제는 오디오 및 비디오 입력이 동일한 이름을 공유하고 동일한 목록 내에 있다는 것입니다. 오디오 입력을 선택하려면 첫 번째 항목(비디오 입력)을 건너뛰어야 합니다. 그다지 어렵지는 않았지만 극복해야 할 또 다른 장애물이었습니다. 이상적으로는 입력 목록이 동영상/오디오로 구분되거나 이를 참조할 다른 키가 있어야 합니다.



    입력 메뉴가 느리게 닫힘



    입력 메뉴가 열리면 메뉴 항목을 선택하기 전에 7-8초 동안 열려 있는 것을 이전에 알았습니다. 그 당시에는 별로 걱정하지 않았지만 전체 자동화가 완료된 후 내 기기를 미러링하는 데 20초도 채 걸리지 않았습니다.



    많은 노력이 필요했지만 솔루션을 제공하는 Stack Overflow answer을 찾았습니다.




    on openInputMenu()
        ignoring application responses
            tell application "System Events" to tell process "QuickTime Player"
                click button 2 of window 1
                delay 1
            end tell
        end ignoring
        do shell script "killall 'System Events'"
    end openDeviceMenu
    


    메뉴를 여는 이 기능은 애플리케이션 응답을 무시하도록 명시적으로 지시합니다(즉, 피드백을 기다리지 않음). 메뉴가 열릴 시간을 주기 위해 1초의 수동 지연이 주입됩니다. 또한 System Events 를 종료하여 스크립트가 향후 작업을 계속 실행하도록 합니다. 솔직히 말해서 세부 사항에 대해 100% 확신할 수는 없지만 제대로 작동했습니다. 메뉴가 열리고 이제 1초 남짓 만에 선택이 완료됩니다.

    좋은 웹페이지 즐겨찾기