근 3월초부터 많은 시간을 Head First 로 시작하는 책들을 읽는데 썼습니다.
별다른 큰 목적이나 계획이 있었던 건 아니고, 웹관련 일을 찔러 보다가 이쪽에 대해 잘 모르는 게 너무 티가 나서 교양(?)을 쌓고자 몇 권 집어 든게 화근이었습니다. 너무 술술 잘 읽히는 거 있죠. (일이 너무 하기 싫어던 게지 --;)

Head First HTML with CSS & XHTML, Head First JavaScript, Head First Ajax, Head First SQL, Head First Design Patterns 까지 읽고 Head First Web Design에서 잠시 열독을 멈춘 상태입니다. 책 한권을 3-4일만에 읽어 버린 꼴이네요. 그림이 좀 많긴 하지만 그렇게 얇은 책도 아닌데... 막상 읽고 나니 좀 얼떨떨 하긴 하네요.


 
Head First 시리즈는 항상 느끼는 거지만 정말 설명하는 법이 탁월합니다. 쉽게 설명하기 위해 내용의 구성과 흐름, 그리고 흥미 유발을 위한 리듬까지 고려되어 있습니다. 조금만 딱딱하거나 어눌한 설명이 나오면 흥미와 집중이 사라지는 저같은 사람에겐 이만한 책이 없습니다. 또한 쉽게 쓰여진 책의 단점인 설명하기 곤란하거나 모순된 상황을 보여주지 않는 (아름다운 모습만 보여주는) 다소 비겁한 태도도 이 책에는 없습니다. 무엇이 문제인지 정확히 설명하는 게 너무 좋습니다. 안방 토크같은 다소 해학적인 논쟁은 상당히 위트있고 세련되어서 전달하고자 하는 문제의 본질과 부각시키고 싶은 차이를 확실히 인식하도록 도와줍니다.

Head First 시리즈가 쉽게 쓰여졌다고는 하지만 확실히 초보자용 책은 아닙니다. 초보자에서 중급자로 넘어가거나 중급자인거 같은데 왠지 기초가 부실한 사람이 읽는 것이 맞을 것 같습니다. 아무것도 모르는 초보자가 읽기엔 내용 중간중간 문맥안에 숨어있는 무시무시한 위트를 정확히 이해 못할 것 같더군요. 그리고 중급자나 고급자 입장에서는 복잡하고 고난이도의 내용이 들어있지 않습니다. Effective C++ 처럼 모든 것을 다 알고 난 후에 그래도 모르는게 있나? 하고 보는 책은 아닙니다. 난이도 상 조금 에메한 위치에 있지만 저처럼 대충 아는데 좀 더 자세한 내용을 빠른 시간에 익히려는 사람에겐 Head First 시리즈를 추천합니다.
Posted by luuvish

댓글을 달아 주세요


삼국지의 모든 의혹이 해소되었습니다. 허허.
Posted by luuvish

댓글을 달아 주세요

한쪽은 Application을 만드는 방식으로 Web Application을 만들려고 합니다.
다른편에서는 Web Application을 만드는 방법을 그대로 사용해서 App을 만들려고 합니다.

결국 지향하는 목표점은 하나입니다.
하나의 개발환경에서 여러 플랫폼을 지원하는 Web/PC/Mobile Application을 만들려는 거죠.

Cappuccino

JavaScript에 Objective-C의 문법을 추가한 Objective-J를 가지고 Cocoa Framework와 유사한 Framework을 지원합니다. 기존의 Mac OSX/iPhone 개발자들이 쉽게 적응할 수 있는게 장점입니다.
280Slides 같은 완성된 결과물을 보면 상당히 매력적입니다.
그러나 아이러니하게도 아직은 iPhone이나 iPad에서 터치가 제대로 동작하지 않아요(?)

Appspresso

HTML & CSS, JavaScript로 만들어진 Web App를 안드로이드/아이폰 App으로 변환해주는 framework입니다.
개발환경은 eclipse의 plugin인 형태로 제공되며 target mobile의 simulator와 연동됩니다.

Titanium

HTML, CSS, JavaScript, Ruby, Rython, PHP를 사용해서 Desktop이나 안드로이드/아이폰 App을 제작할 수 있는 개발 플렛폼을 제공합니다. 대표적인 결과물이 Wonderlist입니다. 프로젝트를 생성하고 컴파일해서 simulator에 돌려볼 수 있는 멋진 환경을 제공합니다만 Appspresso처럼 편집/수정하고 디버깅할 수 있는 eclipse같은 환경은 아직 제공되지 않습니다.(공짜버전이라 그런지도 --;) 다른 환경에 비해 맘에 드는 언어를 선택할 여지가 많다는 게 좋네요.



아직 초기 단계라 어느 것이 더 좋다 어느 것이 대세다라고 말하긴 어렵습니다. 태생적인 한계가 있기 때문에 주류가 될 수 있을 지도 확실하지 않구요. HTML5은 아직 스팩도 확정되지 않았고 Web App과 Desktop App의 분명한 경계가 있기 때문에 위와 같은 시도가 빠르게 정착할 것 같지는 않습니다.
하지만 Web App와 Desktop/Mobile App를 동일한 환경에서 개발하고자 하는 의도와 그 도전은 환영입니다. 사실 Web이나 App이나 하고자 하는 목표는 같은데 여러개의 target을 지원하는데 너무 비용이 드는 것이 현실입니다. 너무 많은 디바이스, 너무 많은 표준, 언어, 시스템, 라이브러리, framework. 결과를 내는데 너무 많은 방법과 도구가 있다는 것이 오히려 혼란스럽고 방해가 되는지도 모릅니다.
Posted by luuvish

댓글을 달아 주세요


XBMC가 AppleTV2와 iPhone/iPad로 porting 되었습니다.

오픈소스 프로젝트이므로 자유롭게 다운받아 Xcode로 컴파일해서 돌려 볼 수 있습니다.
다만 몇가지 제약으로 인해 탈옥된 디바이스에만 올릴 수 있습니다.

탈옥을 했다는 전제하에 아래의 내용을 따라가시면 됩니다.
탈옥한 디바이스에는 AppSync가 설치되어 있어야 합니다.



CodeSign을 속이기 위한 설정

(http://www.alexwhittemore.com/?p=398 참조)
$ cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk
$ sudo cp SDKSettings.plist SDKSettings.plist.orig
$ sudo vi SDKSettings.plist
<key>CODE_SIGNING_REQUIRED</key> 을 찾아 그 아래줄의
<string>YES</string> 을 <string>NO</string> 로 수정
<key>ENTITLEMENTS_REQUIRED</key> 을 찾아 그 아래줄의
<string>YES</string> 을 <string>NO</string> 로 수정

$ cd /Developer/Platforms/iPhoneOS.platform/
$ sudo cp Info.plist Info.plist.orig
$ sudo vi Info.plist
<key>CODE_SIGN_CONTEXT_CLASS</key> 을 찾아 그 아래줄의
<string>XCiPhoneOSCodeSignContext</string> 을 <string>XCCodeSignContext</string> 로 수정
CODE_SIGN_CONTEXT_CLASS 가 한번 더 나오므로 위와 같이 한번 더 수정

$ cd ~/Desktop
$ vi script

아래의 내용을 카피해서 script file을 만듭니다.
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\xc3\x26\x00\x00" >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support

$ chmod 777 script
$ ./script

$ mkdir /Developer/iphoneentitlements401
$ cd /Developer/iphoneentitlements401
$ curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
$ mv gen_entitlements.txt gen_entitlements.py
$ chmod 777 gen_entitlements.py



키체인 만들기

$ open /Applications/Utilities/Keychain\ Access.app/

키체인 프로그램이 열리면
Keychain Access (키체인 접근) 메뉴의 Certificate Assistant (인증 지원) 에서
Create a Certificate (인증서 생성) 를 선택

'Name (이름)' : 'iPhone Developer'
'Identity Type (신원 유형)' : 'Self Signed Root (자체 서명 루트)'
'Certificate Type (인증서 유형)' : 'Code Signing (코드 서명)'

위와 같이 iPhone Developer 라는 이름의 코드 서명을 만듭니다.
인증서가 만들어지면 정보입수에서 신뢰를 항상 신뢰로 설정합니다.



XBMC 컴파일하기

XBMC의 iOS branches source를 받아옵니다.
$ git clone https://github.com/xbmc/atv2.git xbmc

일부 툴들이 설치되어 있지 않을 수 있습니다. fink나 port로 설치해야 합니다.
$ sudo fink install autoconf help2man
$ cd xbmc
$ sudo mkdir -p /usr/local/bin
$ sudo cp tools/osx/ios-depends/gas-preprocessor/gas-preprocessor.pl /usr/local/bin/

컴파일을 시작합니다. 상당한 시간이 걸립니다.
$ make -C tools/osx/ios-depends
$ make -C tools/osx/ios-depends/xbmc
$ make xcode_depends

두가지 타겟중 필요한 것을 생성합니다.
$ xcodebuild -project XBMC-IOS.xcodeproj -target XBMC -configuration Release build ONLY_ACTIVE_ARCH=YES ARCHS=armv7 VALID_ARCHS=armv7 IPHONEOS_DEPLOYMENT_TARGET=4.1 SDKROOT=iphoneos4.2
$ xcodebuild -project XBMC-ATV2.xcodeproj -target XBMC -configuration Release build ONLY_ACTIVE_ARCH=YES ARCHS=armv7 VALID_ARCHS=armv7 IPHONEOS_DEPLOYMENT_TARGET=4.1 SDKROOT=iphoneos4.2
Posted by luuvish
TAG ffmpeg, ios, xbmc

댓글을 달아 주세요

VLC는 한번에 제대로 컴파일된 적이 없네요. iOS 버전은 최근에 작업중인지 그나마 덜 고생하고 컴파일 성공했습니다. 프로젝트들이 얽혀있어 분석이 쉽진 않겠네요.

$ tar jxvf VLC-1.1.0-iOS.tar.bz2
$ ln -s VLC-1.1.0-iOS vlc
$ cd vlc/extras/package/ios
  • build_for_iOS.sh 을 열어서 SDK 버전을 수정합니다. 현재 최신버전은 4.2.sdk입니다. IOS_SDK_ROOT="${DEVROOT}/SDKs/iPhone${PLATFORM}3.2.sdk"
  • build_for_iOS.sh 를 실행해서 컴파일해 보면 중간에 에러가 나면서 멈춥니다. patch file의 버전문제인데 ../../contrib/src-arm-apple-darwin10-ios/src/Patches/live-inet_ntop.patch의 161-185 라인을 참고해서 ../../contrib/src-arm-apple-darwin10-ios/src/live/liveMedia/RTSPServer.cpp을 직접 수정하면 됩니다. our_inet_ntoa()의 두번째 인자로 buf를 추가하기만 하면됩니다.
  • 이제 build_for_iOS.sh를 실행해서 컴파일합니다. 완료되면 vlc/install-ios-OS에 해더와 라이브러리가 생성됩니다.
  • MobileVLCKit의 static plugins를 build합니다.
$ cd vlc/projects/macosx/framework
$ xcodebuild -project MobileVLCKit.xcodeproj -target "Aggregate static plugins" -configuration "Release"
  • MobileVLCKit의 MobileVLCKit의 SDK 버전을 최신버전으로 수정하고 build합니다.
$ open MobileVLCKit.xcodeproj
fix Targets/MobileVLCKit - Get Info / Build
Configuration : All Configurations
Architectures / Base SDK : Latest iOS
$ xcodebuild -project MobileVLCKit.xcodeproj -target "MobileVLCKit" -configuration "Release"



MediaLibraryKit compile하기
  • 작업디렉토리(VLC-1.1.0-iOS와 같은 위치)에 MediaLibraryKit 디렉토리를 만들고 압축을 풉니다.
$ mkdir MediaLibraryKit && cd MediaLibraryKit
$ unzip MediaLibraryKit-1.1.0.zip
  • External 디렉토리로 들어가 MobileVLCKit의 링크를 만듭니다.
$ ln -s ../../vlc/projects/macosx/framework/build/Release-iphoneos MobileVLCKit
  • MediaLibraryKit의 SDK 버전을 최신버전으로 수정하고 build합니다.
$ open MobileMediaLibraryKit.xcodeproj
fix Targets/MobileMediaLibraryKit - Get Info / Build
Configuration : All Configurations
Architectures / Base SDK : Latest iOS
$ xcodebuild -project MobileMediaLibraryKit.xcodeproj -configuration "Release"



MobileVLC compile하기
  • 작업디렉토리(VLC-1.1.0-iOS와 같은 위치)에서 MobileVLC의 압축을 풉니다.
$ tar zxvf MobileVLC-1.1.0.tar.gz
$ cd MobileVLC
  • External 밑에 있는 MediaLibraryKit와 MobileVLCKit의 링크가 제대로 되어있는지 확인합니다.
  • MobileVLC의 SDK 버전을 최신버전으로 수정하고 build합니다.
$ open MobileVLC.xcodeproj
fix Targets/MobileVLC - Get Info / Build
Configuration : All Configurations
Architectures / Architectures : Standard (armv6 armv7)
Architectures / Base SDK : Latest iOS
build with Device-Release configurations

Posted by luuvish
TAG ffmpeg, ios, vlc

댓글을 달아 주세요

  1. Depp 2011.03.18 11:55  댓글주소  수정/삭제  댓글쓰기

    막막했었는데 이 포스팅 덕분에 쉽게 끝낼수 있었습니다. 감사합니다.

  2. JOJO 2011.08.08 08:57  댓글주소  수정/삭제  댓글쓰기

    FFmpeg를 공부하면서 vlc를 이용하여 개발해보려고 몇일째 삽질하고 있는 중입니다.

    --> 이부분에서 막혔는데요.
    build_for_iOS.sh 를 실행해서 컴파일해 보면 중간에 에러가 나면서 멈춥니다. patch file의 버전문제인데 ../../contrib/src-arm-apple-darwin10-ios/src/Patches/live-inet_ntop.patch의 161-185 라인을 참고해서 ../../contrib/src-arm-apple-darwin10-ios/src/live/liveMedia/RTSPServer.cpp을 직접 수정하면 됩니다. our_inet_ntoa()의 두번째 인자로 buf를 추가하기만 하면됩니다.

    --> 에러 발생으로 더이상 진행하기가 어렵네요. 혹시 해결방법이 있을까요?
    ../groupsock/include/GroupsockHelper.hh: In member function ‘char* RTSPServer::rtspURLPrefix(int) const’:
    ../groupsock/include/GroupsockHelper.hh:119: error: too many arguments to function ‘char* our_inet_ntoa(in_addr)’
    RTSPServer.cpp:119: error: at this point in file
    ../groupsock/include/GroupsockHelper.hh:119: error: too many arguments to function ‘char* our_inet_ntoa(in_addr)’
    RTSPServer.cpp:122: error: at this point in file
    make[3]: *** [RTSPServer.o] Error 1
    make[2]: *** [all] Error 2
    make[1]: *** [.live] Error 2
    make: *** [using-src] Error 2

    답변 부탁드립니다.

  3. JOJO 2011.08.08 09:14  댓글주소  수정/삭제  댓글쓰기

    RTSPServer.cpp 수정부분

    -->변경전
    portNumBits portNumHostOrder = ntohs(fRTSPServerPort.num());
    if (portNumHostOrder == 554 /* the default port number */) {
    sprintf(urlBuffer, "rtsp://%s/", our_inet_ntoa(ourAddress.sin_addr));
    } else {
    sprintf(urlBuffer, "rtsp://%s:%hu/",
    our_inet_ntoa(ourAddress.sin_addr), portNumHostOrder);
    }

    #ifdef DEBUG
    envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr) << "\n";


    --> 변경후
    portNumBits portNumHostOrder = ntohs(fRTSPServerPort.num());
    char buf[16];
    if (portNumHostOrder == 554 /* the default port number */) {
    sprintf(urlBuffer, "rtsp://%s/", our_inet_ntoa(ourAddress.sin_addr, buf));
    } else {
    sprintf(urlBuffer, "rtsp://%s:%hu/",
    our_inet_ntoa(ourAddress.sin_addr, buf), portNumHostOrder);
    }


    #ifdef DEBUG
    char buf[16];
    envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr, buf) << "\n";

  4. park 2011.08.08 11:24  댓글주소  수정/삭제  댓글쓰기

    해당 부분을 수정 하였는데요...아래와 같이 에러가 발생 합니다.


    ../groupsock/include/GroupsockHelper.hh:119: error: too many arguments to function ‘char* our_inet_ntoa(in_addr)’
    RTSPServer.cpp:119: error: at this point in file
    ../groupsock/include/GroupsockHelper.hh:119: error: too many arguments to function ‘char* our_inet_ntoa(in_addr)’
    RTSPServer.cpp:122: error: at this point in file
    make[3]: *** [RTSPServer.o] Error 1
    make[2]: *** [all] Error 2
    make[1]: *** [.live] Error 2
    make: *** [using-src] Error 2




    our_inet_ntoa 에 인자를 하나밖에 주지 못한다고 나오는데요...어찌 해야 하는지요?

    답변 부탁드릴께요

    • BlogIcon luuvish 2011.08.08 18:16 신고  댓글주소  수정/삭제

      our_inet_ntoa()의 경우 char* 타입의 인자 하나만 받게 되어 있네요. buf를 두번째 인자로 넣지 말고 원래의 코드로 컴파일해보세요.

  5. JOJO 2011.08.08 21:10  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. vlc관련하여 열공중인 학생입니다.
    포스팅하신 내용대로 주욱 따라 내려가는데
    한참 진행하다 에러가 발생하는데 어디서
    어떻게 조치해야 될지 잘 몰라서 질문을 드리고자 합니다.

    VLC compile하기 에서 ./build_for_iOS.sh 한참하는중에
    하기와 같은 메세지를 남기면서 중지가 되네요.
    libfaad library는 있는것 같은데 찾지를 못하는건지
    잘 모르겠습니다.

    답변 기다리겠습니다.

    checking for ffmpeg/swscale.h... no
    checking faad.h usability... yes
    checking faad.h presence... yes
    checking for faad.h... yes
    checking for faacDecOpen in -lfaad... no
    checking for NeAACDecOpen in -lfaad... no
    configure: error: Cannot find libfaad library...

  6. 작업남317 2011.08.19 10:25  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. vlc이용해서 개발하려고 며칠째 계속 컴파일하고있는 중입니다.
    포스팅하신 내용대로 진행하고 마지막에

    --> MobileVLC의 SDK 버전을 최신버전으로 수정하고 build합니다.
    $ open MobileVLC.xcodeproj
    Architectures / Base SDK : Latest iOS
    build with Device-Release configurations

    --> 이부분을 xcode상에서 SDK설정(4.3)해주고 빌드했더니 에러가나는데 혹시 해결방법이 있을까요?

    Build MobileVLC of project MobileVLC with configuration Debug

    Ld build/Debug-iphonesimulator/VLC.app/VLC normal i386
    cd /Users/User/Documents/VLC_SOURCE/test3/MobileVLC
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/Debug-iphonesimulator -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MobileVLCKit -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MediaLibraryKit -F/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/Debug-iphonesimulator -filelist /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/MobileVLC.build/Debug-iphonesimulator/MobileVLC.build/Objects-normal/i386/VLC.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -lMobileVLCKit -framework Foundation -framework UIKit -framework CoreGraphics -framework OpenGLES -framework AudioToolbox -framework QuartzCore -liconv -lz -lsqlite3 -lstdc++.6 -lbz2 -lxml2 -framework CoreData -lMobileMediaLibraryKit -framework CoreText -framework MediaPlayer -o /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/Debug-iphonesimulator/VLC.app/VLC

    ld: warning: in /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MobileVLCKit/libMobileVLCKit.a, file was built for unsupported file format which is not the architecture being linked (i386)
    ld: warning: in /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MediaLibraryKit/libMobileMediaLibraryKit.a, missing required architecture i386 in file
    Undefined symbols:
    "_OBJC_CLASS_$_VLCMediaPlayer", referenced from:
    objc-class-ref-to-VLCMediaPlayer in MVLCMovieViewController.o
    "_OBJC_CLASS_$_MLMediaLibrary", referenced from:
    objc-class-ref-to-MLMediaLibrary in MobileVLCAppDelegate.o
    objc-class-ref-to-MLMediaLibrary in MVLCMovieListViewController.o
    "_OBJC_CLASS_$_VLCMedia", referenced from:
    objc-class-ref-to-VLCMedia in MVLCMovieViewController.o
    "_OBJC_CLASS_$_MLFile", referenced from:
    objc-class-ref-to-MLFile in MVLCMovieListViewController.o
    l_OBJC_$_CATEGORY_MLFile_$_HD in MLFile+HD.o
    objc-class-ref-to-MLFile in MLFile+HD.o
    "_OBJC_CLASS_$_VLCTime", referenced from:
    objc-class-ref-to-VLCTime in MVLCMovieGridViewCell.o
    objc-class-ref-to-VLCTime in MVLCMovieTableViewCell.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status

  7. 작업남317 2011.08.19 20:12  댓글주소  수정/삭제  댓글쓰기

    네~ 말씀해주신데로 device-release로 해보겠습니다, 감사합니다.

  8. 작업남317 2011.08.24 16:56  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~답변 감사했습니다.
    근데 또 에러가 나오네요^^;

    --> luuvish 님께서 답글 달아주신데로 device-release용으로 컴파일하기위해
    개발자등록 해서 디바이스연결하고 Xcode에서 빌드&런 클릭했는데
    이번에는 에러가 이렇게 나오는데 혹시 무엇을 고쳐보면 될까요~ 뭐든지 해보겠습니다~^^


    Build MobileVLC of project MobileVLC with configuration Release

    Ld build/MobileVLC.build/Release-iphoneos/MobileVLC.build/Objects-normal/armv6/VLC normal armv6
    cd /Users/User/Documents/VLC_SOURCE/test3/MobileVLC
    setenv IPHONEOS_DEPLOYMENT_TARGET 4.3
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/Release-iphoneos -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MobileVLCKit -L/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MediaLibraryKit -F/Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/Release-iphoneos -filelist /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/MobileVLC.build/Release-iphoneos/MobileVLC.build/Objects-normal/armv6/VLC.LinkFileList -dead_strip -miphoneos-version-min=4.3 -lMobileVLCKit -framework Foundation -framework UIKit -framework CoreGraphics -framework OpenGLES -framework AudioToolbox -framework QuartzCore -liconv -lz -lsqlite3 -lstdc++.6 -lbz2 -lxml2 -framework CoreData -lMobileMediaLibraryKit -framework CoreText -framework MediaPlayer -o /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/build/MobileVLC.build/Release-iphoneos/MobileVLC.build/Objects-normal/armv6/VLC

    ld: warning: ignoring file /Users/User/Documents/VLC_SOURCE/test3/MobileVLC/External/MobileVLCKit/libMobileVLCKit.a, file was built for archive which is not the architecture being linked (armv6)
    Undefined symbols for architecture armv6:
    "_VLCMediaTracksInformationAudioRate", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_VLCMediaTracksInformationTypeAudio", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_OBJC_CLASS_$_VLCMediaThumbnailer", referenced from:
    objc-class-ref in libMobileMediaLibraryKit.a(MLThumbnailerQueue.o)
    "_VLCMediaTracksInformationType", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_VLCMediaTracksInformationTypeVideo", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_VLCMediaTracksInformationVideoHeight", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_VLCMediaTracksInformationAudioChannelsNumber", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_OBJC_CLASS_$_VLCMediaPlayer", referenced from:
    objc-class-ref in MVLCMovieViewController.o
    "_OBJC_CLASS_$_VLCMedia", referenced from:
    objc-class-ref in MVLCMovieViewController.o
    objc-class-ref in libMobileMediaLibraryKit.a(MLThumbnailerQueue.o)
    objc-class-ref in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    "_OBJC_CLASS_$_VLCTime", referenced from:
    objc-class-ref in MVLCMovieGridViewCell.o
    objc-class-ref in MVLCMovieTableViewCell.o
    "_VLCMediaTracksInformationVideoWidth", referenced from:
    -[MLParsingOperation mediaDidFinishParsing:] in libMobileMediaLibraryKit.a(MLFileParserQueue.o)
    ld: symbol(s) not found for architecture armv6
    collect2: ld returned 1 exit status

  9. 작업남317 2011.08.24 17:20  댓글주소  수정/삭제  댓글쓰기

    *과정 중간에 다른 에러가 있었는데 혹여나 이것 때문일 수도 있어서 같이 덧붙여봅니다.

    -->(build_for_iOS.sh SDK버전을 수정한 후 실행 중간에 에러발생함)

    ........생략
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 is unable to create an executable file.
    C compiler test failed.

    If you think configure made a mistake, make sure you are using the latest
    version from SVN. If the latest version fails, report the problem to the
    ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
    Include the log file "config.log" produced by configure as this will help
    solving the problem.
    make[1]: *** [.ffmpeg] Error 1
    make: *** [using-src] Error 2

    --> http://forum.videolan.org/viewtopic.php?f=12&t=91155 의 내용을 참고하여 vlc/extras/contrib/bootstrap 파일을 수정하여 넘어갔습니다.

  10. 작업남317 2011.08.24 17:27  댓글주소  수정/삭제  댓글쓰기

    --> 몇 분 정도 계속 진행하다가 다시 에러 발생합니다.

    "/usr/bin/curl" -L -O http://live555.com/liveMedia/public/live555-latest.tar.gz
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 489k 100 489k 0 0 48602 0 0:00:10 0:00:10 --:--:-- 61831
    rm -rf live || true
    gunzip -c live555-latest.tar.gz | tar xf - --exclude='[*?:<>\|]'
    mv live555-latest live || true
    mv: rename live555-latest to live/live555-latest: No such file or directory
    touch live
    patch -p0 < Patches/live-uselocale.patch
    patching file live/liveMedia/include/Locale.hh
    patching file live/liveMedia/Locale.cpp
    patching file live/liveMedia/RTSPClient.cpp
    Hunk #1 succeeded at 469 (offset -550 lines).
    Hunk #2 succeeded at 483 (offset -550 lines).
    patching file live/liveMedia/RTSPClient.cpp
    Hunk #1 succeeded at 921 (offset -14 lines).
    patching file live/liveMedia/RTSPCommon.cpp
    Hunk #1 FAILED at 136.
    1 out of 1 hunk FAILED -- saving rejects to file live/liveMedia/RTSPCommon.cpp.rej
    make[1]: *** [live] Error 1
    make: *** [using-src] Error 2

    --> 수정하지 않고 다시 build_for_iOS.sh 를 실행시켜주어 이상이 없어 그대로 진행하였습니다.

  11. 작업남317 2011.08.24 17:49  댓글주소  수정/삭제  댓글쓰기

    --> 약 10여분 이상 지나면 아래와 같이 출력이 됩니다.

    Making install in doc
    make[3]: Nothing to be done for `install-exec-am'.
    test -z "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/doc/vlc" || /Users/User/Documents/VLC_SOURCE/test7/vlc/autotools/install-sh -c -d "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/doc/vlc"
    /usr/bin/install -c -m 644 /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/bugreport-howto.txt /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/fortunes.txt /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/intf-vcd.txt '/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/doc/vlc'
    test -z "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/man/man1" || /Users/User/Documents/VLC_SOURCE/test7/vlc/autotools/install-sh -c -d "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/man/man1"
    /usr/bin/install -c -m 644 /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/vlc.1 /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/vlc-wrapper.1 /Users/User/Documents/VLC_SOURCE/test7/vlc/doc/vlc-config.1 '/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/share/man/man1'
    Making install in test
    make[3]: Nothing to be done for `install-exec-am'.
    make[3]: Nothing to be done for `install-data-am'.
    test -z "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/bin" || /Users/User/Documents/VLC_SOURCE/test7/vlc/autotools/install-sh -c -d "/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/bin"
    /usr/bin/install -c cvlc rvlc '/Users/User/Documents/VLC_SOURCE/test7/vlc/install-ios-OS/bin'
    make[3]: Nothing to be done for `install-data-am'.
    ~/Documents/VLC_SOURCE/test7/vlc/extras/package/ios


    --> 이상이 있는건지 없는건지는 모르겠지만 일단 넘어갔습니다.

  12. 작업남317 2011.08.24 18:04  댓글주소  수정/삭제  댓글쓰기

    --> MobileVLCKit의 MobileVLCKit의 SDK 버전을 최신버전으로 수정하고 build합니다.
    $ xcodebuild -project MobileVLCKit.xcodeproj -target "MobileVLCKit" -configuration "Release"

    --> 이부분에서 조금 이상한 문구들이 있지만 빌드하면 BUILD SUCCEEDED 라고 나오고 넘어갔습니다.


    rk/../../../install-ios-OS/lib/vlc/plugins/video_filter/librotate_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/librss_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/librv32_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libscale_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libscene_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libsharpen_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libswscale_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libwall_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libwave_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_filter/libyuvp_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_output/libvmem_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_output/libvout_ios_plugin.a(dummy.o) has no symbols
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Users/User/Documents/VLC_SOURCE/test7/VLC-1.1.0-iOS/projects/macosx/framework/../../../install-ios-OS/lib/vlc/plugins/video_output/libyuv_plugin.a(dummy.o) has no symbols

  13. 작업남317 2011.08.25 15:28  댓글주소  수정/삭제  댓글쓰기

    휴~해결되었습니다.~ Aggregate static plugins 타겟으로하는 빌드 속성의 SDKROOT 를
    iphoneos4.3으로 바꿔주니 빌드가 되는듯 합니다.^^

  14. 작업남317 2011.08.29 17:35  댓글주소  수정/삭제  댓글쓰기

    네~ 덕분에 감사드립니다^^ 현재 소스를 살펴보고 있는 중입니다.
    그런데 혹시 최종적으로 나오는 MobileVLC 플레이어 소스에 들어있는 VLC라이브러리에는 일부만 포함이 된거 같아요. 그래서 빠진 라이브러리를 추가해보려고 하는데 어떻게 하면좋을까요~ 그리고 혹시 라이브러리 API문서같은것도 있나요? 아무리 구글링해도 나오질 않는다는 ^^;

  15. 작업남317 2011.08.31 16:35  댓글주소  수정/삭제  댓글쓰기

    구현하려는 부분이 아이폰 카메라로 라이브 스트리밍 하려고 하거든요.
    혹시 이부분에 대한게 빠져있어서 그럴까요~

    • BlogIcon luuvish 2011.08.31 20:44 신고  댓글주소  수정/삭제

      VLC을 어떻게 활용하시려는 건지요?
      H.264 (MP4)로 전송하시는 거라면 iOS의 AVAsset library로 충분할테구요 다른 포멧으로 인코딩하시는 거라면, VLC 자체는 decoding만 하니 ffmpeg을 보셔야 하구요.

  16. 작업남317 2011.09.01 09:51  댓글주소  수정/삭제  댓글쓰기

    ->VLC 자체는 decoding만 하니 ffmpeg을 보셔야 하구요.
    라고 말씀하신게 ffmpeg라이브러리를 따로 다운받아서 이용하라는 말씀이죠?

    윈도우용 VLC를 써보니까 PC의 웹캠을 스트리밍메뉴->DirectShow->프로토콜->코덱설정->스트림 으로 진행하면 실시간 카메라 화면을 스트림할 수 있더라구요. 그래서 아이폰의 카메라를 이용해서 아이폰카메라에서 실시간으로 보여지는 프리뷰화면을 제PC상에서 볼 수 있도록 구현해보려구요.
    그래서 VLC의 라이브러리를 이용하면 되지 않을까 해서 진행중이에요.

    VLC-1.1.0-iOS/projects/macosx/framework/Headers/Public/ 폴더에서
    헤더파일을 찾아보면 VLCStreamOutput.h VLCStreamSession.h 라는 이름으로 있는데 소스를 열어보면
    + (id)ipodStreamOutputWithFilePath: ( NSString *)filePath; 라는 함수가 있더라구요. 그래서 파일을 스트리밍해주는 것으로 생각되는데 아이폰 카메라 디바이스를 설정해주고 코덱등을 설정해주는 함수가 없는것 같다는 생각이 들어요~

  17. 작업남317 2011.09.01 09:58  댓글주소  수정/삭제  댓글쓰기

    영상은 h.264 음성은 ac3 나 aac 프로토콜은 mpeg2-ts로 가능할까요~

  18. BlogIcon luuvish 2011.09.01 23:34 신고  댓글주소  수정/삭제  댓글쓰기

    웹캠을 스트리밍할 수 있는지는 몰랐네요.
    ffmpeg으로는 디코딩만하는데 어디서 인코딩을 하려나 의아했습니다.

    말씀하신 해더와 펑션들은 MobileVLCKit에는 없고 VLCKit엔 있어요. iOS로 포팅하면서 빠진것 같네요.
    혹시나 해서 Mac OSX 용 VLC를 돌려보니 웹캠이 동작하더군요.

    맥과 아이폰의 카메라 구동 라이브러리가 얼마나 다른지는 봐야 알겠지만 맥용 VLC를 분석해 보고 MoblieVLC의 빠진 부분을 끼워넣는 것도 가능해 보입니다.

    근데, avc/aac 로 고정해서 스트리밍만 하는 거라면 굳이 vlc를 쓸 필요도 없어요. 애플에서 제공하는 AVAsset만으로도 충분해요.

  19. 작업남317 2011.09.02 13:23  댓글주소  수정/삭제  댓글쓰기

    넵~ AVAsset으로 구현하는 방법에 대해 좀더 알려주실수 있으실까요?

    그리고 답변 주셔서 감사합니다^^

  20. 작업남317 2011.09.02 16:14  댓글주소  수정/삭제  댓글쓰기

    계속 찾아봤는데 AVAsset 에 대해 아는바가 없어서 찾다보니 AVFoundation쪽인거 같다고 생각하고 찾아보았습니다.
    아래는 AVFoundation 기반 샘플 프로그램 주소입니다. 실시간 프레임을 얻을 수 있다고 합니다.
    http://shine10ee.blog.me/10108482406
    구글링을 해보니 ios 라이브러리에서 파일로는 인코딩이 가능하지만 h264로 인코딩된프레임은 얻을 수 없다는 정보를 보았습니다.
    (제가 영어를 제대로 읽었는지는 모르겠습니다.)
    그래서 그 프레임을 인코딩을 따로 해주어야하고 그것을 후에 스트리밍해주어야 한다는 정보인것 같았습니다.
    영상부분만 찾아보았는데 음성부분도 있다는것을... OTL
    그래서 말씀하신 AVAsset으로 부디 쉽게 해결되었으면 하는 희망이 있습니다. ~

한국의 맥 사용자에겐 거의 필수 유틸인 Movist를 컴파일해 보았습니다. 코드 업데이트도 안된지 꽤 되었고 그동안 snow leopard에서는 컴파일이 안되는 줄 알았는데 몇번의 시행 착오 끝에 컴파일에 성공했습니다. 컴파일은 되지만 동작이 정말 잘 되는지는 모르겠지만요.




Movist 홈페이지 : http://cocoable.tistory.com/
Movist 구글코드 페이지 : http://code.google.com/p/movist/
Movist 소스 저장소 : http://movist.googlecode.com/svn/trunk

Movist를 compile 하기 위해서는 git와 yasm이 설치되어 있어야 합니다.





FFmpeg library compile하기
    $ svn checkout http://movist.googlecode.com/svn/trunk movist
  • 우선 Movist 소스코드를 가져옵니다.
  • movist/contrib 에 있는 bootstrap 파일을 수정합니다.
    • SDK_TARGET=10.4 를 SDK_TARGET=10.6 으로 수정
      MACOSX_SDK = /Developer/SDKs/MacOSX10.4u.sdk 를 MacOSX10.6.sdk 으로 변경
  • movist/contrib/src 에 있는 build_ffmpeg_mt.sh 파일을 수정합니다.
    • SDK_TARGET=10.4 를 SDK_TARGET=10.6 으로
      MACOSX_SDK = /Developer/SDKs/MacOSX10.4u.sdk 를 MacOSX10.6.sdk 으로
      #git clone git://git.ffmpeg.org/libswscale/ ffmpeg-mt/libswscale 의 주석 #를 제거합니다.
  • movist 디렉토리에서 build_extlib.sh를 실행합니다.
  • patch 파일이 뭔가 문제가 있지만 컴파일은 일단 잘 됩니다.
  • movist/contrib/lib 에 필요한 라이브러리가 생성되었습니다.

Movist compile하기
  • Movist project 을 Xcode로 엽니다.
  • Targets에 있는 Movist의 Info 창을 엽니다.
  • Architectures 항목의 Base SDK 란을 Latest Mac OS X 로 변경합니다.
  • Linking 항목의 Other Linker Flags 의 MacOSX10.4u.sdk를 MacOSX10.6.sdk로 변경합니다.
  • build 해보면 무수한 error message가 나올 겁니다. MMovie_QuickTime.h 의 #import <QTKit/QTKit.h> 가 다른 해더보다 뒤에 올 때 이런 문제가 생깁니다. SDK가 버전업되면서 해더의 dependency에 문제가 생긴 모양입니다. 제일 단순한 해결책은 (정석은 아니지만) Movist.h 파일의 맨 위에 #import <QTKit/QTKit.h> 를 추가하는 것입니다.
  • 이제 문제없이 build 됩니다. ppc일 때 제대로 도는지는 모르겠네요.

Posted by luuvish

댓글을 달아 주세요

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

    이번에도 열심히 따라했는데 워닝은 233개 에러는 14개가 나네요. ㅡ,.ㅡ;;; 흑흑!~

    "_av_get_channel_layout_string", referenced from:
    _avcodec_string in libavcodec.a(utils.o)

    에러는 이런식으로 전부 ffmpeg 라이브러리에서 난다고 나오는데
    이유를 모르겠어요 ㅡ,.ㅡ;;;

    혹시 아실려나요? T.T

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

    ffmpeg 코드가 업데이트 되면서 해당되는 function이 지워진 모양입니다. git clone 한 후 2011년 초쯤의 버전으로 revert 해보세요.

요즘 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가 아예 컴파일이 안되어 있는지도 모릅니다.

 Head First Java 를 완독하고 뭔가 배운걸 티내볼까 하다가 간단한 프로그램을 짜보는게 좋겠다고 생각했습니다. 그래서 항상 작업하면서 아쉬웠던 툴을 만들어 보자고 시작한 프로젝트입니다.

 사실 Java는 기본적인 문법은 10년전에 알고 있었지만 써먹을 기회가 없었습니다. (솔직히 Java를 배울 당시에는 Java가 이렇게 까지 유명해지고 쓸모있을 줄 몰랐죠) Java와 아무 상관없는 일을 하다 보니 Java가 어떻게 발전하고 사용되어 왔는지 잘 몰랐죠. 정신을 차리고 보니 어느덧 Java는 C 언어 만큼 (혹은 그 이상) 많이 사용하는 언어가 되었습니다. 사용하지는 않더라도 알고 있어야 하는 기본 언어가 되어버렸습니다. 그래서 Head First Java를 읽었습니다.

 Head First 시리즈는 초보자용 책이 아닙니다. 그림도 많고 예제가 많아서 초심자가 보는 책이라고 생각하고 읽으면 분명 후회합니다. 그렇다고 전문가용 책도 아닙니다. 복잡하고 난해하고 잘 사용하지 않는 내용은 다루지 않습니다. 정상적인 프로그래머가 알아야 할 기본적이고 핵심적인 사항을 정확하게 이해하기 위해 노력한 책으로 평가하고 싶습니다. 저처럼 기본적인 건 알고 알고 있는 것중 약간 부정확하거나 헛갈리는 것, 그리고 다시 정리해서 이해해야 하는 저의 상황에 정확히 맞는 책이었습니다. Head First Java 덕분에 inner class를 이해하게 되었고 jar package와 jini 등을 구별하게 되었습니다. 물론 template 같은 경우는 사용할 수 있으나 만들 수는 없구요. 이정도의 수준만 되면 나머지는 java api document나 코딩하면서 익힐 수 있으니까 전문가처럼 능숙하지는 않아도 그럭저럭 코딩할 수 있겠죠... 아마..?

YuvViewer-0.1.jar


 YUV Viewer 입니다. YUV 4:2:0, 4:4:4 등의 file을 이미지로 보여주는 툴입니다. 복수개의 YUV 이미지를 화면에 보여주고 display할 수 있습니다. 뭐 자세한 건 생략할게요. 아는 사람은 쓰고 모르는 사람은 안쓰는 툴입니다. (--;)

 사용하기 위해서는 위의 첨부된 파일을 받으시고 콘솔에서 java -jar YuvViewer-0.1.jar 라고 타이핑하시거나 그냥 더블 클릭하셔도 됩니다. java runtime은 깔려 있어야 겠죠?


 습작이라 손 볼 곳은 많지만 우선은 이정도로 정리하고 올립니다. 저작권 같은 건 없으니 필요한 건 알아서 고치시면 됩니다. jar 안에 소스도 포함시켰어요. 잘 안 돈다고 뭐라하셔도 할 말 없고 수정했으니 반영하라고 던져주셔도 곤란합니다. 좀 여유가 생기면 수정된 버전을 만들지도 모르지만 약속드릴 수 없습니다.

 Java 자체도 조금 느리긴 하지만 최적화 할 여지가 몇군데 있습니다. YUV to RGB conversion은 일부러 최적화하지 않고 그대로 두었습니다. play mode나 fast backward/forward 일 때 이미지 로드 루틴을 thread로 분리하고 decoding된 frame들을 buffering 해야 하는데 이것도 아직 하지 않았습니다. 귀찮기도 하고 굳이 viewer가 realtime일 필요가 없었거든요. :-) 우선 최적화 되지 않은 코드로 작성하고 나중에 최적화해서 얼마나 차이가 나나 보고 싶기도 했었어요. 그런데 어느 정도 도니까 귀찮아졌네요. 언젠가는 고치겠죠?
Posted by luuvish
TAG java, swing, viewer, yuv

댓글을 달아 주세요

  1. BlogIcon babyworm 2010.12.31 22:22  댓글주소  수정/삭제  댓글쓰기

    오~~ Chad~!
    이거 jre만 있음 되겠죠? 회사에서 함 써볼께요 ㅋㅋ. 예전 툴은 인간적으로 너무 별로라서..
    그러고보니, java file도 들어있네요. Thanks~


01. Code Complete 2/E 

02. Refactoring 

03. Design Patterns: Elements of Reusable Object-Oriented Software 

04. The Practice of Programming 

05. The Pragmatic Programmer 

06. Programming Pearls, 2/E 

07. Joel on Software 

08. More Joel on Software 

09. I. M. Wright's Hard Code 

10. The Art of UNIX Programming 

11. Coders at Work 

12. Peopleware 

13. The Mythical Man-Month 

14. The C Programming Language 

15. Effective Java 2/E 

16. Head First Java 

17. Effective C++ 3/E 

18. More Effective C++ 

19. The C++ Programming Language 3/E 

Posted by luuvish

댓글을 달아 주세요

에서 발췌했습니다.


[정보]iPhone & iPodTouch와 SDK 연대기 

01. 2007-01-10 / [MWSF2007] iPhone 발표*** 

02. 2007-08-29 / Apple 'special event' - 2007년 9월 5일 확정 (iPodTouch 발매)*** 

03. 2007-09-11 / iPhone, 100만대 판매 달성 

04. 2007-10-12 / Apple 공인 iPhone iPod touch용 Web apps 모음 

05. 2008-01-16 / [MWSF2008] iPod touch 소프트웨어 업그레이드 발표 

06. 2008-01-16 / [MWSF2008] iPhone의 1.1.3의 업데이트 
새롭게 변한 것은 
1.구글맵으로 현재 자신의 위치를 찾을 수 있습니다. 
2. 사파리를 통해 북마크를 하던 것을 바로가기 아이콘을 만들어 홈스크린 배치. 
3. 홈스크린에 있는 아이콘의 위치를 마음대로 바꿀 수 있습니다. 
4. SMS 메세지 보내기가 한 사람만 보낼 수 있었던 것을 다중 가능. 

07. 2008-02-27 / iPod Touch 32G 전자파 인증 완료 (한국개통용) 

08. 2008-02-29 / iPhone SDK 스페셜 이벤트 3월6일 개최*** 

09. 2008-03-28 / iPhone SDK (build 9A2151) 배포 

10. 2008-05-07 / iPhone SDK (build 9M2173a, beta 5) 배포 

11. 2008-06-10 / [WWDC 2008] iPhone 3G 발표*** 

12. 2008-06-10 / iPhone SDK (build 9M2199, beta 7) 배포 

13. 2008-06-27 / iPhone SDK Beta 8 Build 9M2199a, iTunes 7.7 배포 
App Store 어플리케이션 접수 실시 

14. 2008-07-10 / App Store도 열렸네요***** 

15. 2008-07-10 / App Store Korea 확인 

16. 2008-07-11 / MobileMe Service 시작한 듯 *** 

17. 2008-07-12 / MobileMe 1.1 Update 

18. 2008-07-14 / Apple 3일만에 iPhone 3G 100만대 팔아 

19. 2008-07-15 / AppStore 3일만에 1,000만건이상 다운로드 

20. 2008-07-21 / iPodTouch 펌웨어 1.1.5 배포 

21. 2008-08-05 / iPhone 2.0.1 발표 

22. 2008-08-05 / iPod touch 용 iPhone Software 2.0.1 업데이트 

23. 2008-08-19 / iPhone Software Update 2.02 배포 

24. 2008-08-22 / iPhone 2차 판매개시국 : 1차 판매 개시 22개국 / 2차 판매 개시 22개국 *** 

25. 2008-09-10 / iPhone, iPod touch 2.1 소프트웨어 업데이트 9월12일 발표 

26. 2008-09-12 / iPhone SDK for iPhone OS 2.1 (build 9M2517) 배포 

27. 2008-09-12 / iPhone 펌웨어 2.1 배포 

28. 2008-10-02 / 애플, 아이폰 NDA 포기***** 

29. 2008-11-21 / Touch 2세대 Firmware 2.2 업데이트 

30. 2008-11-23 / iPhone SDK for iPhone OS 2.2 배포 

31. 2009-01-17 / 애플, App Store 다운로드 5억건 돌파 

32. 2009-03-18 / iPhone OS 3.0 발표 

33. 2009-04-01 / iPhone OS 3.0 Beta 2 출시 

34. 2009-04-15 / iPhone OS 3.0 Beta 3 출시 

35. 2009-04-24 / App Store 10억 다운로드 완료 

36. 2009-04-29 / iPhone OS 3.0 Beta 4 출시 

37. 2009-05-07 / iPhone OS 3.0 Beta 5 배포 

38. 2009-06-09 / [WWDC2009] iPhone 3Gs 발매 ***** 

39. 2009-06-09 / iPhone OS 3.0 GM Seed 배포 

40. 2009-07-15 / iPhone OS 3.1 Beta 2 배포 

41. 2009-07-28 / iPhone OS 3.1 Beta 3 배포 

42. 2009-08-01 / Apple iPhone - 3.0.1 배포 

43. 2009-09-10 / Apple iPhone OS 3.1 발표 

44. 2009-09-29 / App Store 다운로드, 20억건 돌파 

45. 2009-10-09 / iPhone, ipod Touch 0S 3.1.2 소프트웨어 업데이트 발표 

46. 2009-11-04 / AppStore 10만 개 App 돌파 

47. 2009-11-25 / 드디어 애플사이트에 태극기 등극 
Posted by luuvish

댓글을 달아 주세요