Ⅰ. 서 론
오늘날 인터넷을 통해 누구나 다양한 디지털 콘텐츠에 쉽게 접근할 수 있으므로 사용자가 곧 생산자가 되는 현상이 자연스럽게 증가하고 있는 추세이다. 현재 Youtube, Vimeo, 판도라 TV와 같은 동영상 공유 사이트에는 하루에도 수많은 동영상이 업로드 되고 있으며, 이를 통해서 동영상 중심의 커뮤니케이션이 새롭게 부상하고 있다. 즉, 텍스트 위주의 커뮤니케이션에서 탈피해서 동영상 중심의 커뮤니케이션으로 이동하고 있으며, 이를 위해 자신만의 동영상을 쉽게 제작할 수 있는 서비스에 대한 요구가 증가하고 있다[1].
이러한 추세에 따라 모바일 기기를 이용해서 단순히 동영상 파일을 재생하는 용도를 넘어서, 동영상을 편집하려는 요구가 등장하게 되었다. 이런 요구를 반영해서 최근 모바일 환경에서 동영상 편집이 가능한, Movie Editor, Video Show 등과 같은 어플리케이션이 개발되었다. 하지만 지금까지 개발된 대부분의 동영상 편집 어플리케이션은 편집하려는 동영상이 모두 모바일 기기에 저장되어 있어야만 편집이 가능하다. 따라서 모바일 기기의 기억장소가 한정되어 있다는 점을 감안할 때 편집하려는 동영상들의 총 용량이 커지면 모바일 기기에서 작업이 불가능하다는 치명적인 한계가 있다.
한편, 저장된 동영상뿐만 아니라 네트워크 환경에서 발견한 동영상도 다운로드 없이 쉽게 편집해서 자신만의 새로운 동영상을 만들고자 하는 요구가 증가하고 있으며[2], 본 연구에서는 이러한 요구를 충족시킬 수 있는 동영상 매쉬업 어플리케이션인 V-MON(Video Mashup On Network)을 개발하였다. 동영상을 매쉬업 한다는 것은 여러 동영상 가운데 원하는 부분만 원하는 순서대로 조합하는 것을 의미한다. 본 연구에서 개발한 어플리케이션에서는 동영상의 특정 시작 부분과 끝 부분을 마킹해서 필요한 부분만 추출하고, 이렇게 추출된 여러 동영상을 조합해서 자신만의 동영상을 만드는 것이 가능하다.
Ⅱ. 동영상 매쉬업 어플리케이션의 설계
2.1. 시스템 구성
V-MON의 시스템 구성은 그림 1과 같이 크게 웹 서버 모듈과 모바일 모듈로 구성된다. 웹 서버 모듈은 동영상 저장 및 공유, 동영상 재생 및 검색, 그리고 회원가입 및 로그인 기능 등으로 구성된다. 모바일 모듈은 유튜브와 TED 등의 동영상 콘텐츠를 검색하는 기능과 동영상 재생 및 편집 기능 등으로 구성되어 있다.
그림 1.V-MON 어플리케이션의 시스템 구성도 Fig. 1 System Configuration of the V-MON Application
2.2. 웹 서버 모듈의 기능
웹 서버 모듈은 모바일에서 편집한 매쉬업 동영상의 메타 데이터를 저장하고 공유하는 기능을 한다. V-MON 의 모바일 모듈을 실행한 경우, 웹 서버는 다음과 같은 형식의 JSON(JavaScript Object Notation)[3] 데이터로 응답한다.
[ {제목1, 섬네일1, 설명1, 고유ID1, 사용자 ID1},
[ {제목2, 섬네일2, 설명2, 고유ID2, 사용자 ID2}, ... ]
위의 JSON 데이터는 모바일에서 여러 동영상의 제목과 대표 섬네일을 표시하는데 사용되며, 표시된 섬네일 이미지 가운데 하나를 클릭하면, 매쉬업된 해당 동영상의 고유 ID 정보를 웹서버로 전송한다. 이때 웹서버는 다음과 같은 형식의 JSON 데이터로 응답한다.
[ {제목1, URL1, 시작시간1, 끝시간1, 설명1},
[ {제목2, URL2, 시작시간2, 끝시간2, 설명2}, ... ]
위의 JSON 데이터는 매쉬업 동영상을 구성하는 각 동영상들의 URL과 시작 및 종료시점의 마킹 데이터를 포함하고 있으며, V-MON모바일 모듈에서 매쉬업된 동영상을 재생하는데 사용된다.
또한 웹 서버에 로그인 했을 때 자신이 매쉬업한 동영상은 사용자 ID를 이용해서 확인할 수 있고, 원본 동영상이 아닌 메타데이터 형태로 저장하고 있기 때문에 많은 저장 공간이 필요하지 않다.
2.3. 모바일 모듈의 기능
모바일 모듈은 크게 동영상 재생 및 검색, 편집, 그리고 웹 서버 연결 기능이 있다. 동영상 편집을 위해서 현재 재생되고 있는 동영상의 특정 시작 지점과 끝 지점을 마킹해서 사용자는 원하는 동영상들을 매쉬업할 수 있으며, 동영상 재생 및 일시정지가 가능하다.
동영상 검색 기능은 Youtube와 Vimeo, 동영상 URL 등과 같은 네트워크 환경에 있는 동영상뿐만 아니라, 안드로이드 내부 저장소인 SD 카드에 저장된 동영상 파일도 검색할 수 있도록 파일 탐색기를 포함한다. 네트워크 환경에 있는 동영상은 해당 사이트의 키워드 검색을 이용해서 검색할 수 있고, 검색 결과의 동영상 섬네일을 클릭하면 동영상을 재생시킬 수 있으며, 길게 클릭하면 동영상 편집 리스트에 자동으로 추가된다.
또한, 다른 사용자가 공유한 비디오를 검색해서 재생하는 것이 가능하며, 로그인 및 회원가입이 가능하다. 동영상 플레이어에 대해서는 2.4에서 자세히 설명하였다.
2.4. 동영상 플레이어
네트워크상에 존재하는 mp4, wmv, asf, 3gp 등의 동영상 파일은 디지털 컨테이너 포맷(Digital Container Format)이라 칭하며, 이는 동영상/오디오 코덱을 이용해서 데이터를 저장하는 방식 및 재생 동기화 정보 등의 부가 정보를 담고 있는 파일 형식을 의미한다. 이처럼 네트워크상에 존재하는 동영상은 다양한 디지털 컨테이너 포맷을 갖는 반면, 안드로이드(Android) 플랫폼에서 제공하는 동영상 플레이어는 mp4를 포함한 한정 된 디지털 컨테이너 포맷만 지원한다는 문제가 있다. 따라서 본 연구에서는 이런 문제를 해결하기 위해 안드로이드 플랫폼에서 모든 디지털 컨테이너 포맷을 지원하도록 동영상 플레이어를 설계하였다.
즉, 안드로이드 플랫폼에서 재생 가능한 디지털 컨테이너 포맷의 동영상은 안드로이드의 기본 SurfaceView를 사용해서 재생하고, 인터넷에서 가져온 mov, flv 등의 디지털 컨테이너 포맷은 기본 SurfaceView에서 재생할 수 없기 때문에 FFmpeg를 활용하여 구현한 오버라이딩 SurfaceView를 사용해서 재생하도록 설계하였다.
Ⅲ. 동영상 매쉬업 어플리케이션의 구현
3.1. 개발 환경
V-MON의 개발 환경을 요약하면 표 1과 같다. 웹 서버는 아파치 톰캣(Apache Tomcat)을 사용하고, 안드로이드 플랫폼은 태블릿과 스마트폰의 공용 OS로 최적화된 4.0 버전인 아이스크림 샌드위치(Ice Cream Sandwich)를 사용했다. 안드로이드 어플리케이션의 레이아웃과 기본 기능은 SDK에서 구현했지만, FFmpeg는 대부분 C 언어로 구현되었기 때문에 안드로이드 NDK도 활용하였다. 안드로이드 NDK는 C/C++와 같은 네이티브 언어로 개발된 라이브러리를 안드로이드 어플리케이션에서 사용할 수 있도록 지원하는 개발 도구이다. 본 어플리케이션은 안드로이드 NDK가 지원하는 ARM CortexA8 이상의 AP 기준으로 컴파일을 했다.
표 1.V-MON 어플리케이션의 개발 환경 Table. 1 Developing Environments of the V-MON Application
3.2. FFmpeg 포팅
모든 디지털 컨테이너 포맷을 지원하는 동영상 플레이어를 효율적으로 개발하기 위해, 본 연구에서는 동영상 재생에 필요한 먹싱/디먹싱, 인코딩/디코딩 등의 기능을 갖춘 멀티미디어 프레임워크들 가운데 가장 적절한 것을 선정해서 수정 및 보완하는 방법을 선택했다.
오픈소스로 제공하는 멀티미디어 프레임워크로는 FFmpeg[4]와 MEncoder, Transcode 등이 있다. 그 가운데 MEncoder와 Transcode 등은 많은 코덱을 지원할 수 있다는 장점이 있지만, 사용이 불편하거나 스트리밍을 지원하지 않아서 동영상 재생 시 화면 또는 음성이 빨라지는 문제가 있으므로, 본 연구에서는 FFmpeg를 선택하였다. 본 연구에서는 개발 시간을 단축하기 위해서 동영상 플레이어에 필요한 기능을 직접 개발하는 대신 FFPlay를 안드로이드용으로 포팅하는 방식을 선택하였다. 다만 FFPlay는 크로스 플랫폼 멀티미디어 개발용 라이브러리인 SDL(Simple DirectMedia Layer)[5]을 이용한 동영상 플레이어이지만, 안드로이드는 SDL을 지원하지 않으므로, 본 연구에서는 비디오와 오디오 렌더링을 위해서 FFPlay에서 SDL을 사용하는 부분을 수정해서 개발하였다.
3.3. 동영상의 색 표현과 오디오 재생
FFmpeg를 이용해서 동영상을 디코딩하면 대부분 YUV픽셀 데이터로 추출된다. 하지만 모바일 환경의 화면으로 영상정보를 출력하려면 RGB픽셀 데이터가 필요하므로 YUV픽셀 데이터를 RGB픽셀 데이터로 변환하는 색공간 작업이 필요하다. 이러한 색공간 작업은 FFmpeg의 libswscale을 이용할 수 있지만, 이는 많은 CPU 연산이 필요하므로 자원이 한정적인 모바일 환경에서는 동영상이 끊기는 현상으로 이어지게 된다. 이 문제를 해결하기 위해서 본 연구에서는 CPU 대신 GPU[6]를 사용하도록 구현하였다. GPU를 활용하기 위해 OpenGL ES API를 사용하여 YUV 데이터를 RGB 데이터로 변환하는 공식을 쉐이더(Shader)로 작성하였으며, 이를 이용해서 YUV 데이터를 GPU로 전달하였다. 이후 GPU는 행렬 연산을 통해서 YUV 픽셀 데이터를 RGB 데이터로 변환하게 된다.
안드로이드에서의 오디오 재생은 PCM(Pulse Code Modulation) 데이터를 재생하기 위해 AudioTrack 클래스를 사용하였다. 이때 AudioTrack 클래스는 콜백 인터페이스(Callback Interface)를 지원하지 않기 때문에 지속적으로 데이터를 전달해야 하는데, 이를 위해 FFPlay에서 오디오 디코더 부분을 별도의 스레드로 동작시키고, 지속적으로 PCM 데이터를 AudioTrack에 넘겨주도록 수정하였다.
3.4. 화질 개선을 위한 HLS 방식 적용
Youtube, Vimeo 등과 같은 동영상 공유 사이트의 검색 결과로 받은 JSON 데이터 필드 중 URL 필드 값은 RTSP(Real Time Streaming Protocol)[7]를 활용해서 동영상을 재생한다. RTSP는 속도가 빠르지만 화질이 좋지 않을 뿐만 아니라 모바일 기기의 화면이 커지면 화질이 더 나빠지는 문제가 있다. 따라서 본 논문에서는 화질 개선을 위해 RTSP를 HLS(HTTP Live Streaming)[8] 방식으로 변환하였다. HLS는 스트리밍 서비스를 위한 인프라가 단순하고 고화질 서비스를 지원하며, 네트워크 상황에 따라 원하는 비트레이트(Bitrate)의 콘텐츠를 선택할 수 있다는 장점이 있다. HLS의 단점이라고 할 수 있는 버퍼링으로 인한 느린 로딩속도를 큐와 비동기 멀티 스레드 방식을 이용해서 개선하였다. 그림 2는 RTSP와 개선된 HLS 방식의 화질 차이를 보여준다.
그림 2.RTSP와 개선된 HLS의 화질 차이 (a) RTSP방식 (b) 개선된 HLS 방식 Fig. 2 Difference between RTSP and improved HLS (a) RTSP method (b) Improved HLS method
Ⅳ. V-MON의 실행 및 비교분석
V-MON을 실행하면 그림 3과 같이 최근에 사용자들이 편집하여 웹서버 모듈로 업로드한 동영상 섬네일이 표시된다. 이 화면에서 공유된 동영상을 페이지네이션(Pagination)해서 확인하거나 로그인 및 회원가입이 가능하다. 로그인 상태에서 ‘My Curation’ 버튼을 클릭하면 사용자가 만든 동영상을 확인할 수 있으며, ‘Create’ 버튼을 클릭하면 동영상을 편집할 수 있다. 또한, 특정 사용자의 아이디나 닉네임, 동영상 제목으로 검색하는 것이 가능하다.
그림 3.V-MON의 메인 화면 (a) 스마트폰 환경 (b) 태블릿 PC 환경 Fig. 3 Main screen of the V-MON (a) smartphones Environment (b) tablet PC Environment
그림 3의 화면에서 ‘Create’ 버튼을 클릭하면, 그림 4와 같이 콘텐츠 로더 선택 화면이 표시된다. 편집할 동영상을 YOUTUBE, VIMEO, TED 등에서 검색하거나 직접 URL을 입력해서 검색할 수 있다.
그림 4.콘텐츠 로더 선택 화면 Fig. 4 Screen for the Contents Loader Selection
예를 들어, 그림 4에서 ‘YOUTUBE’ 버튼을 클릭한 다음 검색어 입력란에 ‘브라질’을 입력하면, 그림 5와 같이 유튜브에서 검색한 브라질 관련 동영상이 표시된다. 검색 목록 가운데 하나를 클릭하면 HLS 방식의 동영상을 고화질로 감상할 수 있다.
그림 5.콘텐츠 검색 화면 Fig. 5 Screen for the Contents Search
그림 5의 검색 목록 가운데 하나를 길게 클릭하면, 그림 6의 Search Video List에 자동으로 추가된다. 이 리스트에 추가된 동영상 목록 가운데 하나를 선택해서 재생 시킨 후 원하는 위치에서 Start와 End 마킹 버튼을 클릭하면, MashUp Box에 동영상의 해당 부분이 추가된다. MashUp Box에서 매쉬업된 동영상의 순서를 바꿀 수 있으며, ‘List Play’ 버튼을 클릭하면 매쉬업된 동영상을 순차적으로 재생시킬 수 있다. MashUp Box에서 완성 된 매쉬업 동영상을 웹 서버로 업로드하면 그림 3의 MataVideo List에 추가된다.
그림 6.동영상 매쉬업 화면 Fig. 6 Screen for Video Mash-up
사용자가 직접 동영상을 편집할 수 있는 기존 어플리케이션과 본 논문에서 구현한 V-MON의 주요 특징을 비교하면 표 2와 같다.
표 2.동영상 매쉬업 어플리케이션의 특징 비교 Table. 2 Comparison of the Features of the Video Mashup Applications
표 2에서 제시한 어플리케이션 외에 대부분의 동영상 편집 어플리케이션은 모바일 기기 내에 저장된 동영상만을 매쉬업하도록 설계되어 있다. 이러한 어플리케이션은 앞서 설명한 바와 같이 모바일 기기 내 기억장소의 크기가 제한적이라는 점을 감안할 때, 기억장소 부족으로 인해 큰 불편을 초래할 수 있고, 기억장소의 제약이 없다 하더라고 필요한 동영상을 모두 다운로드 받아야하는 불편함이 있다.
본 논문에서 개발한 V-MON은 기존의 동영상 매쉬업 어플리케이션의 한계를 해결하기 위해, 모바일 기기내의 동영상뿐만 아니라 네트워크 환경에 존재하는 다양한 동영상 콘텐츠도 제한 없이 활용해서, 물리적 편집 없이 사용자가 원하는 동영상을 매쉬업할 수 있도록 제작하였다. 한편, V-MON에서 매쉬업된 동영상은 메타데이터를 통해 접근하므로, 각 동영상이 저장된 웹서버에 과부하가 걸리는 경우, 동영상 재생이 끊기거나 느려질 수 있다는 한계가 있다. 특히 웹서버에 저장된 동영상이 삭제되는 경우 매쉬업된 동영상을 제대로 재생할 수 없게 된다. 하지만 V-MON은 동영상을 다운로드하지 않아도 매쉬업할 수 있고, 매쉬업 결과를 메타데이터 형태로 저장함으로써 기억장소의 한계를 극복 할 수 있으므로, 기존의 어떤 어플리케이션에서도 제공하지 않았던 진정한 의미에서의 큐레이션 서비스를 제공한다.
Ⅴ. 결 론
본 논문에서는 모바일 환경에서 네트워크 상의 동영상을 물리적 편집 없이 매쉬업할 수 있는 어플리케이션인 V-MON을 개발하였다. 기존 동영상 매쉬업 어플리케이션들과는 달리 저장된 동영상뿐만 아니라 네트워크 환경에 존재하는 다양한 동영상 콘텐츠를 활용할 수 있다는 장점이 있으며, 메타 데이터 기반의 새로운 콘텐츠를 생성하고 공유함으로써 사용자가 곧 생성자가 될 수 있는 진정한 의미에서의 큐레이션 서비스를 지원하는 것이 가능하다. 또한 본인이 소유하지 않은 다양한 동영상 콘텐츠를 제한 없이 활용할 수 있고, 동영상의 원본 데이터를 저장하지 않기 때문에 저작권 문제에서도 자유로울 수 있다. 특히 활용할 수 있는 동영상 콘텐츠가 제한되지 않으므로 보다 창의적인 콘텐츠를 자유롭게 제작할 수 있는 환경을 제공한다. 따라서 교육 및 엔터테인먼트 분야, 홍보 분야 등에서 활용도가 매우 높을 것으로 기대된다.
현재 V-MON은 안드로이드 플랫폼에서 개발되어 iOS를 지원하지 않는다. 향후 iOS폰에서 사용할 수 있는 어플리케이션을 추가로 개발하고, 사용이 보다 편리한 인터페이스를 지원할 계획이다.