[OSX] 맥에서 손쉽게 아이폰용 동영상 인코딩하기

디지털 카메라나 아이폰이 아닌 스마트폰으로 찍은 동영상을 아이폰에서 재생하려면 인코딩을 해야하는 경우가 있다. 윈도에서는 곰인코더 같은 게 많이 있던데 맥에서는 뭘쓰면 좋을라나… 싶었지만 구관이 명관(?)이라고 리눅스 쓸 때부터 쓰던 Handbrake가 좋겠다 싶었다. (당연히 맥용도 있고, 윈도용도 있음)

HandBrake는 Preset을 정해서 쉽게 인코딩을 할 수는 있지만, 매번 영상 파일을 찾아서 일일이 지정하기는 좀 번거로우니까, 아예 Automator를 써서 한 방에 처리할 수 있는 도구를 만들어 보도록 하자. 이 때 약간의 준비물이 필요하다. 동영상을 인코딩할 Handbrake는 CLI 버전이 있어야 하고 (터미널에서 실행되는 명령줄 앱임), 오토메이터에서 HandbrakeCLI를 실행해 줄 액션이 있어야 하는데, 이건 능력자분께서 만들어 둔 게 있더라.

준비물

설치방법

1. 다운로드 받은 Handbrake CLI는 확장자가 .dmg인 디스크 이미지 파일이다. 이 파일을 더블 클릭하면 USB 메모리를 꽂은 것처럼, 가상의 디스크가 마운트되고 폴더가 열리면서 그 내용을 볼 수 있다.

2. 터미널을 실행한다. 터미널을 사용하여 방금 마운트한 폴더에서 Handbrake CLI 파일을 /usr/bin/ 이라는 폴더로 복사하여 설치할 것이다. 다음 순서를 잘 따라하자.

  1. 터미널에서 sudo cp  까지 입력한다. (cp 다음에 공백 한 칸 입력)
  2. handbrake 폴더에서 실행파일인 HandBrakeCLI 파일을 터미널로 드래그한다. 드래그하면 해당 파일의 원본 경로가 자동으로 입력된다.
  3. 이제 다시 터미널에서 위 명령의 맨 뒤에 /usr/bin/를 넣는다. 대충 전체적인 모양은 다음과 같다.
    sudo cp /Volumes/HandBrake-0.9.8-MacOSX.6_CLI_x86_64/HandBrakeCLI /usr/bin/
  4. 엔터를 누르면 패스워드를 묻는다. 자신의 로그온 패스워드를 입력하고 다시 엔터.
  5. 아무런 에러 메시지가 나오지 않았다면 성공했다.

3. 이제 두 번째 링크의 파일을 다운로드 받아 더블클릭해서 압축을 푼다. 그 속에 있는 .action 파일을 다시 더블클릭하면 Automator에 액션을 설치하겠느냐고 묻는데, 설치하도록 한다.

4. Automator를 실행한다. 새로운 “응용 프로그램”을 만들기로 시작한다.

5. 왼쪽 도구 상자 중에서 동영상 > HandBrake Encode 를 클릭해서 오른쪽 영역으로 드래그한다.

6. 설정 상자가 나타난다.  이 중 다음 설정을 만져준다.

  • Preset : iPhone & iPod touch
  • Constrain Quality : 16에 맞춘다. (화질인데 숫자가 적을 수록 고화질이다)
  • Output Folder : 인코딩된 동영상이 저장되는 폴더. 원하는 폴더에 지정하면 된다.

7. 이제 이 파일을 바탕화면이나 눈에 잘 띄는 곳에 저장한다. 뭐 이름은 ‘인코더’ 정도로 하면 되겠다.

모든 과정이 끝났다. 이제 저 인코더 아이콘으로 동영상 파일을 드래그해서 던져넣으면 자동으로 인코딩을 해준다. 인코딩이 진행되는 동안 메뉴바 오른쪽에는 돌아가는 톱니바퀴 아이콘이 표시된다. (불행스럽게도 진행 상황을 표시해주지는 않는다.)

최근 Xcode의 개선사항

애플은 단지 SDK만 업그레이드하는게 아니라 개발도구도 지속적으로 개선해나가고 있다. Xcode 3 -> 4로 넘어올 때도 상당히 좋아졌는데, 4.5까지 오면서 계속해서 개선되고 있다.

What’s new in Xcode 4.3

  • 개별 도구 앱이 하나의 앱 패키지에 통합됨
  • 명령줄 도구를 선택적으로 설치하도록 분리됨
  • /Developer 디렉터리를 사용하지 않음. 한대의 맥에 다른 버전의 Xcode를 동시에 설치하는 것이가능하며, Xcode는 기존 버전의 Xcode를 삭제하는 기능을 제공함
  • 신규 코코아 프로젝트에서 Auto Layout이 디폴트로 설정됨.

What’s new in Xcode 4.4

  • LLVM 4.0 컴파일러가 적용됨. 이 때부터 NSString외의 객체도 @Literal을 사용할 수 있어, NSString을 생성하는 것과 마찬가지로 NSNumber, NSArray, NSDictionary를 생성할 수 있음
  • C++11 표준에 대한 지원이 강화됨.
  • 정적 분석 기능이 향상되어 프로시져간 분석이 가능함. 메모리 누수 가능성을 찾는 기능이 강력해짐
  • 앱킷 기능에 대한 인터페이스 빌더의 추가적인 지원이 이뤄져 자동로컬라이징, 트랙패드API, Auto Layout, 코어UI기반의 커스터마이징, NSView API, 페이징 컨트롤, 페이지 컨트롤 뷰의 확장등이 추가됨
  • Scene Kit 편집기가 추가됨. Collada DAE 파일을 선택하면 3D 씬을 보고 편집할 수 있게 됨.
  • 코드 자동완성 기능이 강화됨. 아직 import하지 않는 파일에 대한 심벌에 대해서도 자동완성을 수행할 수 있으며 이 때 #error를 표시해서 링크할 필요가 있음을 자동으로 알려줄 수 있다.
  • 찾기와 검색 기능이 강화됨. 찾기 바와 검색 네비게이터는 단순화된 정규식과 같은 패턴을 검색할 수 있으며, 인덱스된 심벌을 찾을 수 있게 되었다. 또한 현재 함수를호출한 코드, 현재 코드에서 호출하는 함수를 바로 찾을 수 있게 해준다.
  • 소스 코드 편집기의 점프바 개선
  • 트랙패드 사용에 대한 제스쳐 지원이 확돼된다. UI편집기의 핀치줌과 더블탭 기능 지원.
  • 빌드시 경고에 대해서 시스템 알림으로 받을 수 있게 된다. (마운틴 라이언 이상)

What’s new in Xcode 4.5

  • iOS6 SDK 지원
  • LLDB가 기본 디버거로 변경됨
  • LLDB는 iOS 장치에 대해 하드웨어 watch point를 지원한다.
  • OpenGL 디버깅 및 성능 분석 기능이 Xcode에 통합되었다.
  • iOS6의 오토레이아웃이 지원된다.
  • 베이스 언어를 통한 지역화 플로우가 OSX10.8 및 iOS6 스토리보드로 확대
  • Objective-C의 @문법이 iOS6의 NSArray, NSDictionary로 확대
  • [ ] 문법을 사용한 서브스크립팅 지원
  • NSString이 자동완성 우선순위 1번이 됨!

 

MacVim의 vimrc 파일을 별도로 관리하기

MacVim은 코코아로 만들어진 GUI 기반의 vim앱이다. 취향에  따라서는 터미널에서 vi를 실행해서 쓸 수도 있지만 (난 아무래도 이쪽인 듯) MacVim은 마우스를 지원하는 등의 “조금 더 쉽게” vi의 강력한 기능들을 활용할 수 있다.

MacVim은 ~/.vimrc 파일을 로딩해서 터미널의 vi와 동일한 설정을 그대로 따를 수 있지만, 경우에 따라서는 몇몇 설정이 별도로 필요할 수 있다. 이런 경우에는 MacVim에서만 사용하는 vimrc 파일이 있으면 좋겠는데…. 그런데 그것이 실제로 있습니다.

아는 사람은 아시다시피 OSX의 앱은 그 자체가 하나의 ‘폴더’로 존재한다. 즉 폴더에 아이콘이 씌워져 있고, 이를 더블 클릭하면 그 속의 앱이 실행되는 형태로 되어 있다. 말하자면 거의 모든 앱이 ‘포터블’ 형태인 셈.

그래서 우선 터미널에서 vi로 이 파일을 찾아서 약간 변형을 가해준다.

vi /Applications/MacVim.app/Contents/Resources/vim/vimrc

이 파일의 맨 마지막 줄에 다음 명령을 추가해준다.

let $MYVIMRC='/Applications/MacVim.app/Contents/Resources/vim/vimrc'

이제 MacVim의 $MYVIMRC는 앱 샌드박스 내에 존재하는 vimrc 파일이 되었다. MacVim에서 이 파일을 쉽게 편집하고 싶다면 다음 명령을 사용한다.

:e $MYVIMRC

물론 MacVim은 ~/.vimrc 도 읽어들이겠지만, 그 전에 먼저 이 파일을 읽어오게 될 것이다. 따라서 MacVim에서만 설정 가능한 세팅은 이곳에서 설정해주면 된다.

[Mac] 다음으로 열기… 에서 앱이 중복으로 나타나는 문제

파인더에서 특정 파일을 열 때 기본 앱이 아닌 다른 앱으로 실행하려면 오른쪽 클릭 후 “다음으로 열기…”를 선택하여 앱을 고를 수 있다. 만약 설치에 문제가 있었거나, 제대로 삭제하지 않고 재설치하는 등의 이유로 인해 중복된 앱이 표시되는 문제가 있을 수 있다. (특히 구글 크롬의 경우, 업데이트 되는 과정에서 이런 문제가 생길 수 있음)

이때의 해결책. 다음의 명령을 복사하여 터미널에서 실행한다.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

조금 시간이 걸릴 수 있다. 완료되면 파인더를 재시작한다.

killall Finder

확인해보면 중복앱이 정리되어 있음을 확인할 수 있다. 이 문제는 ‘훑어보기’에서 “다음으로 열기” 기능을 실행할 때에도 발견되는데, 역시 같은 방법으로 수정이 가능하다.

 

터미널로부터 알림 받기

터미널을 통해 시간이 걸리는 작업을 걸어놓고 멍하니 변화없는 터미널을 바라보기 보다는 다른 작업을 하고 있는 편이 좋을 때도 있다. 그렇다고 다른 작업을 하다가 터미널에서 돌아가던 작업이 완료된 것도 모르고 빠져들어버리면 그것도 좀 시간 낭비가 될 수 있고… 아무튼 그런 경우에 유용하게 사용할 수 있는 팁.

tput 명령을 사용하면 터미널이 비활성 상태일 때 Dock에 있는 터미널에 알림을 보낼 수 있다. tput bel 이라고하면 터미널 창이 비활성 상태일 때 Dock을 통해 알림을 보낸다. 따라서 수행하고자 하는 명령을 입력한 후 && tput bel 이라고 뒤에 덧붙여주기만 하면 된다.

예를 들어 구글 서버에 핑을 5번 보내는 작업을 한다고 할 때

 ping -c 5 www.google.com && tput bel

이라고 한다면, 핑을 보내는 일을 하는 동안 웹서핑 등 다른 작업을 하고 있다보면, Dock에서 터미널이 통통 튀어 오르면서 알림을 보낸다. 이때 Dock을 보면 터미널 아이콘에 숫자배지가 붙어 있다.