회원 및 비회원 모두 열람이 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

FFMPEG의 LGPL 라이브러리를 이용해서 LGPL 방식의 동영상 플레이어를 만들고 있는 중입니다.


일단 플레이이어의 기본이라고 할 수 있는 동영상의 재생이 되는 것까지는 그나마 만들었습니다.

앞으로 SEEK기능 등을 추가하면 플레이어로 사용하는데 문제가 없을 것 같습니다.


그런데 크리티컬이 터졌습니다. 심리적인 부분입니다.

(윈도우7으로 올라가면서 왠만한 작업에는 블루 스크린은 뜨지 않는 군요.)


나름 디코딩이 잘되는 것으로 보이던 플레이어는 엄청난 코덱 제한을 갖고 있더군요.

심각할 정도입니다. GPL코드가 아닌 FFMPEG의 플러그인 코덱들(MP3LAME, FAAC, OGG, VORBIS 다들 음성코덱이더군요.)도 컴파일 해서 사용이 가능하게 만들었으나... 요즘 가장 각광받는 오디오코덱인 AAC는..FAAD란 GPL에서 플레이가되더군요. FAAC에서 플레이 될 줄 알았는데... 큰 배반감을 느꼈습니다. FAAC는 엔코더이더군요.


FFMPEG쪽에는 AAC 디코더가 없으니 AAC음성소스를 사용하는 동영상 파일을 크리티컬을 안겨주며 죽습니다.


MP4 지원은 포기... 해야 할지도 모르겠네요. MP4파일들이 압축률이 좋아서 수 많은 하드웨어에서 사용되고 있지만.... 제 플레이어에선 제외해야 할 듯 합니다.(AAC 디코덱 언제 만들고 있어요 ㅠㅠ.) 제 플레이어의 핵심 기술쓰려면 포기하세요. 라고 살며시 얘기해야 할 듯합니다.


윈도우 측이라면 DirectShow를 이용해서 우회할 수 있을 것 같은데 멀티 플랫폼이 문제네요.

그냥 이 참에 윈도우 측에서만 사용하자고 할 수도 없는 것이 최초 목표 자체가 멀티 플랫폼이었고 그래서 SDL + FFMPEG였는데... 배보다 배꼽을 크게 만드느냐? 아니면 포기하고 쓰느냐가 문제입니다.


제가 테스트 해 본 바에 의하면

FFMPEG의 LGPL은 

동화상은 x264를 통한 좀 더 안정적이고 빠른 h264지원을 제외하고 대부분을 지원합니다.


음성은... 자체에 코덱이 거의 전무하다 시피하고 mp3lame이나 vorbis는 별도의 코덱으로 지원이 가능합니다.(mp3lame과 vorbis는 lgpl입니다.)


컨피그레이션 과정 중에는 분명 많은 코덱을 지원하는 것처럼 표기되지만 실제 플레이에서는 뻗어 버립니다.


뭔가 딴 방법이 있는지 어떤 지는 현재로서는 모르겠고, 일단 오디오 패킷과 비디오 패킷을 자르는 부분에서 오디오 패킷은 별도의 처리를 통해서 지원하는 방식으로 해결을 해야 할 것으로 보입니다.

문제는 실시간으로 저사양에서 풀지 못한다면 임베디드 쪽은 포기해야 합니다.


멀티플랫폼을 원했던 이유가, wince, wm, 안드로이드, iphone에서 공통으로 사용되었으면 좋겠다는 생각이었기 때문에 조금 충격적이네요.


각 기기들의 자체 플레이어와 연결해서 사용할 수 있는 방법이 가장 좋을 것 같기는 하는데.(비디오 가속도 지원받고..) 이부분은 대부분의 하드웨어 벤더에서 감추는 부분이라서 불가능하기 때문에 문제가 많죠. ㅠㅠ


고현철

2010.02.24 01:43:25
*.140.0.217

그렇게 하지 마시고......faad 코덱만 따로 붙이시기 바랍니다.

 

그 후에 그 것을 .so 형태로 배포하시면 됩니다.

 

즉, 코덱의 사용은 사용자 측면으로 넘기시면 됩니다. 곰이나 다른 플레이어들이 글케 하잖아요......ㅎ

도찬구

2010.02.24 02:05:50
*.110.74.254

현철님.. 그거 위험한데요. (AAC에 대해서 완벽히 종속되기 때문에 GPL에 위배되죠.) 

그 덕분에 http://www.ffmpeg.org/shame.html 이런 페이지가 존재하죠.

KMP는 아예 개념이 없고, GOM은 나름 GPL인냥 소스도 공개하지만 전체 소스를 공개하지 않고 있기 때문에 계속 등록되어 있는 것으로 알고 있습니다.


아마 FFMPEG에서 한 방 날리면 GOM하고 판도라측은 대박 날 듯 합니다.

뭐 우리나라의 일반적 인식으로는 기껏해야 저작권법 위반일 듯 하기는 한데, 음악 파일 등의 저작권만 인정하는 실정이니.. 뭐 크게 무리는 없겠죠.. 한국에서만..

도찬구

2010.02.24 02:36:53
*.110.74.254

아! faad라이브러리가 faad2로 변경되면서 gpl로 변경되었네요. faad 2002년 버전의 경우엔 lgpl입니다.

일단 테스트 해본 후에 사용이 가능할 지 등에 대해서 적도록 하겠습니다.

다만 문제는 faad의 예전 버전이 ffmpeg에서 돌아가느냐가 중요 포인트인데... 너무 오랜 시간이 지나가서 현재의 ffmpeg으로는 에러가 날 것 같습니다.


일단은 시도는 해 봐야겠습니다.

된다면 aac지원 코덱까지는 무리없이 사용이 가능할 듯 합니다.

고현철

2010.02.24 02:42:56
*.140.0.217

코덱을 ffmpeg의 libavcodec에 등록해서 쓰지 마시고, 아예 따로 하시면 됩니다.

 

.so로 직접 배포만 하지 않으면 되는것이죠. 사용자가 사용하도록 하면 됩니다. 다운로드 받아서....

도찬구

2010.02.24 03:12:56
*.110.74.254

설치 시에 해당 파일을 받을 수 있게 기능을 추가하는 형태로 말씀하시는 건가요?

그런 식의 회피라도 문제가 없을까요?


제 기억에는 현철님도 gpl때문에 고생하셨던 것으로 기억하는데 그렇게 해결하셨나요?

플러그인 방식 등도 GPL에서는 공개를 원칙으로 하는 것으로 알고 있습니다.

KLDP쪽에서 한참 논의 되었던 내용이고 아직도 스레드가 남아 있는 부분인데...


이넘의 GPL전문이 서로 해석하는 방식들이 달라놔서 뭐가 맞는지 정확히 구분이 안되요. ㅠㅠ

심한 예로는 GPL로 만들어진 데이터를 이용한 프로그램도 GPL이 되야 한다고 하는 사람도 있는 실정이라서.. 무척이나 헷갈리죠.

고현철

2010.02.24 07:15:05
*.139.32.147

전 GPL은 되도록이면 신경을 안쓰고 사는 편입니다.

 

플러그인을 공개하는 것은 상관이 없습니다. 배포와 상용화가 문제죠.....

플러그인은 누가 작성해도 상관이 없는겁니다.

 

예를 들어서 player를 만들고 표준 인터페이스를 공개한 상황이라면, 누가 플러그인을 만든다고 제재를 가할 수는 없는 것이죠.

 

플러그인을 만든 사람이 공개를 하면 되는 것이지, 플레어이를 만든 사람이 그 부분까지 책임질일은 아닐 듯 합니다.

도찬구

2010.02.24 18:32:21
*.110.74.254

faad lgpl 테스트 해봤습니다. 안 되네요. 

dll 내용이 많이 수정 되었는지 연결되지 않습니다.


다행히 오픈된 코덱만으로 사용이 가능하도록 협의 봤습니다.

김경민

2010.02.24 20:57:22
*.189.97.177

ffmpeg 최신 버전(정확히는 구글 SoC의 ffmpeg 코덱이 추가된 버전)에서는 AAC 자체 구현 코덱이 들어가 있습니다.

ffmpeg SoC 에서 aac/ac3 에 대한 LGPL의 ffmpeg 코드가 개발되어 추가되었습니다.

이 코드까지 테스트를 해보신건지는 모르겠지만 일단 LGPL로 된 코드가 있긴 하니 필요하다면 개선도 가능하지 않을까요?

도찬구

2010.02.24 21:53:51
*.110.74.254

현재 ffmpeg 5.0버전을 가지고 테스트하고 있습니다.(soc이후입니다.)


--enable-gpl 부분을 제외하고 컴파일 했으며 컴파일 옵션은 다음과 같습니다.

$ ./configure --extra-cflags="-mno-cygwin -mms-bitfields" --extra-ldflags="-Wl" --enable-static --enable-shared --enable-memalign-hack --disable-debug --target-os=mingw32 --enable-libmp3lame --disable-network


현재 mingw에서 개발하고 있습니다. 

ㅠㅠ mp4코덱으로 압축된 파일도 열리지 않는 듯 하고, 비트레이트가 높거나 특이한 음성 코덱을 쓴 동영상은 화끈하게 죽습니다. ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 교육 홍보 및 광고는 "교육 및 세미나 홍보" 게시판을 이용해 ... 관리자 2010-07-15 107998

Android 2.1 eclair를 S3C6410에 포팅을 하면서.... [4]

리눅스 커널 3.6 과 쿼드코어 Exynos 4412 [2]

[ffmpeg]찬구는 크리티컬 데미지를 입었습니다. [9]

[뻔뻔] 이제부터 나도 "강남인" ㅎㅎ (뻔뻔스터디 강남 1호점) file [2]

S5PC100용 Android Multimedia Player 결국 직접 만들어야 ... [5]

[안드로이드] 생강빵/Gingerbread 소스가 풀렸습니다. [1]

Android Serial(COM)Port 사용 하기(Odroid -T) file [6]

EXYNOS-4210 초소형 개발 보드 소개 [6]

ODROID 무선랜 MAC address 변환 프로그램 [2]

삼성 S5PV310(Exynos4 series) 저가보드 간단한 사양 [19]

오픈소스 프로젝트와 오드로이드 file [23]

Odroid 동영상플레이어 file [3]

  • skiman
  • 2009-11-11
  • 조회 수 7090

AESOP-S5PV210, SD에 U-boot 쓰기 및 부팅 [2]

우분투 온 엑시노스 file [18]

여러분들은 빌드업 PCB 제작의뢰를 어디에 하시나요? [3]

진저브레드 32bit 에서 build 하려면 다음과 같이 하면 된대요 [5]

[정보] 삼성 스마트폰 M480(미라지)에 안드로이드 올라간 화면 file [2]

축하합니다. :) [1]

Android와 SDL(Simple Direct Layer) library.... [4]

aESOP-S5PC100 Board 리눅스 커널 부팅 로그 입니다. [2]

사용자 로그인