'object-C'에 해당되는 글 3건

  1. 2011.08.06 AV Player compile (2011년 8월 5일) (9)
  2. 2011.04.24 AV Player compile하기 (2011년 4월 24일) (7)
  3. 2010.12.27 AV Player compile하기 (4)
 AVPlayer와 ffmpeg 모두 열심히 개발하면서 버전이 올라가는 바람에 4월에 올렸던 내용이 어긋나면서 컴파일이 안되고 있었습니다. 주로 arm assembly code 관련된 문제가 많았고, gas-preprocessor.pl 의 매크로 지원 문제라서 받아서 컴파일하는 입장에서는 문제가 생길 때마다 매번 대응하기 곤란했습니다. 매번 git 에 코드가 올라올 때마다 확인할 수도 없는 노릇이어서 이번에는 아예 AVPlayer 소스안에 들어있는 ffmpeg code에 맞추어서 컴파일하도록 했습니다.
 AVPlayer.zip 에 libs/FFmpeg 에 비교적 최근(아마도?) 소스가 들어있으므로 매번 git 에서 clone 할 필요없이 주어진 것으로 컴파일하기로 했습니다. 당장 최신 ffmpeg 의 기능이 필요하지 않다면 상관없을 듯 합니다. 그리고 universal library에 i386의 library는 제외시켰습니다. yasm을 설치하고 이전 스크립트로 컴파일해도 되지만 어차피 AVPlayer에 링크될 때 simulator 용을 만들 수 없으므로 컴파일할 필요는 없습니다. ffmpeg library 자체에 흥미있으신 분들은 이전 글을 참고해서 컴파일해 보시면 될 듯 합니다. 좀 무책임한 선택이지만 매번 버전 차이 때문에 이 글을 업데이트하는 일은 없었으면 하는 바람입니다.


준비물

FFmpeg library만들기
 
  • 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에 최종 헤더와 라이브러리가 만들어집니다.

AVPlayer compile하기
  • 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 가능합니다.
Posted by luuvish

댓글을 달아 주세요

  1. ipad2 2011.08.09 03:44  댓글주소  수정/삭제  댓글쓰기

    친절한 해설과 정보 감사 드립니다
    덕분에 인코딩과 설치까지 되긴 되었습니다
    그런데 프로그램에 영상이나 음악을 저장한후 Media Explorer 을 구동하기만 하면 다운되어 버리네요
    .zip 화일을 복사해서 넣으면 정상적으로 작동을 하는데 영상,음악 파일만 넣으면 다운되어 버리네요
    소스공개시 일부러 막아 놓은 것인가요
    왜 그런지 이유가 궁금하네요
    모든 기능이 잘 작동되시는지 궁금하네요

  2. 허당 2011.09.14 17:21  댓글주소  수정/삭제  댓글쓰기

    정보 감사합니다~ 삽질 하다가 이제 제대로 동작이 되네요 ㅎㅎ
    yasm 설치 안한 것과.. /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ 경로가..
    저는 iOS 별로 따로 폴더를 두고 설치를 하여 그 부분에서 잘못됐었네요

  3. 박주형 2011.11.10 19:39  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 탈옥폰 유저입니다.
    탈옥을 하면 cydia란 어플을 통해서 온갖 바이너리 파일들을 받을 수 잇는데 최근에 ffmpeg을 받앗읍니다. 근데 2009년 컴파일 되엇고 ARMv7용으로 안나왓더라구요. 개발자한테 메일보내보앗더니 더이상 맥이 없다네요.

    그래서, avplayer안으로만 심는거 말구 초보자들도 쉽게 따라할수 잇는 ffmpeg armv7컴파일 강좌를 부탁할려구요......
    아니면 바이너리를 컴파일하셔서 제 메일(arter97@naver.com)으로 꼭 보내주세요 ㅠㅠ 꼭 필요해서요 ㅠㅠ
    감사합니다 ㅎㅎ

  4. 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 디렉토리가 만들어지고 해더와 라이브러리가 생성되지 않습니다.

    어떻게 처리를 해야 할까요? ㅠㅠ 부탁드립니다

  5. Eugene 2012.08.31 14:52  댓글주소  수정/삭제  댓글쓰기

    상세한 설명 덕분에 컴파일 성공하고 갑니다~

    감사합니다!!

  6. ㅠㅠ 2013.03.11 08:31  댓글주소  수정/삭제  댓글쓰기

    안녕하세요..

    아이폰 공부하는 유저인데...

    현재 AVPlayer가 좀 바뀌어서 그 이후로 소스공개가 안되는것같더라구요...

    혹시 받아놓으신 소스 공유가 가능할런지요? ㅠㅠㅋ

    huge123@naver.com 으로 공유 부탁드리겠습니다.

    컴파일해보고 싶은데 소스가 없네요 ㅠㅋ

    • BlogIcon luuvish 2013.03.12 13:12 신고  댓글주소  수정/삭제

      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

  7. 한스 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 부분만 다를뿐, 모두 같은데 현상이 달라
    고전중에 있습니다

    조언을 좀 부탁드리겠습니다

  8. 안녕하세요.. 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
    좋은 글 감사합니다.

AVPlayer를 컴파일하는 방법을 밑에서 포스팅했었습니다. 몇분이 질문을 하셔서 체크도 해볼 겸 다시 컴파일해 보니 왠 걸. 몇 달이나 되었다고 이것 저것 바뀌었더군요. 답변 몇줄 적는 걸로 해결되지 않을 것 같아 다시 정리해 보았습니다. 변경된 부분 위주로 빨간색으로 체크해 두었습니다.


준비물

FFmpeg library만들기
  • AVPlayer-Objects.zip을 작업할 폴더에 풉니다.
  • __MACOSX 폴더는 지우세요.
  • AVPlayer 안에 FFMPEG 디렉토리로 이동합니다.
  • gas-preprocessor.pl을 /usr/local/bin으로 복사합니다.
  • build-armv7으로 armv7용 library만 만드는 것도 가능하지만 combine-libs를 보면 뭔가 이상하죠? 사실 이 스크립드의 원본은 gabriel의 ffmpeg ios compile script입니다. 제대로 armv6, armv7, i386 library를 만들어서 universal library를 만들어 봅시다. (script가 수정되었으니 여기에 첨부된 것을 받으세요)
  • build-ffmpeg-ios4.3.tar.gz


  • 위의 첨부된 파일을 받아 FFMPEG 디렉토리에 풉니다.
  • gabriel의 소스에서 svn의 revision을 고정했고 target 마다 별도의 svn source를 다운하지 않도록 변경되었고 configure의 option이 수정되었습니다. --enable-postproc 이 제거되었고 --enable-gpl 을 off 시켰습니다. gpl option을 켜면 LGPL license가 아닌 GPL license가 됩니다. 모든 소스를 공개해야 되죠. 마찬가지의 이유로 LGPL의 경우 libx264나 libxvid를 사용할 수 없게 됩니다.
  • svn에서 checkout하는 부분은 git으로 clone하도록 수정되었습니다. 더이상 ffmpeg에서 svn로 source를 공유하지 않습니다. 또한 ffmpeg의 configure option이 변경되었기 때문에 --extra-ldflags="-arch arm7" 뒤에 -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/system 이 추가되었습니다. 그리고 document 생성에 문제가 있어 --disable-doc 이 추가되었습니다.
  • 바로 build script를 돌리면 지금(2011-04-24)의 ffmpeg은 버그가 있어서 컴파일되지 않습니다.
    Undefined symbols for architecture armv7:
      "memset", referenced from:
          _ff_ac3_bit_alloc_calc_bap_armv6 in libavcodec.a(ac3dsp_armv6.o)
         (maybe you meant:__memset_chk, _memset )
      "ff_vp8_dct_cat_prob", referenced from:
          .Literal_2 in libavcodec.a(vp8_armv6.o)
         (maybe you meant: __ff_vp8_dct_cat_prob)
    ld: symbol(s) not found for architecture armv7
    이런 메시지가 나오면서 link에서 문제가 발생합니다.
    ffmpeg-source/libavcodec/ac3dsp_armv6.S 의 82 line에서
    b memset 을 b X(memset) 으로
    ffmpeg-source/libavcodec/vp8_armv6.S 의 183 line에서
    movrel r4, ff_vp8_dct_cat_prob 를 movrel r4, X(ff_vp8_dct_cat_prob) 로
    수정하셔야 합니다.
  • 이제 순서대로 build-armv6, build-armv7, build-i386 스크립트를 실행합니다. ffmpeg 사이트에서 소스를 checkout해 온 후 configure, make를 순서대로 수행하게 됩니다.
  • 모든 target의 library가 compile되면 ffmpeg-armv6/dist, ffmpeg-armv7/dist, ffmpeg-i386/dist에 include, lib 디렉토리가 만들어지고 해더와 라이브러리가 생성됩니다.
  • combine-libs를 실행해서 모든 target의 library를 합칩니다. ffmpeg-uarch에 최종 헤더와 라이브러리가 만들어집니다. libavcore.a는 더이상 존재하지 않습니다. combine-libs에서도 제거되어야 합니다.

AVPlayer compile하기
  • Xcode로 AVPlayer project를 엽니다.
  • Targets 에서 AVPlayer,AVPlayerHD의 Build Settings을 선택합니다.
  • Search Paths 항목의 Header Search Paths 란의 내용을 수정합니다. $(SRCROOT)/FFMPEG/ffmpeg-uarch/include, $(SRCROOT)/FFMPEG/ffmpeg-armv7/dist/include 이런식으로 수정하고 Recursive를 체크하면 됩니다.
  • Search Paths 항목의 Library Search Paths 란의 내용을 수정합니다. $(SRCROOT)/FFMPEG/ffmpeg-uarch/lib, $(SRCROOT)/FFMPEG/ffmpeg-armv7/dist/lib 식으로 수정하고 Recursive를 체크하면 됩니다.
  • AVPlayer/LIBS/FFMPEG 밑의 libavcodec.a, libavcore.a, libavdevice.a, libavfilter.a, libavformat.a, libavutil.a, libswscale.a의 Utilities 창을 열고 경로를 수정합니다. AVPlayer/FFMPEG/ffmpeg-uarch/lib 밑에 있는 library를 지정하면 됩니다. libavcore.a는 이제 존재하지 않습니다. library에서 제거하세요.
  • 프로젝트의 라이브러리 설정은 모두 수정되었습니다. 이제 build 버튼만 누르면 됩니다. 단, 주의하실 점은 Simulator로는 build가 되지 않습니다. libAVPlayerLib.a에 AVPlayer의 중요한 코드들이 모두 숨어있는데, 이 라이브러리가 i386으로 compile 되어 있지 않습니다. arm용으로만 compile되어 있기 때문에 Device로만 bulid 가능합니다.
Posted by luuvish

댓글을 달아 주세요

  1. BlogIcon 유령c 2011.05.20 09:53  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 덕분에 FFMpeg 컴파일에 성공했습니다!!
    저는 ysam이 설치 되지 않았어서 살짝 고생했었는데 포스팅에 추가해주셔도 좋을것 같습니다.

    http://www.tortall.net/projects/yasm/wiki/Download

    좋은하루 되세요 ^^

  2. 캐이캐이 2011.07.30 17:27  댓글주소  수정/삭제  댓글쓰기

    ERROR: .endm without .macro at /usr/local/bin/gas-preprocessor.pl line 80, <ASMFILE> line 36.
    make: *** [libavcodec/arm/ac3dsp_arm.o] Error 29

    컴파일 하는 중에 이런 에러가 뜨면 어떻게 해야하나요?

  3. ipad 2011.08.05 17:32  댓글주소  수정/삭제  댓글쓰기

    build-ffmpeg-ios4.3.tar.gz 화일중 build-armv6, build-armv7, 은 정상적으로 됩니다만 build-i386 을 실행시키면
    에러가 납니다 이유가 무엇인지 조언 부탁드립니다.


    ../$SOURCE_DIR/configure --cc="$IOSSDK_GCC" --as="$SCRIPT_DIR/gas-preprocessor.pl $IOSSDK_GCC" --sysroot="$IOSSDKDIR" --extra-cflags="-mdynamic-no-pic" --prefix="dist" $CONFIGURE_OPTIONS
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/i686-apple-darwin10-gcc-4.2.1 is unable to create an executable file.
    If /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/i686-apple-darwin10-gcc-4.2.1 is a cross-compiler, use the --enable-cross-compile option.
    Only do this if you know what cross compiling means.
    C compiler test failed.

    If you think configure made a mistake, make sure you are using the latest
    version from Git. If the latest version fails, report the problem to the
    ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
    Rerun configure with logging enabled (do not use --disable-logging), and
    include the log this produces with your report.

    • BlogIcon luuvish 2011.08.05 23:15 신고  댓글주소  수정/삭제

      저의 경우 SDK 버전이 맞지 않을 때나 $CONFIGURE_OPTIONS이 ffmpeg에서 처리 못하는 경우에 위의 메시지를 본 적이 있습니다. armv6이나 armv7이 컴파일된 것으로 보아 gcc나 SDK의 버전 문제일 것 같네요.

    • ipad 2011.08.09 00:33  댓글주소  수정/삭제

      귀한 정보와 조언에 감사를 드립니다
      죄송하지만 이전 블러그에서 빌드하신 이전 AVPlayer-Objects.zip 버전파일이 있으시면 좀 보내주실수 있으신지요
      2011/04/24 이전 버전이나 2010/12/27 이전 버전이면 더 좋을것 같습니다
      iphonedalin@gmail.com 입니다
      염치없이 부탁드립니다

  4. 아이폰 2011.08.05 17:33  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사를 드립니다
    xcode 4.1 에서 설치하는데 계속 에러가 납니다
    죄송하지만 xcode 4.1에 설치하는 법 좀 알려주세요
    AVPlayer-Objects.zip 도 업그레이드가 된것 같네요
    부탁드려요

  5. BlogIcon parkboo 2011.08.19 15:36  댓글주소  수정/삭제  댓글쓰기

    저는 아래처럼 빌드했습니다.

    1. http://www.eplayworks.com/p/lgplinformation.html 에서 소스 받기
    2. gas-preprocessor.pl 설치
    3. yasm 설치 (Mac Port로 하면 쉬움)
    4. libs/FFMpeg 에서 아래 실행.
    ./configure --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 --as="$SCRIPT_DIR/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2" --prefix="dist" --enable-cross-compile --target-os=darwin --arch=arm --cpu=cortex-a8 --extra-cflags="-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" --extra-ldflags="-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" --enable-pic --disable-asm
    (disable-asm 옵션을 추가 안하면 빌드시 에러 발생)
    5. make && make install
    6. xcode에서 libz, libbz 추가

요즘 iPhone/iPad 에서 무인코딩으로 동영상을 볼 수 있는 앱으로 잘 나가는 AV Player를 iOS SDK로 compile해 볼 수 있습니다. FFmpeg license 문제로 컴파일할 수 있는 코드가 공개되어 있습니다. 물론 중요한 부분은 library로 묶여있지만 앱의 전체적인 모습과 GUI 구성, FFmpeg library를 어떻게 컴파일해서 합쳤는지 좋은 참고자료가 될 듯 합니다.


준비물

FFmpeg library만들기
  • AVPlayer-XCode.zip을 작업할 폴더에 풉니다.
  • __MACOSX 폴더는 지우세요.
  • AVPlayer 안에 FFMPEG 디렉토리로 이동합니다.
  • gas-preprocessor.pl을 /usr/local/bin으로 복사합니다.
  • build-armv7으로 armv7용 library만 만드는 것도 가능하지만 combine-libs를 보면 뭔가 이상하죠? 사실 이 스크립드의 원본은 gabriel의 ffmpeg ios compile script입니다. 제대로 armv6, armv7, i386 library를 만들어서 universal library를 만들어 봅시다.
  • build-ffmpeg-ios.tar.gz

  • 위의 첨부된 파일을 받아 FFMPEG 디렉토리에 풉니다.
  • gabriel의 소스에서 svn의 revision을 고정했고 target 마다 별도의 svn source를 다운하지 않도록 변경되었고 configure의 option이 수정되었습니다. --enable-postproc 이 제거되었고 --enable-gpl 을 off 시켰습니다. gpl option을 켜면 LGPL license가 아닌 GPL license가 됩니다. 모든 소스를 공개해야 되죠. 마찬가지의 이유로 LGPL의 경우 libx264나 libxvid를 사용할 수 없게 됩니다.
  • 이제 순서대로 build-armv6, build-armv7, build-i386 스크립트를 실행합니다. ffmpeg 사이트에서 소스를 checkout해 온 후 configure, make를 순서대로 수행하게 됩니다.
  • 모든 target의 library가 compile되면 ffmpeg-armv6/dist, ffmpeg-armv7/dist, ffmpeg-i386/dist에 include, lib 디렉토리가 만들어지고 해더와 라이브러리가 생성됩니다.
  • combine-libs를 실행해서 모든 target의 library를 합칩니다. ffmpeg-uarch에 최종 헤더와 라이브러리가 만들어집니다.

AVPlayer compile하기
  • Xcode로 AVPlayer project를 엽니다.
  • Targets 에서 AVPlayer/AVPlayerHD의 Info 창을 엽니다.
  • Search Paths 항목의 Header Search Paths 란의 내용을 수정합니다. $(SRCROOT)/FFMPEG/ffmpeg-uarch/include, $(SRCROOT)/FFMPEG/ffmpeg-armv7/dist/include 이런식으로 수정하고 Recursive를 체크하면 됩니다.
  • Search Paths 항목의 Library Search Paths 란의 내용을 수정합니다. $(SRCROOT)/FFMPEG/ffmpeg-uarch/lib, $(SRCROOT)/FFMPEG/ffmpeg-armv7/dist/lib 식으로 수정하고 Recursive를 체크하면 됩니다.
  • AVPlayer/LIBS/FFMPEG 밑의 libavcodec.a, libavcore.a, libavdevice.a, libavfilter.a, libavformat.a, libavutil.a, libswscale.a의 Info 창을 열고 경로를 수정합니다. AVPlayer/FFMPEG/ffmpeg-uarch/lib 밑에 있는 library를 지정하면 됩니다.
  • 프로젝트의 라이브러리 설정은 모두 수정되었습니다. 이제 build 버튼만 누르면 됩니다. 단, 주의하실 점은 Simulator로는 build가 되지 않습니다. libAVPlayerLib.a에 AVPlayer의 중요한 코드들이 모두 숨어있는데, 이 라이브러리가 i386으로 compile 되어 있지 않습니다. arm용으로만 compile되어 있기 때문에 Device로만 bulid 가능합니다.
Posted by luuvish

댓글을 달아 주세요

  1. 유아독존 2011.02.12 07:46  댓글주소  수정/삭제  댓글쓰기

    자세한 설명 감사드립니다.

    그런데 그대로 따라하는 도중에 보니 계속 실패가 되더라고요 (FFMpeg를 스크립트를 이용해서 컴파일 하는 도중) 그래서 살펴보니 --enable-swscale (소프트웨어 스케일)이 켜져있는데 리비전 번호가 r25596 로 되어있는걸로 받다보니 libswscale 디렉토리에 있는 소스파일들을 못받아오고 에러가 납니다. 저 옵션을 끄던지 아니면 리비전번호를 최신꺼로 해야할듯 싶은데요. 그리고 최신꺼로 받아왔을때 위 압축파일에 포함되어있는 gas-preprocessor.pl을 이용해서 하니 컴파일 에러가 나더라고요. 그래서 AVPlayer에 포함된 gas-preprocessor.pl을 /usr/local/bin 에다가 복사하니 제대로 넘어가네요. 혹시 시간나시면 확인해주시면 정말 감사하겠습니다. 그럼 수고하세요. 꾸벅~

    Email: sabal90@hanmail.net

  2. BlogIcon luuvish 2011.02.14 13:55  댓글주소  수정/삭제  댓글쓰기

    네. libswscale 원본의 위치가 변경된 모양이에요. 최신 리비전으로 받아야 제대로 됩니다. 수정되어도 이전 리비전은 고정되어야 정상인데 libswscale은 external link라 문제가 된 모양이네요. 최신 버전은 armv6 에서 --disable-optimization 일 때 컴파일이 안되더군요.

  3. DJLee 2011.04.20 12:43  댓글주소  수정/삭제  댓글쓰기

    안녕하세요?
    질문이 있는데
    위의 그대로 했습니다만,,,
    빌드후 에러메시지가


    "_av_get_bits_per_sample_fmt", referenced from:


    _audioBitAdjust in libAVPlayerLib.a(AVDecoder.o)


    ld: symbol(s) not found

    다음과 같이 나오네요

    _av_get_bits_per_sample_fmt를 참조를 못하는 거같은데 ...
    혹시 해결 방법이 없는지 궁금합니다.

  4. BlogIcon luuvish 2011.04.20 15:20 신고  댓글주소  수정/삭제  댓글쓰기

    libavutil.a 이 제대로 link되었는지 확인해 보세요.
    Xcode의 library 설정에서 빠졌을 수도 있고 libavutil.a가 아예 컴파일이 안되어 있는지도 모릅니다.