본문 바로가기

임베디드

동영상 재생 테스트

비교적 낮은 성능의 CPU(Cortex-A7 1Ghz Single-Core)에서 동영상 재생 능력이 얼마나 되는지 테스트해보았다.

 

테스트 영상은 아래 링크에서 다운로드 받았다. 유명한 오픈소스 에니메이션 Big Buck Bunny이다.

https://archive.org/download/BigBuckBunny/big_buck_bunny_480p_surround-fix.avi

동영상은 MPEG4 포맷으로 854x480의 해상도,  24bpp 칼라,  24.000 fps로  2500kbps (305.2 kbyte/s) 정도의 비트레이트로 된 파일이다.

사운드는 AC3 포맷으로 48KHz, 2 채널 스테레오이다.


데비안 OS위에서 apt로 설치한 mplayer 명령으로 재생하였으며 내 눈으로 보기에는 부드럽고, 사운드도 끊김이 느껴지지 않았다.

1024x600의 LCD 해생도에 비해 다소 작은 854x480만 보인다. 검은색 테두리가 있다.

 

Ethernet으로 연결한 원격 SSH 콘솔에서 htop으로 자원상태를 들여다 보았다.

재생 도중에 50~70% 정도의  CPU 자원을 사용하며, 최대 80%를 넘기지는 않는것 같다.

생각보다 잘 뽑아준다. frameskip이 얼마나 생겼는지 확인할 수 있는 방법이 있으면 좋겠다.

테스트에 사용한 명령어는 다음과 같다. 물론 mplayer 패키지를 먼저 설치하고 실행하였다.

mplayer -nolirc -vo fbdev2:/dev/fb0 big_buck_bunny_480p_surround-fix.avi -ao alsa:device=hw=0.0

함께 설치된 SDL 라이브러리가 자동으로 사운드 장치를 찾지 못해서 맨뒤에 오디오 출력장치를 명시하였다.

 

일단 테스트 결과는 매우 만족스럽다. ffmpeg의 소프트웨어 디코딩 성능이 생각보다는 쓸만하다.

추후에 1024x600화면에 맞추어 엔코딩을 한 동영상을 다시 테스트 해보도록 하자.

 

궁극적으로는 Cedrus HW 가속기를 사용하면 720p 이상의 동영상도 전혀 문제가 없겠지만, SW 디코딩으로도 간단한 팝-광고판을 구현하는것은 가능해 보인다.

 

참고로 영상 재생 화면은 play를 pause 시키고, ssh 콘솔에서 "sudo fbcat > fb.ppm"으로 캡쳐를 하였다.

그리고 ppm은 jpg로 변환하였다.

 

 

추신: 1024x600 동영상도 테스트 해보았다. 훨씬 보기 좋다.

720p/H.264 영상을 다운로드 받고 Handbrake라는 엔코딩 프로그램으로 1024x600 MPEG4로 변환하였다.

원본 동영상의 가로/세로 비율에 비례하여 변환되므로 실제 동영상 영역의 해상도는 1024x576으로 화면 위아래로 12픽셀씩 남는다.

이번 영상은 30FPS로 먼저 테스트한 저해상도 25FPS 영상에 비해 처리할 테이터가 20%이상 많다.

CPU 점유율도 80~90% 정도이며 가끔 90%를 넘어 아슬아슬하때가 있지만 Frame Skip은 발생하지 않는것 같다.

백그라운드에서 처리할 프로세스가 걱정이라면 20~25FPS 정도로 낮추어 Encoding하는것이 좋겠다.

그리고 H.264의 경우 소프트웨어만으로는 디코딩이 매우 힘들어 보인다. MPEG-4도 간당간당하니.....

 

<업데이트>

빌드루트에는 mplayer 패키지가 없어 MPV를 먼저 시도해 보았으나 실행시 에러가 발생하고 구동이 안되었다.

그래서 VLC 패키지를 빌드해보았으며 1024x576으로 변환된 MPEG4 simple profile은 정상 재생되는 것을 확인 하였다.

LCD console에서 별다른 옵션이 없어도 잘 동작하나, 시리얼 또는 SSH 리모트 콘솔에서는 여러가지 에러가 발생한다.

또한 키보드로 비디오 컨트롤이 안되는 것으로 보였다. 

'임베디드' 카테고리의 다른 글

ADC 키패드 입력 테스트  (0) 2020.01.06
카메라 입력 테스트  (0) 2020.01.03
Kernel 5.5 (rc4) 포팅과 부팅  (2) 2019.12.31
CH330N/CH340 Windows 10 드라이버 설치  (0) 2019.12.31
u-boot Ethernet 기능 활성화  (0) 2019.12.25