AVPlayer.zip 에 libs/FFmpeg 에 비교적 최근(아마도?) 소스가 들어있으므로 매번 git 에서 clone 할 필요없이 주어진 것으로 컴파일하기로 했습니다. 당장 최신 ffmpeg 의 기능이 필요하지 않다면 상관없을 듯 합니다. 그리고 universal library에 i386의 library는 제외시켰습니다. yasm을 설치하고 이전 스크립트로 컴파일해도 되지만 어차피 AVPlayer에 링크될 때 simulator 용을 만들 수 없으므로 컴파일할 필요는 없습니다. ffmpeg library 자체에 흥미있으신 분들은 이전 글을 참고해서 컴파일해 보시면 될 듯 합니다. 좀 무책임한 선택이지만 매번 버전 차이 때문에 이 글을 업데이트하는 일은 없었으면 하는 바람입니다.
- Snow Leopard/Lion 이 설치된 Mac
- Xcode 최신버전 (4.1 이상, iPhoneOS4.3 SDK 이상)
- AVPlayer source code
http://eplayworks.com/avplayer/AVPlayerDist143.zip
위의 사이트에서 source code를 다운받습니다. - gabriel의 ffmpeg ios compile script
https://github.com/gabriel/ffmpeg-iphone-build
꼭 필요한 것은 아니지만 참고.
- AVPlayerDist143.zip을 작업할 폴더에 풉니다.
- __MACOSX 폴더는 지워도 됩니다.
- https://github.com/yuvi/gas-preprocessor 에서 gas-preprocessor.pl을 가져와 /usr/local/bin으로 복사합니다.
- AVPlayer 안에 libs 디렉토리로 이동합니다. (cd libs)
- libs 안에 ffmpeg-armv6, ffmpeg-armv7 디렉토리를 만듭니다. (mkdir ffmpeg-armv6 ffmpeg-armv7)
- build-armv6 파일을 열어 15번째 줄에서 CONFIGURE_OPTIONS=" ... " 안에 --disable-doc 을 추가합니다.
- build-armv6 파일의 30번째 줄의 ./configure ... 을 ../FFmpeg/configure ... 으로 수정합니다.
- build-armv6 파일의 30번째 줄에서 gcc-4.2 와 iPhoneOS4.3.sdk 라고 되어 있는 부분을 자신의 버전과 일치하도록 수정합니다. 어떤 버전인지 자신이 없으면 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ 과 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 에 실제로 존재하는지 확인하면 됩니다.
- build-armv7 파일을 열어 build-armv6 에서 수정한 것처럼 고칩니다.
- FFmpeg 디렉토리에 있는 config.* 파일들을 삭제합니다. (rm -rf FFmpeg/config.*)
configure를 실행하면 생성되는 파일들인데 이 파일이 FFmpeg에 있으면 ffmpeg-armv6이나 ffmpeg-armv7에서 configure 가 되지 않습니다. - 이제 순서대로 build-armv6, build-armv7 스크립트를 실행합니다. (sh build-armv6; sh build-armv7)
각각의 target에 대해 configure, make를 순서대로 수행하게 됩니다.
모든 target의 library가 compile되면 ffmpeg-armv6/dist, ffmpeg-armv7/dist 에 include, lib 디렉토리가 만들어지고 해더와 라이브러리가 생성됩니다. - combine-libs 파일을 열어서 5번째 줄의 ARCHS="armv6 armv7 i386" 에서 i386 을 지웁니다.
그리고 8번째 줄의 BUILD_LIBS=" ... " 에서 마지막에 있는 libavcore.a 를 지웁니다.
28번째 줄과 31번째 줄의 i386 을 armv7 으로 수정합니다. - combine-libs를 실행해서 (sh combine-libs) 모든 target의 library를 합칩니다. ffmpeg-uarch에 최종 헤더와 라이브러리가 만들어집니다.
- Xcode로 AVPlayer project를 엽니다.
- Project Navigator 의 Targets 에서 AVPlayer,AVPlayerHD의 Build Settings을 선택합니다.
- Search Paths 항목의 Header Search Paths 란의 내용을 수정합니다. ./libs/ffmpeg-uarch/include 으로 수정하고 Recursive를 체크하면 됩니다.
- Search Paths 항목의 Library Search Paths 란의 내용을 수정합니다. ., ./libs/ffmpeg-uarch/lib 으로 수정하고 Recursive를 체크하지 않아도 됩니다. . 는 libAVPlayerLib.a 을 링크하기 위해 꼭 필요합니다.
- Project Navigator 의 AVPlayer/libs/FFMPEG 밑의 libavcodec.a, libavcore.a, libavdevice.a, libavfilter.a, libavformat.a, libavutil.a, libswscale.a의 Utilities 창을 열고 경로를 수정합니다. AVPlayer/libs/ffmpeg-uarch/lib 밑에 있는 library를 지정하면 됩니다.
- 프로젝트의 라이브러리 설정은 모두 수정되었습니다. 이제 build 버튼만 누르면 됩니다. 단, 주의하실 점은 Simulator로는 build가 되지 않습니다. libAVPlayerLib.a에 AVPlayer의 중요한 코드들이 모두 숨어있는데, 이 라이브러리가 i386으로 compile 되어 있지 않습니다. arm용으로만 compile되어 있기 때문에 Device로만 bulid 가능합니다.
댓글을 달아 주세요
ipad2 2011.08.09 03:44 댓글주소 수정/삭제 댓글쓰기
친절한 해설과 정보 감사 드립니다
덕분에 인코딩과 설치까지 되긴 되었습니다
그런데 프로그램에 영상이나 음악을 저장한후 Media Explorer 을 구동하기만 하면 다운되어 버리네요
.zip 화일을 복사해서 넣으면 정상적으로 작동을 하는데 영상,음악 파일만 넣으면 다운되어 버리네요
소스공개시 일부러 막아 놓은 것인가요
왜 그런지 이유가 궁금하네요
모든 기능이 잘 작동되시는지 궁금하네요
허당 2011.09.14 17:21 댓글주소 수정/삭제 댓글쓰기
정보 감사합니다~ 삽질 하다가 이제 제대로 동작이 되네요 ㅎㅎ
yasm 설치 안한 것과.. /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ 경로가..
저는 iOS 별로 따로 폴더를 두고 설치를 하여 그 부분에서 잘못됐었네요
박주형 2011.11.10 19:39 댓글주소 수정/삭제 댓글쓰기
안녕하세요. 탈옥폰 유저입니다.
탈옥을 하면 cydia란 어플을 통해서 온갖 바이너리 파일들을 받을 수 잇는데 최근에 ffmpeg을 받앗읍니다. 근데 2009년 컴파일 되엇고 ARMv7용으로 안나왓더라구요. 개발자한테 메일보내보앗더니 더이상 맥이 없다네요.
그래서, avplayer안으로만 심는거 말구 초보자들도 쉽게 따라할수 잇는 ffmpeg armv7컴파일 강좌를 부탁할려구요......
아니면 바이너리를 컴파일하셔서 제 메일(arter97@naver.com)으로 꼭 보내주세요 ㅠㅠ 꼭 필요해서요 ㅠㅠ
감사합니다 ㅎㅎ
ffmpeg컴파일 2011.11.21 10:59 댓글주소 수정/삭제 댓글쓰기
•이제 순서대로 build-armv6, build-armv7 스크립트를 실행합니다. (sh build-armv6; sh build-armv7)
각각의 target에 대해 configure, make를 순서대로 수행하게 됩니다.
모든 target의 library가 compile되면 ffmpeg-armv6/dist, ffmpeg-armv7/dist 에 include, lib 디렉토리가 만들어지고 해더와 라이브러리가 생성됩니다.
이전 작업까지는 잘 따라하였습니다
근데 이작업을 하려고 하는데 에러가 나는데요 어떻게 해야하나요?
warrning 2개
Error handling externals definition fpo 'ffmpeg-armv6/libswscale'
URL 'svn://svm.ffmpeg.org/mplayer.trynk.libswscale'at evision 34354 doesn,t exist
가 뜨네요
그리고
/Deveplper/Platforms/iPhonesOS.platrform.Develpoer/usr/bin/gcc-4.2 is unable to creat an executalbe file. C comipler test failed
라고 떠서 fmpeg-armv6/dist, ffmpeg-armv7/dist 에 include, lib 디렉토리가 만들어지고 해더와 라이브러리가 생성되지 않습니다.
어떻게 처리를 해야 할까요? ㅠㅠ 부탁드립니다
Eugene 2012.08.31 14:52 댓글주소 수정/삭제 댓글쓰기
상세한 설명 덕분에 컴파일 성공하고 갑니다~
감사합니다!!
ㅠㅠ 2013.03.11 08:31 댓글주소 수정/삭제 댓글쓰기
안녕하세요..
아이폰 공부하는 유저인데...
현재 AVPlayer가 좀 바뀌어서 그 이후로 소스공개가 안되는것같더라구요...
혹시 받아놓으신 소스 공유가 가능할런지요? ㅠㅠㅋ
huge123@naver.com 으로 공유 부탁드리겠습니다.
컴파일해보고 싶은데 소스가 없네요 ㅠㅋ
eplayworks.com의 support/avplayer/license 페이지에서 다운받으실 수 있습니다.
http://eplayworks.com/section/support/licenseAP.php?lang=en
위 페이지의 AVPlayer-XCode download 를 클릭하면 됩니다.
http://avstreamer.eplayworks.com/download/download_avplayer.php
한스 2013.05.09 17:58 댓글주소 수정/삭제 댓글쓰기
강좌 잘 참고 하여 컴파일중에 있습니다
source:AVPlayer164.zip과
script:build-ffmpeg-ios4.3.tar.gz을 이용하여 컴파일하고 있습니다
강좌를 참고 하여 script를 수정후,
armv6 과 armv7을 컴파일 했습니다만
armv6는
configuration 하면서, gcc is unable to create an executeable file 에러와,
armv7은 컴파일을 하다가,
af_volume.o error:invalid operand in inline asm: 'adds $1, ${2:R}, ~~~
에서 에러가 발행합니다
두 스크립트를 확인해봤으나 armv6,7 부분만 다를뿐, 모두 같은데 현상이 달라
고전중에 있습니다
조언을 좀 부탁드리겠습니다
안녕하세요.. 2013.09.02 16:22 댓글주소 수정/삭제 댓글쓰기
안녕하세요..
http://avstreamer.eplayworks.com/download/download_avplayer.php
이 링크로 소스를 받아보니 이제 소스부분이 거의 없군요..
어떻게 ffmpeg는 빌드 하였는데.. AppDelegate가 없어서..
오류가 나는군요..
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AppDelegate", referenced from:
objc-class-ref in main.o
"_OBJC_CLASS_$_FolderUtils", referenced from:
objc-class-ref in list.o
실례되지 않는다면 이전 버전의 소스를 부탁드려도 될까요?
ftfuture@naver.com
좋은 글 감사합니다.