본 논문에서는 기존의 안드로이드 화면 녹화 어플리케이션(이하, 앱)이 가지고 있는 녹화 기능의 코덱, 안드로이드 운영 체제 버전에 종속적인 특성과 별도의 데스크톱 PC와 유선으로 연결하여 서비스를 제공해야 하는 단점을 극복하는 새로운 앱을 제안한다. 또한 녹화된 화면 정보를 미디어 파일 포맷인 플래시 비디오(flash video) 파일을 이용하여 스트리밍 서비스를 제공하는 방법을 제안한다. 실험을 통해 제안한 앱 구현 방법의 경우 기존의 안드로이드 API를 이용하는 방법과 비교해 부호화 방법의 변경 없이 초당 20프레임 이상의 화면 녹화를 통해 매끄러운 영상을 녹화할 수 있음을 실험적으로 확인하였다.
본 논문에서는 기존의 안드로이드 화면 녹화 어플리케이션(이하, 앱)이 가지고 있는 녹화 기능의 코덱, 안드로이드 운영 체제 버전에 종속적인 특성과 별도의 데스크톱 PC와 유선으로 연결하여 서비스를 제공해야 하는 단점을 극복하는 새로운 앱을 제안한다. 또한 녹화된 화면 정보를 미디어 파일 포맷인 플래시 비디오(flash video) 파일을 이용하여 스트리밍 서비스를 제공하는 방법을 제안한다. 실험을 통해 제안한 앱 구현 방법의 경우 기존의 안드로이드 API를 이용하는 방법과 비교해 부호화 방법의 변경 없이 초당 20프레임 이상의 화면 녹화를 통해 매끄러운 영상을 녹화할 수 있음을 실험적으로 확인하였다.
Existing Android applications for streaming video in real time are dependent on the codec, which composes the encoding function, and the version of Android operating system. Also, for streaming video in real time, most applications should be connected with a separate desktop PC. To overcome these di...
Existing Android applications for streaming video in real time are dependent on the codec, which composes the encoding function, and the version of Android operating system. Also, for streaming video in real time, most applications should be connected with a separate desktop PC. To overcome these disadvantages, we propose a new application, which records and streams video in real time. Specifically, the proposed application uses the flash video file format, which is the common media file format supported by various versions of Android operating system. Through experiments, we show that it is possible for the proposed application to record the video screens more than 20 frames per second and to stream it in real time while using the existing video encoding methods.
Existing Android applications for streaming video in real time are dependent on the codec, which composes the encoding function, and the version of Android operating system. Also, for streaming video in real time, most applications should be connected with a separate desktop PC. To overcome these disadvantages, we propose a new application, which records and streams video in real time. Specifically, the proposed application uses the flash video file format, which is the common media file format supported by various versions of Android operating system. Through experiments, we show that it is possible for the proposed application to record the video screens more than 20 frames per second and to stream it in real time while using the existing video encoding methods.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 녹화된 화면 정보를 미디어 파일 포맷인 플래시 비디오(flash video) 파일을 이용하여 실시간으로 스트리밍 서비스를 제공하기 위한 새로운 앱을 제안하였다. 이는 기존의 안드로이드 화면 녹화 앱이 가지고 있는 녹화 기능의 코덱, 안드로이드 운영 체제 버전에 종속적인 특성과 별도의 데스크톱 PC와 유선으로 연결하여 서비스를 제공해야 하는 단점을 극복함으로써, 부호화 방법의 변경 없이 초당 20프레임 이상의 화면 녹화를 통해 매끄러운 영상을 녹화하는 것이 가능함을 실험적으로 확인하였다.
본 논문에서는 앱 개발 시점에서의 비효율적인 구현방식으로 인해 전송할 영상을 저장하는 시점에서의 품질을 보장하지 못한다는 한계를 극복하기 위하여, 그림 2와 같이 jni를 이용하여 fb에 접근하여 화면 정보를 수집한다. 즉, 안드로이드 API를 사용하는 경우와 비교해 Dalvik jni를 활용하여 직접 fb에 정장된 영상을 수집하는 방법으로 평균 23~24fps의 속도로 화면 정보를 수집(JAVA->jni->C/C++ 원시 코드-> Linux Kernel내 fb)한다.
가설 설정
1. JAVA로 작성된 안드로이드 소스에서 jni를 호출한다. FrameBuffer의 종류는 fb0과 fb1이 있다.
3. ScreenRecord()를 호출하여 해당 앱은 서비스계층의 백그라운드에서 동작한다.
4. 스트리밍 서버 전송과정을 통해 Red5 RTMP 서버로 인코딩한 동영상 데이터를 전송합니다.
제안 방법
1. setOptionBtn()을 호출하여 OptionPage로 이동하여 녹화를 위한 환경 설정을 한다.
따라서 녹화 및 스트리밍 시 인코딩을 하기 위해 FFMPEG오픈 소스 라이브러리를 사용하였다. 녹화 기능에서는 범용적으로 사용되는 MPEG-4와 ACC코덱을 통해 인코딩을 하며 스트리밍 기능에서는 flv를 이용하여 인코딩하였다. 이는 어도비 시스템즈(Adobe Systems)에서 지원하는 플래시 비디오(flv)는 용량을 줄이면서 화질은 유지할 수 있기 때문에 무선네트워크 전송에 따른 데이터 사용량을 고려할 수 있으며 android 환경뿐만 아니라 web과 스트리밍 환경에서도 효과적으로 사용이 가능하기 때문이다.
해당 라이브러리에서는 스마트폰 디바이스의 “/dev/graphics/fb0" 디바이스 드라이버를 호출하여 화면 정보를 얻어온다. 또한, Android API의 녹음 모듈을 통해 디바이스의 마이크를 이용하여 음성 정보를 수집한다.
실험은 총 5회씩 수행하였으며 1회에 10초 동안 측정한 프레임 수를 1초당 얻어오는 프레임 수를 평균하여 수치화 하였다. 그림 14에서 화면 정보를 얻어오는 Android API와 NDK를 이용한 jni를 통해 Native영역의 fb0에 접근하여 화면 정보를 얻어오는 성능을 측정한 실험 결과를 요약하였다.
제안한 앱은 기능적으로 /dev/graphics/fb0에서 가져온화면 정보와 디바이스의 마이크를 이용해 수집한 음성 및 영상 정보를 FFMPEG를 통해 녹화하는 기능과 Red 5 서버[19]를 통한 스트리밍 기능으로 구분된다.
즉, 안드로이드 API를 사용하는 경우와 비교해 Dalvik jni를 활용하여 직접 fb에 정장된 영상을 수집하는 방법으로 평균 23~24fps의 속도로 화면 정보를 수집(JAVA->jni->C/C++ 원시 코드-> Linux Kernel내 fb)한다. 즉, jni를 활용하여 frame buffer에 접근 방식을 통해 화면정보를 수집하여 매끄러운 영상 녹화 및 스트리밍 서비스가 가능한 새로운 안드로이드 앱인 Mobile Screen Video Recorder using Frame Buffer(FB-MSVR)를 제안한다. MSVR-FB는 매끄러운 영상 녹화 기능과 스트리밍 기능을 지원하기 위해 다음과 같은 특징을 가진다.
대상 데이터
제안한 앱에서는 FFMPEG 오픈 소스 라이브러리[19]를 사용하였다. FFMPEG 오픈 소스 라이브러리는 MPEG, H.
이론/모형
264, ACC 등 371가지의 오디오, 비디오 코덱을 지원하며 영상에 대하여 다양한 형태로의 인코딩, 디코딩을 지원하며 MPlayer프로젝트 서버를 호스팅하고 있다. 따라서 녹화 및 스트리밍 시 인코딩을 하기 위해 FFMPEG오픈 소스 라이브러리를 사용하였다. 녹화 기능에서는 범용적으로 사용되는 MPEG-4와 ACC코덱을 통해 인코딩을 하며 스트리밍 기능에서는 flv를 이용하여 인코딩하였다.
성능/효과
5. 스트리밍을 시청하고자 하는 사용자는 Flash Player가 설치된 디바이스를 통해 웹서버에 접근하여 스트리밍을 실시간으로 시청할 수 있다.
실험 결과 Android API는 5회 실험 평균 초당 7.8프레임, jni(FB-MSVR)를 통해서는 초당 23.6프레임 이라는 결과를 얻을 수 있었다. 따라서 Android API를 통해 화면정보를 얻어올 경우 초당 프레임수를 충족시키지 못하여 인코딩한 결과가 매끄럽지 못한 영상을 나타내는 반면에, jni를 통해 fb0에서 화면 정보를 얻어 오는 경우에는 초당 20프레임 이상의 수를 충족시키고 있다.
본 논문에서는 녹화된 화면 정보를 미디어 파일 포맷인 플래시 비디오(flash video) 파일을 이용하여 실시간으로 스트리밍 서비스를 제공하기 위한 새로운 앱을 제안하였다. 이는 기존의 안드로이드 화면 녹화 앱이 가지고 있는 녹화 기능의 코덱, 안드로이드 운영 체제 버전에 종속적인 특성과 별도의 데스크톱 PC와 유선으로 연결하여 서비스를 제공해야 하는 단점을 극복함으로써, 부호화 방법의 변경 없이 초당 20프레임 이상의 화면 녹화를 통해 매끄러운 영상을 녹화하는 것이 가능함을 실험적으로 확인하였다. 이를 통해 개발된 앱은 안드로이드 스마트폰 사용자의 실시간 스트리밍 화면 시청 시에 효율적으로 활용될 수 있을 것으로 기대된다.
따라서 Android API를 통해 화면정보를 얻어올 경우 초당 프레임수를 충족시키지 못하여 인코딩한 결과가 매끄럽지 못한 영상을 나타내는 반면에, jni를 통해 fb0에서 화면 정보를 얻어 오는 경우에는 초당 20프레임 이상의 수를 충족시키고 있다. 일반적으로 화면이 부드럽게 재생이 되기 위해서는 초당 15fps가 되어야 하며 색상수가 많은 실사의 경우 최소 20fps, 실사에 비해 색상수가 적은 애니메이션의 경우 최소 15fps을 필요로 하는 점을 고려하면, 이 실험 결과는 제안한 FB-MSVR이 매끄러운 영상을 나타낼 수 있음을 나타낸다.
제안한 안드로이드 스마트폰 디바이스의 화면을 녹화하고 스트리밍 서비스하는 앱은 Android 자체 지원 코덱을 이용한 인코딩을 통해 디바이스 제조사별 추가 지원 코덱에 영향을 받지 않고 녹화 파일의 재생이 가능하며, 스트리밍 기능을 통해 다른 사용자와 스마트폰 화면을 공유 할 수 있는 특징을 갖는다. 또한 스트리밍 시 flv를사용하므로 web을 통해 다른 종류의 디바이스에서도 시청이 가능하다는 장점이 있다.
후속연구
이는 기존의 안드로이드 화면 녹화 앱이 가지고 있는 녹화 기능의 코덱, 안드로이드 운영 체제 버전에 종속적인 특성과 별도의 데스크톱 PC와 유선으로 연결하여 서비스를 제공해야 하는 단점을 극복함으로써, 부호화 방법의 변경 없이 초당 20프레임 이상의 화면 녹화를 통해 매끄러운 영상을 녹화하는 것이 가능함을 실험적으로 확인하였다. 이를 통해 개발된 앱은 안드로이드 스마트폰 사용자의 실시간 스트리밍 화면 시청 시에 효율적으로 활용될 수 있을 것으로 기대된다.
질의응답
핵심어
질문
논문에서 추출한 답변
Dalvik VM의 java native interface를 호출하여 디바이스 드라이버인 /dev/graphics/fb0에 접근하여 화면 정보를 수집할 수 있는 이유는?
구체적으로는, 화면 정보를 저장하고 있는 frame buffer(fb)를 접근하기 위하여 Dalvik VM의 java native interface(jni)를 호출하고 디바이스 드라이버인 /dev/graphics/fb0에 접근하여 화면 정보를 수집한다. 이는 jni가 자바 가상 머신이 호스트 운영체제상의 입/출력과 같은 기능들을 작동하기 위해 로컬 시스템 호출(local system calls)을 수행할 수 있도록 하는 인터페이스를 제공하기 때문에 가능하다.
모바일 장치에서 음성 및 영상을 처리하는 앱은 기능에 따라 크게 무엇으로 구성되어 있는가?
모바일 장치에서 음성 및 영상을 처리하는 앱은 기능에 따라 크게 영상 녹화 모듈과 이를 네트워크를 통해서 스트리밍으로 전송하는 스트리밍 모듈로 구성된다. 안드로이드 운영체제에서 영상 정보를 수집하기 위해 사용되는 앱의 경우는 그림 1과 같이 JAVA로 작성된 코드에서 안드로이드 Application Programming Interface(API)를 호출하면 Core Libraries에서 녹화 관련 API가 호출된다.
모바일 디바이스의 하드웨어 성능 향상은 어떤 기술 개발을 촉진하고 있는가?
모바일 네트워크와 더불어 모바일 디바이스에서의 하드웨어 성능 향상은 일반 텍스트가 아닌 음성 및 영상 데이터 같은 여러 가지 형태의 멀티미디어 정보를 다루는 앱의 개발을 촉진하고 있다[1]-[5]. 최근 들어 다양한 모바일 운영 체제가 개발되고 스마튼 폰을 비롯한 다양한 모바일 디바이스가 일반 PC와 유사한 연산 성능과 기억장치 용량 및 I/O 속도를 갖추게 되면서, LTE-A와 같은 네트워크의 대역폭을 증가시키는 링크 계층의 기술 발전과 더불어 네트워크상에서 높은 대역폭을 이용하는 비디오 화상 회의(video conferencing)와 VOD(Video-On-Demand)둥의 음성 녹음, 비디오 화면 녹화 및 이를 라이브 스트림(live stream)으로 서비스하는 모바일 화면 녹화 애플리케이션(이하, 앱(app))이 개발되고 있다.
참고문헌 (21)
"Screen Cast video recorder," https://play.google.com/store/apps/details?idcom.ms.screencastfree
"Screen video recorder v3.0," https://play.google.com/store/apps/details?idcom.cocoapps.screenrecorder
H. Kim, J. Koo, and K. Chung, "Equation-based Quality Control Scheme for Improving QoE of Multimedia Streaming Service," Proc. of the KIISE Fall Conference, vol.37, no.2(B), pp.131-135, Nov. 2010. (in Korean) http://www.dbpia.co.kr/Article/NODE01547890
J. Koo and K. Chung, "A Novel Rate Control for Improving the QoE of Multimedia Streaming Service in the Internet Congestion," Journal of KIISE: Information Networking, vol.36, no.6, pp.492-504, Dec. 2009. (in Korean) http://www.dbpia.co.kr/Article/NODE01311128
B. Wang, W. Wei, Z. Guo, and D. Towsley, "Multipath Live Streaming via TCP: Scheme, Performance and Benefits," Proc. of the ACM CoNEXT, Dec. 2007. http://dx.doi.org/10.1145/1364654.1364668
D. Nguyen and J. Ostermann, "Congestion Control for Scalable Video Streaming Using the Scalability Extension of H.264/AVC," IEEE Journal of Selected Topics in Signal Processing, vol.1, no.2, pp.246-253, Aug. 2007. http://dx.doi.org/10.1109/JSTSP.2007.902068
B. Libaek and O. Kure, "Generic Application Level Rate Control for Scalable Video Using Shadow Probing," Proc. of the ICSNC, pp.131-137, Sep. 2009. http://dx.doi.org/10.1109/ICSNC.2009.85
R. Rejaie, M. Handley, and D. Estrin, "Layered Quality Adaptation for Internet Video Streaming," IEEE Journal of Selected Areas in Communications, vol.18, no.12, pp.2530-2543, Dec. 2000. http://dx.doi.org/10.1109/49.898735
M. Zink, J. Schmitte, and R. Steinmetz, "Layer-Encoded Video in Scalable Adaptive Streaming," IEEE Transaction on Multimedia, vol.7, no.1, pp.75-84, Feb. 2005. http://dx.doi.org/10.1109/TMM.2004.840595
A. Ortega, K. Ramchandran, and M. Vetterli, "Optimal trellis-based buffered compression and fast approximations," IEEE Tans. Image Processing, vol. 3, no. 1, pp. 26-40, Jan. 1994. http://dx.doi.org/10.1109/83.265978
K. Ramchandran, A. Ortega, and M. Vetterli, "Bit allocation for dependent quantization with applications to multiresolution and MPEG video coder," IEEE Tans. Image Processing, vol. 3, no. 5, pp. 533-545, Sep. 1994. http://dx.doi.org/10.1109/83.334987
ISO-IEC/JTC1/SC29/WG11, "Test Model 5," Draft, April 1993. http://www.mpeg.org/MPEG/MSSG/tm5/Overview.html
J. Zdepsky, D.Raychaudhuri, and K. Joseph, "Statistically based buffer control policies for constant rate transmission of compressed digital video," IEEE Tans. Commun., vol. 39, no. 6, pp. 947-957, June 1991. http://dx.doi.org/10.1109/26.87184
S.-M. Seo and Y.-H. Choi, "Development of Android App for Smooth Multimedia Streaming Service via Portable Media File Format", International Journal of Multimedia and Ubiquitous Engineering, vol. 9, no. 10, pp. 197-208, 2014. http://dx.doi.org/10.14257/ijmue.2014.9.10.19
※ AI-Helper는 부적절한 답변을 할 수 있습니다.