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

지금 졸업작품으로 임베디드 시스템을 이용한 프로젝트를 진행하고 있습니다. 이제 막 임베디드 시스템과 리눅스를 배우고 있는 상태라 많은 어려움이 있습니다.

현재 임베디드 보드는 g100-s3c6410사용하고 있습니다. 여기에다가 무선공유기와 webcam을 usb를 통해 연결 하였습니다. 보드에다가 ffmpeg을 포팅한 상태이고 ffserver를 통해 webcam에서 받은 영상데이터를 스트리밍 서버를 이용해 보내고 있습니다.
 
현재 노트북에서 실행했을 경우 0.5초정도의 아주 작은 딜레이만 발생하지만 보드에서 실행했을 경우 대략 2초정도의 딜레이가 생깁니다. 아무리 설정값을 바꾸고 해보아도 딜레이가 줄어들지 않네요....
 
해결책이 있으시다면 알려주세요...
 
제 생각에는 아마 보드와 노트북의 cpu사양에 따라 인코딩과 디코딩에 대한 속도차이 때문인거 같은데....저의 부족한 실력으로는  ffmpeg소스를 이해하는게 무척 힘든 일인거 같습니다. ffmpeg소스에 관련된 소스만 몇천줄이고, 그리고 driver, codec, filter등....봐야 되는 소스들이 정말 많더라고요...그래서 어떻게 흘러가는지 감도 못잡고 있습니다. 어떻게 프로젝트를 진행해 나가야 될지 상세히 알려주시면 감사하겠습니다.
 
 


고도리

2012.12.12 11:26:15
*.127.19.87

속도가 느린 것입니다....


pc랑은 당연히 차이가 있습니다.

위의 해결 방법은 


1. 영상 크기를 줄여야 합니다.

2. bitrate도 줄여야 합니다.

3. 어쩔 수 없다면 S3C6410에 들어 있는 hardware codec인 MFC를 살려서 동작시켜야 합니다.


ffmpeg 소스는 현재 상황에서는 손댄다고 해서 증상이 나아지기는 힘듭니다.

제 의견으로는요...


저라면 영상 사이즈를 줄이는 쪽으로 일단 try를 해 보고, 

S3C6410이니 관련 동영상 encoder 코드를 구하실 수 있을겁니다.

최후는 어쩔 수 없이 hw를 써야 할 듯 하네요.

wndgk0620

2012.12.12 13:07:09
*.250.78.175

1번, 2번은... 무수히 많이 시도 해보았지만 2초정도의 딜레이가 최대였습니다....

3번 방법은  처음듣는 방법이네요 이 방법을 찾아서 시도 해보겠습니다

답변 감사합니다 ^^

블루스카이

2012.12.12 20:15:33
*.123.42.155

제가 2009년도에 PXA320 으로 귀하와 같은 환경을 구축하였으때 약 3초 delay를 가지고 인터넷으로 원격지에 영상을 보낼수 있었습니다. 15pfs camera였고 640x480 해상도 였습니다. S/W적으로 처리하기에는 한계가 있습니다. encoding 시간이 많이 소요되기 때문으로 판단됩니다. 6410에서 2초 정도 였다면 CPU 성능이 PXA320보다 좋아서 나타는 결과로 생각되어 집니다.

쭈암

2012.12.14 00:09:19
*.98.3.35

코덱이나 설정에 따라 지연시간이 달라집니다.

기본적으로 카메라 -> AP의 메모리 -> 인코딩 -> 네트워크 전송 (Send buffer) -> 네트워크 -> 수신(Recv Buffer) ->디코딩 -> 화면

요런 순서 인데..지연 시간을 각 구간에서 찍어보시고.. 지연이 큰쪽을 공략해야 합니다. 보통 인코딩이 제일 큰데요..

프레임 드랍이 생기지 않는다면 인코딩은 fps 시간내에 이루어지는 겁니다. (30fps라면 1/30초)

지연시간은 GoP가 너무 크거나 참조 프레임수가 많아서 인코딩이 완료되는데까지 시간이 커지게 되는 문제가 생깁니다. ( Throughput 은 30fps가 나오는데 지연 시간이 커지는 문제 )


제일 간단한 것은 모두 Intra frame압축을 하면 참조 프레임이 없기 때문에 바로바로 인코딩되어서 결과가 나옵니다. ( 대신 압축율 저하..화질 저하...)


mjpeg등으로 한번 해보세요. H.264등을 이용하시면 Baseline으로 해보시구요.

wndgk0620

2012.12.14 09:51:42
*.250.78.175

저도 어디서 딜레이가 크게 발생하는지 원인을 파악해야 하는데....각 구간마다 지연되는 시간을 어떻게 측정하나요???

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

전자부품 불용자재 및 잉여자재 고가에 매입합니다.

dm900b vs LAN9220 차이에 대해서 [2]

  • gudrl
  • 2013-05-02
  • 조회 수 1546

터치 캘리브레이션 화면 안나오게하기 [1]

6410 sleep mode관련 질문 드립니다. file [2]

  • 서비
  • 2013-05-22
  • 조회 수 1544

OpenSSL을 NDK로 연결해서 사용하려고합니다. [6]

s3c6410 tvp5150 관련질문 [3]

오드로이드 부팅 에러 질문드립니다. [1]

안드로이드 파일 시스템 특정 폴더 빌드 않되게 하는 명령 [1]

애플리케이션에서 GPIO 컨트롤하기 에 대해 문의드립니다. [6]

[완료] #if 0 #endif 구문의 의미에 대해서.. [7]

리눅스 커널 2.6.27.에 안드로이드 2.1 올리기 [2]

디바이스 드라이버에서 메모리를 잡으니 다른 스택메모리에 영향을 주... [1]

  • bwparc
  • 2012-05-23
  • 조회 수 1541

임베디드 시스템에서 영상 딜레이에 대한 질문입니다 [5]

framebuffer를 capture하기 위해서. [7]

6410보드에 SD메모리 용량 확인하는 법 [2]

  • 53%
  • 2012-06-25
  • 조회 수 1539

Throuthput에 관해서 여쭈어 봅니다. [2]

poll_wait 함수 오작동 [1]

ffmpeg를 이용할때 라이센스 문제. [2]

밑에 글에 이어서 SD에 포팅에 대하여<=[완료] [6]

USB HOST, client I/F 관련해서 여쭤보고자 합니다. [4]

사용자 로그인