기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

123.JPG : 타겟보드안에서 ffmpeg사용 질문들립니다.

2222.JPG : 타겟보드안에서 ffmpeg사용 질문들립니다.

안녕하세요 임베디드에 관심이 많아서 열심히 공부하고 있는 대학생입니다.

 

저희가 하는 프로젝트가 있는데 여기서 막혀서 도저희 진행이 안되서 이렇게 문의글을 남깁니다.ㅠㅠ

 

먼저 저희가 사용하고 있는 제품은 ODROID-X2라는 제품이고 hardkernel제품입니다.

CPU는 corete-a9을 이용하고 있으며 안드로이드 플렛폼입니다.

 

먼저 개발용 피시에 우분투를 설치를 하고 오드로이드 보드와 연결후 크로스 컴파일을 구축하였구요

 

테스트용으로 간단한 printf 프로그램을 짜서 보드 쉘에 접속해서 컴파일이 되는지까지 확인을 했습니다.

 

저희가 하고 싶은것은 보드를 통해 들어오는 영상을 ffmpeg을 이용해서 압축하여 스트리밍으로 날리는 것을 하고 싶은데 일단은 들어오는 영상을 ffmpeg을 이용해서 압축하는 것을 하려고 하는데 여기서 막혀서 진행이 안되고 있습니다.ㅠㅠ

 

피시 우분투 터미널창에 adb shell 명령어를 쳐서 보드 쉘에 접속을 한후

보드에서 돌아갈수 있는 ffmpeg 이랑 용량이 적은 avi 파일을 특정 디렉토리에 넣어두었습니다. (스샷참조)

 

그리고 특정 디렉토리에 가서 일단 아무 옵션없이 그냥 인코더를 하려고

./ffmpeg -i clock.avi clock2.avi 명령어를 입력하였는데
스샷과 같은 에러가 뜹니다.

호스트 피시에서는 이러한 명령어를 입력하면 인코딩이 되었는데
왜 보드에서는 안되는지 도통 해결을 못찾겠습니다.

인터넷을 아무리 뒤져바도 답을 못찾겠습니다. 어떻게 해결할수 있을까요 부탁드립니다.ㅠㅠ

그리고 raw파일을 ffmpeg을 이용해서 압축이 가능한가요?

보통 웹캠이나 카메라를 통해 들어오는 영상이 저장이 될텐데 raw파일로 저장이 되는건가요?


고도리

2013.02.14 09:31:07
*.111.12.170

일단, ffmpeg binary를 host 상에서 file 명령을 이용해서 어떻게 나오는지 결과를 보여주시고요.


관련 질문이 가끔 올라오거나, 아니면 메일로 오는 경우가 있는데, 답이 좀 난감한 경우가 많습니다.


1. ffmpeg을 compile하는 방법이 2가지 입니다.

- x86 host에서 cross compile시 static으로 compile하는 방법

- ffmpeg을 android toolchain을 이용해서 compile하는 방법


두번 째 것을 저는 많이 이용합니다(예전의 경우). 인터넷 찾으시면 자료가 있을 것이고요.


2. 보통 안되는 부분은 데이터가 잘못되었거나, permission 문제인 경우가 많습니다.

즉, ffmpeg이 write를 해야하는데 문제가 생긴 경우조...


3. ffmpeg 옵션을 좀 더 자세하게 지정해 주시기 바랍니다. 이것도 인터넷 찾으시면 나올겁니다.

제가 쓰는 옵션을 올려드리고 싶은데, 지금 집이라 자료가 없네요....쩝.


4. raw file을 이용해서 당연히 ffmpeg을 이용해서 압축이 가능합니다.

다만, yuv420 형태의 영상을 쓰시는게 가장 좋습니다.


5. 웹캠의 경우 대부분 mjpeg이나 yuv420 raw 영상으로 나올겁니다.


그런데, 질문...


꼭 ffmpeg이어야 하나요?

아니면 그냥 전송만 하면 되는 것인가요?


등등의 의문이 나오기는 합니다.


즉, 용도가 무엇이냐에 따라 답이 좀 틀려질테고요.

대학생 이시니....아마도 졸업작품이나 간단한 프로젝트일 듯 싶습니다.


개인적으로 추천드리고 싶은 것은 android camera를 이용해보시는 고난이도(?)의 

응용 프로그램도 함 try를 해 보는 것도 나쁘지 않을까 생각합니다.


ffmpeg 관련 답글을 주시면 제가 내일 출장 다녀와서 내일 모레 저녁(?)쯤에 

제가 컴파일 한 android용 ffmpeg이 있나 살펴보고 있으면 간단하게 binary라도 올려드리겠습니다.


이호석

2013.02.14 10:03:56
*.193.62.172

첨부한 스크린샷이 호스트 피시에서 아무런 옵션없이 ffmpeg을 사용했을 경우입니다.
사용한 명령어는
ffmpeg -i clock.avi clock1.avi 입니다.
다른 파일로 해봤는데도 크기가 줄어든걸 알 수가 있는데 (이파일의 경우는 다르지만..)
보드내에서는 호스트피시에서 사용하는 방버이랑은 좀 다른건가요?

 

그리고 제가 사용하는 방법은 언급해주신 방법중에서 첫번째 인것 같습니다. 아직 초짜라서
잘은 모르겠는데 대학원생들한테 물어봐가면서 한거라 첫번째 인것 같습니다.

 

아참 그리고 이게 공모전에 당선되서요 큰 지원금은 아니지만 몇백 지원받아서 하고있는
프로젝트입니다.. 잘하고 싶어서요..ㅠㅠ 경력도 싸이고 이력서쓸때 도움이 많이 될거 같아서요ㅎ

 

영상을 그냥 보내도 상관은 없지만 스트리밍으로 보낼꺼라서 이왕이면 효율을 생각해서 인코딩을 한후
보내는 것이 좋을 것 같다는 생각을 해서요.. 이게 무선이 될경우는 파일크기가 중요할거라고 생각을
해서요..  꼭 ffmpeg이 아니여도 상관은 없지만 ffmpeg 이 오픈소스이고 이걸로 해보는게 어떠냐고 추천을 받기도 했구요.. 일단 목표는 들어오는 영상을 압축을 해서 스트리밍으로 서버에 보내는것을 목표로 하고있습니다.

저희가 만들려고 하는것이 위의 목표와 같습니다.

 

일단은 타겟보드에서 옵션을 자세히 줘보도록 해볼께요
그리고 유요한 파일이 아니라는 말이 뜨는걸 보니 보드내에서 사용할수 있도록 파일을 변경을
해야된느건지.. 일단 그런쪽으로 좀 많이 알아보겠습니다.ㅠㅠ

아 그리고 카메라의 경우에는 해당업채에서 관련보드와 세트로 카메라를 파는데
아무래도 그 카메라를 이용하는것이 좋겠죠?
일반 웹캠은 안드로이드 플렛폼을 지원하지 않기때문에.. 일단은 테스트 해보는 거면은
아무래도 해당업체에서 같이 판매하는 카메라를 쓰는게 좋지안을까 생각은하는데..ㅠ

ffmpeg의 사용법이라든가 참고할만한 관련자료있는곳좀 가르쳐 주시면 감사하겠습니다.ㅠㅠ
이게 혼자서 자료찾아가면서 하는게 진짜 만만치가 안네요.ㅠㅠ

진짜 도움주신다니.. 감사합니다..ㅠㅠ

첨부

고도리

2013.02.14 10:31:35
*.111.12.170

짜파게티 먹으러 가려고 했는데....답글이...ㅎ


1. 제가 보기엔 ffmpeg의 컴파일 옵션이 host와 틀려서 나오는 증상인 듯 합니다.

즉, ffmpeg의 옵션을 제대로 넣는다면 큰 문제없이 될 것입니다.


2. 1번의 이유는.......ffmpeg의 경우 encoder용으로 쓰려면 외부 라이브러리를 필요로 하는데

- 현재 host에서는 오디오의 경우 truespeech --> libmp3lame 으로 encoding합니다.

- 여기서 libmp3lame은 ffmpeg에 포함되어 있지 않는 외부 라이브러리입니다.


즉, arm용으로 컴파일 하시려면 일단 libmp3lame을 컴파일 하신 후 해당 라이브러리를 ffmpeg에 포함시킬 수 있도록 컴파일이 되어야 한다는 얘기입니다.


mpeg4 encoder의 경우도 비슷할 겁니다.


3. 제가 보기엔 ffmpeg을 좀 더 상세하게 컴파일 하는 방법이 있을 듯 합니다.

여기엔 두가지 방법이 있습니다.


1> host에서 관련 라이브러리들을 전부 arm용으로 cross compile 하신 후 ffmpeg에 static으로 포함시키는 방법

2> android에서 관련 라이브러리들을 전부 android용으로 컴파일 후 ffmpeg에서 import 하는 방법


제가 추천드리고 싶은 부분은....


ffmpeg 자체내에 가지고 있는 encoder를 쓰시는게 어떨까 합니다.


예를 들어...


video: mpeg1 or 2

audio: mp2


아니면 mjpeg 등등...


저는 예전에 mpeg1 video/mp2 audio 를 사용해서 그냥 간단하게 장난한 적이 있습니다.


서버에 자료가 있나 찾아봤는데........회사 pc에만 있네요.

예전 xvid와 mp3를 이용해서 converting할 때는 다음과 같은 옵션을 썼습니다.


./ffmpeg -i xi.tp -b 1500k -s 640x428  -vcodec libxvid -ar 44100 -ab 128 -ac 2 -acodec libmp3lame xi.avi


3. camera의 경우는 업체서 다 포팅해 놓은 것을 이용하는게 좋을겁니다.

직접 하시려고 캠을 샀는데 드라이버가 없으면 허걱일테죠....쩝, 


게다가 기술지원도 잘 받으실 수가 있을겁니다. 예전 aesop 에 올라온 글을 보면 4개의 web cam도

동시에 지원되는 듯 하니, 큰 문제는 없으실 겁니다.


4. ffmpeg 관련 자료는 많은 듯 한데, 실제로는 거의 없습니다.

소스를 보면서 일일이 추적하는거 외엔 현재 자료가 그다지 없을겁니다.


게다가 버전이 올라가면서 예전 문서들은 꽝......인 경우가 많아졌습니다.



5. 제 개인적인 생각은.....camera는 좀 뒤로 미루시고.


yuv420인 raw 파일과 wav 파일 혹은 raw 16bit pcm file을 이용해서 간단하게 mjpeg이나 mpeg2 ts 스트림으로 만드신 후(이 때 압축을 좀 가볍게 하는 포맷 사용 - ex> mpeg2 video)


ffserver를 이용해서 간단하게 서버를 구성하신 후 pc 혹은 다른 장비에서 webserver(ffserver)로 접속한 후

streaming을 테스트해 보시는게 나을 듯 합니다.


camera는 위의 것이 성공한 후에 테스트 해 보시는게 좋을 듯 합니다.


순전히 개인적인 의견이고, 예전에 이렇게 많이 조언을 해 주기는 했었습니다....ㅎㅎ

머 일반 linux에서 android로 바뀐 부분이 좀 있겠지만, 기본 flow는 같을 듯 합니다.


----------------

전 이만 짜파게티 먹으러 갑니다......배고프네요...^^

이호석

2013.02.14 11:43:24
*.193.62.172

ffmpeg 명령어를 어떻게 줘야하는지

그리고 자체내에 인코더를 이용하려면 어떤 명령어를 줘야하나요?

님이 사용하신 옵션을 사용하면 되는건가여?

https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide

제가 여기 위키를 보고 ffmpeg을 빌드를 했는데요

보통 컴퓨터에서 짠 C파일을 파일이름.arm.static 파일로 만들어서 즉 암용 컴파일로 만들어서 실행하면되는데

ffmpeg같은 경우에는 이 스테틱 옵션이 안먹히더라구여 그래서 자료를 찾다 찾다 한게

그냥 ffmpeg을 보드에 넣고 권한을 chmod로 풀어주면 바로 사용할수 있다고 하더라구요.

이게 맞는건지 아니면 암용 컴파일을 다시 해야되는건지..

옵션을 어떻게 줘야하는건지..도통 잘 모르겠습니다.ㅠㅠ

고도리

2013.02.14 18:40:14
*.13.119.238

1. ffmpeg 명령어는 내일 쯤 회사가야 대략 답이 나올 듯 합니다.

ffmpeg을 돌려볼 상황이 아니라서요. 


2. http://ffmpeg.org/ffmpeg.html#Video-and-Audio-file-format-conversion

링크를 보시면 yuv를 어떻게 mpg와 mp2로 encoding 하는지 나와 있습니다.


참고하시면 됩니다.


3. x86에서 ffmpeg을 써서 연습을 먼저 많이 해보시기 바랍니다.

코덱 조합에 따라 잘 안되는 경우가 있습니다.


mpeg2 video

mp2 audio는 기본으로 지원되니, 이것을 가지고 테스트 하시기 바랍니다.


먼저 x86에서 충분히 테스트 해 보셔야 도움이 될 겁니다.


3. ffmpeg을 x86에서 테스트 하실 때 ubuntu의 apt-get을 이용하시는 것은 개인적으로는 추천하지 않습니다.

어차피 arm으로 가면 compile해서 써야 하는데, x86에서 binary로 install해서 하는 방법은 그다지 좋지 않습니다.


무조건 source level로 컴파일을 일일이 해 보셔야 어떤게 필요한지 ffmpeg version에 따라 어떤 옵션이 다른지 알 수 있습니다.


4. x86에서 ffmpeg과 ffserver에 익숙하게 작업을 먼저 하신 후 target board + android 상황에서 작업하시는게 좋을 듯 합니다.


-------------------------------------

지금도.....저도 항상 x86에서 먼저 테스트하고, 그 후에 arm에서 테스트 합니다.

그렇지 않으면 동작에 대한 보증도 못하고, architecture dependency도 테스트를 하기 힘듭니다.


제가 가지고 있는 board를 가지고 함 해보면 좋겠지만, 근래는 외근이 하두 많아서 howto 작업을 거의 못하네요...쩝

이호석

2013.02.15 23:04:06
*.193.62.172

apt-get을 이용하지 말라는 소리가 제가 wiki 링크 남겨둔데로 빌드하시는거를 말씀 하시는 건가요?

고도리

2013.02.16 09:36:23
*.200.239.210

링크를 보니, 큰 상관은 없는 내용이네요.


ubuntu의 경우 apt-get 을 이용해서 각종 라이브러리들을 install 할 수 있는데, 그 부분을 되도록이면(급하지 않으면) 공부의 경우는 하지 않는게 좋다고 말씀드리는 것입니다.


어차피 작업은 소스레벨로 해야 남는 법이라서요.

이호석

2013.02.16 10:31:34
*.193.62.172

소스레벨로 하라는 말씀이 구체적으로 어떤 내용인지 잘 모르겠어요.ㅠㅠ

뭐 어떤방법으로 어떻게 해야 되는걸 말씀하시는건지... 이부분에 초짜라 이해가 잘안가네염.ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜 조회 수
5728 arndale board L2cache 관련 소스 구합니다. [1] 폐인x2 2013-02-22 1386
5727 소켓을 사용하여 웹서버로 파일전송을 하고 싶은데요 이호석 2013-02-22 1020
5726 안드로이드 부팅시 launcher 실행 관련 [2] wizard14 2013-02-21 2457
5725 Torbeck B'd Resouce address 와 Linux Mainline Resource. [3] 여행을 위해 2013-02-21 1798
5724 ffserver 질문드립니다. file [3] 이호석 2013-02-20 1514
5723 예전의 Project 메뉴는 사라진 것 인가요?. [1] Juan Martinez 2013-02-20 1056
5722 u-boot ext3format, fastboot 문제점 nsys 2013-02-19 1853
5721 이솝 c100 공제보드 자료들은 다 삭제된건 가요? [2] 다랑 2013-02-16 1178
5720 안드로이드에서 Socket데몬 실행시 퍼미션 문제 [2] 사당 2013-02-16 1511
5719 안드로이드 포팅책과 NDK책에대하여... [5] Supsupi 2013-02-15 1392
» 타겟보드안에서 ffmpeg사용 질문들립니다. file [8] 이호석 2013-02-14 1444
5717 v210 v310 하드 디스크 연결 가능한가요? [1] seuny 2013-02-14 1364
5716 카메라 디바이스 드라이버에 구조체 내용 질문드립니다. [1] rubio 2013-02-14 1407
5715 리눅스 병렬처리와 OpenMP 관련 질문드립니다. [4] Supsupi 2013-02-12 1487
5714 [5250] 커널 빌드시, 필요한 kernel_make 파일이 없습니다. [1] realizeadream 2013-02-12 1290
5713 [5250] .run 파일이 없습니다. [3] realizeadream 2013-02-11 1403
5712 안드로이드에서 2개의 오디오 코덱 사용 [4] 신현호 2013-02-08 1694
5711 Exynos 5250 LCD 회전 [3] 윤동열 2013-02-08 1495
5710 [android] bionic c 컴파일 관련 [1] wizard14 2013-02-06 1318
5709 [ARNDALE BOARD] 오디오 관련해서 문의드립니다. file [3] 강현성 2013-02-05 1863

사용자 로그인