KR102238720B1 - 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템 - Google Patents

인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템 Download PDF

Info

Publication number
KR102238720B1
KR102238720B1 KR1020190081428A KR20190081428A KR102238720B1 KR 102238720 B1 KR102238720 B1 KR 102238720B1 KR 1020190081428 A KR1020190081428 A KR 1020190081428A KR 20190081428 A KR20190081428 A KR 20190081428A KR 102238720 B1 KR102238720 B1 KR 102238720B1
Authority
KR
South Korea
Prior art keywords
transcoding
file
media file
uploading
division unit
Prior art date
Application number
KR1020190081428A
Other languages
English (en)
Other versions
KR20210004660A (ko
Inventor
하태호
최해성
Original Assignee
라인플러스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 라인플러스 주식회사 filed Critical 라인플러스 주식회사
Priority to KR1020190081428A priority Critical patent/KR102238720B1/ko
Priority to JP2020112931A priority patent/JP7568203B2/ja
Priority to US16/918,198 priority patent/US20210006850A1/en
Publication of KR20210004660A publication Critical patent/KR20210004660A/ko
Application granted granted Critical
Publication of KR102238720B1 publication Critical patent/KR102238720B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/27Server based end-user applications
    • H04N21/274Storing end-user multimedia data in response to end-user request, e.g. network recorder
    • H04N21/2743Video hosting of uploaded data from client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/08Annexed information, e.g. attachments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/232Content retrieval operation locally within server, e.g. reading video streams from disk arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • H04N21/234372Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution for performing aspect ratio conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/242Synchronization processes, e.g. processing of PCR [Program Clock References]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템이 개시된다. 미디어 파일 전송 방법은, 클라이언트에서 미디어 파일을 트랜스코딩하여 서버로 업로드하는 것으로, 미디어 파일을 단위 크기로 분할하여 분할 트랜스코딩을 수행하되 이전 분할 단위 파일의 트랜스코딩이 완료되는 시점에 다음 분할 단위 파일의 트랜스코딩과 이전 분할 단위 파일의 업로딩을 병행 처리한다.

Description

인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템{METHOD AND SYSTEM FOR SHORTENING TRANSMISSION TIME OF MEDIA FILE THROUGH CONCURRENT PROCESSING OF ENCODING AND UPLOADING}
아래의 설명은 미디어 파일을 전송하는 기술에 관한 것이다.
일반적인 커뮤니케이션 도구인 인스턴트 메신저(instant messenger)는 실시간으로 메시지나 데이터를 송수신할 수 있는 소프트웨어로서, 사용자가 메신저 상에 대화 상대를 등록하고 대화 상대 목록에 있는 상대방과 실시간으로 메시지를 주고 받을 수 있다.
이러한 메신저 기능은 PC 뿐만 아니라 이동 통신 단말의 모바일 환경에서도 메신저의 사용이 보편화되고 있다. 예컨대, 한국공개특허 제10-2002-0074304호(공개일 2002년 09월 30일)에는 휴대 단말기에 설치된 모바일 메신저 간에 메신저 서비스를 제공할 수 있도록 한 무선 통신망을 이용한 휴대 단말기의 모바일 메신저 서비스 시스템 및 방법이 개시되어 있다.
메신저의 이용이 대중화되고 메신저를 통해 제공되는 기능이 점점 다양해지면서, 동영상이나 오디오 등의 미디어 파일을 공유하는 기능을 제공하고 있다.
미디어 파일의 공유 기능을 포함하거나 활용하는 서비스에서 미디어 트랜스코딩 작업을 서버가 수행하지 않고 클라이언트가 수행하도록 시스템을 설계하고 있는 추세이다. 이러한 경우 서버 측에서 인코딩을 수행하기 위한 대규모 인코딩 서버 클러스터를 구성하지 않아도 되기 때문에 운영 비용을 절감할 수 있다.
그러나, 클라이언트에서 트랜스코딩 하는 경우 미디어 파일 전체를 트랜스코딩 한 이후에 업로드를 수행하기 때문에 파일 변환 시간과 변환된 파일을 업로드 하는 시간이 소요된다.
특히, 업로드하는 단말이 모바일 기기인 경우 미디어 파일을 변환하는데 소요되는 시간이 크고, 모바일 기기의 배터리나 성능 제약으로 백그라운드 실행을 제한하는 모바일 운영체제 환경으로 인해 인코딩 자체가 실패하는 등의 문제가 발생할 수 있다.
미디어 파일에 대한 인코딩과 업로딩을 병행 처리하여 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템을 제공한다.
컴퓨터 시스템에서 실행되는 미디어 파일 전송 방법에 있어서, 상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 미디어 파일 전송 방법은, 상기 적어도 하나의 프로세서에 의해, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일을 단위 크기로 분할하여 분할 단위로 트랜스코딩을 수행하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 분할 단위의 트랜스코딩 결과물을 상기 메신저와 관련된 서버로 업로드하는 단계를 포함하고, 이전 분할 단위 파일의 트랜스코딩이 완료되는 시점에 다음 분할 단위 파일의 트랜스코딩과 상기 이전 분할 단위 파일의 업로딩이 병행 처리되는 것을 특징으로 하는 미디어 파일 전송 방법을 제공한다.
일 측면에 따르면, 상기 업로드하는 단계는, 상기 분할 단위의 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 업로드할 수 있다.
다른 측면에 따르면, 상기 트랜스코딩을 수행하는 단계는, 상기 분할 단위의 트랜스코딩 결과물을 파일 형태로 저장하는 단계를 포함하고, 상기 업로드하는 단계는, 상기 저장된 파일 형태의 트랜스코딩 결과물을 상기 분할 단위로 업로드할 수 있다.
또 다른 측면에 따르면, 상기 저장하는 단계는, 상기 분할 단위의 트랜스코딩 결과물을 자체 재생이 가능한 형태로 저장할 수 있다.
또 다른 측면에 따르면, 상기 적어도 하나의 프로세서는 하나의 트랜스코더와 하나의 업로더를 포함하고, 상기 미디어 파일에 대해 상기 트랜스코더를 통해 상기 다음 분할 단위 파일의 트랜스코딩을 수행하면서 동시에 상기 업로더를 통해 상기 이전 분할 단위 파일의 업로딩을 수행할 수 있다.
또 다른 측면에 따르면, 상기 적어도 하나의 프로세서는 복수 개의 트랜스코더와 복수 개의 업로더를 포함하고, 상기 미디어 파일에 대해 상기 복수 개의 트랜스코더를 이용한 병렬 트랜스코딩과 상기 복수 개의 업로더를 이용한 병렬 업로딩을 수행할 수 있다.
또 다른 측면에 따르면, 상기 트랜스코딩을 수행하는 단계는, 상기 미디어 파일을 키 프레임(key frame)을 기준으로 한 GOP(group of pictures) 단위로 분할하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 분할하는 단계는, 상기 GOP 단위가 사전 실험을 통해 결정된 최소 단위보다 작은 경우 상기 미디어 파일을 상기 GOP 단위가 아닌 상기 최소 단위로 분할할 수 있다.
컴퓨터 시스템에서 실행되는 미디어 파일 전송 방법에 있어서, 상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 미디어 파일 전송 방법은, 상기 적어도 하나의 프로세서에 의해, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일에 대해 트랜스코딩을 수행하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 미디어 파일의 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 상기 메신저와 관련된 서버로 업로드하는 단계를 포함하는 미디어 파일 전송 방법을 제공한다.
상기 미디어 파일 전송 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 비-일시적인 컴퓨터 판독 가능한 기록 매체를 제공한다.
컴퓨터 시스템에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일을 단위 크기로 분할하여 분할 단위로 트랜스코딩을 수행하는 과정; 및 상기 분할 단위의 트랜스코딩 결과물을 상기 메신저와 관련된 서버로 업로드하는 과정을 처리하고, 이전 분할 단위 파일의 트랜스코딩이 완료되는 시점에 다음 분할 단위 파일의 트랜스코딩과 상기 이전 분할 단위 파일의 업로딩을 병행 처리하는 것을 특징으로 하는 컴퓨터 시스템을 제공한다.
컴퓨터 시스템에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일에 대해 트랜스코딩을 수행하는 과정; 및 상기 미디어 파일의 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 상기 메신저와 관련된 서버로 업로드하는 과정을 처리하는 컴퓨터 시스템을 제공한다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 미디어 파일 전송 방법을 도시한 흐름도이다.
도 5는 본 발명의 일실시예에 있어서 분할 트랜스코딩 과정을 설명하기 위한 예시 도면이다.
도 6 내지 도 7은 본 발명의 일실시예에 있어서 미디어 파일의 전송 시간을 단축시키는 방법의 일례를 도시한 흐름도이다.
도 8 내지 도 10은 본 발명의 일실시예에 있어서 미디어 파일의 전송 시간을 단축시키는 방법의 다른 예를 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 미디어 파일을 전송하는 기술에 관한 것이다.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 클라이언트에서 트랜스코딩과 업로딩을 병행하는 방식을 통해 미디어 파일을 서버로 전송할 수 있고 이를 통해 미디어 파일의 전송 시간을 단축시킬 수 있고 미디어 파일의 전송 효율을 최적화할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 시스템으로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 내비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC, 게임 콘솔(game console), 웨어러블 디바이스(wearable device), IoT(internet of things) 디바이스, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 시스템들 중 하나를 의미할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망, 위성망 등)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제1 서비스를 제공하는 시스템일 수 있으며, 서버(160) 역시 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 제2 서비스를 제공하는 시스템일 수 있다. 보다 구체적인 예로, 서버(150)는 복수의 전자 기기들(110, 120, 130, 140)에 설치되어 구동되는 컴퓨터 프로그램으로서의 어플리케이션을 통해, 해당 어플리케이션이 목적하는 서비스(일례로, 메시징 서비스 등)를 제1 서비스로서 복수의 전자 기기들(110, 120, 130, 140)로 제공할 수 있다. 다른 예로, 서버(160)는 상술한 어플리케이션의 설치 및 구동을 위한 파일을 복수의 전자 기기들(110, 120, 130, 140)로 배포하는 서비스를 제2 서비스로서 제공할 수 있다.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 전자 기기에 대한 예로서 전자 기기(110), 그리고 서버(150)의 내부 구성을 설명한다. 또한, 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 상술한 전자 기기(110) 또는 서버(150)와 동일한 또는 유사한 내부 구성을 가질 수 있다.
전자 기기(110)와 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 비-일시적인 컴퓨터 판독가능한 기록매체로서, RAM(random access memory), ROM(read only memory), 디스크 드라이브, SSD(solid state drive), 플래시 메모리(flash memory) 등과 같은 비소멸성 대용량 저장 장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM, SSD, 플래시 메모리, 디스크 드라이브 등과 같은 비소멸성 대용량 저장 장치는 메모리(211, 221)와는 구분되는 별도의 영구 저장 장치로서 전자 기기(110)나 서버(150)에 포함될 수도 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기(110)에 설치되어 구동되는 브라우저나 특정 서비스의 제공을 위해 전자 기기(110)에 설치된 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(211, 221)와는 별도의 컴퓨터에서 판독가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독가능한 기록매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로, 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기(110)와 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 전자 기기(110) 및/또는 서버(150)가 다른 전자 기기(일례로 전자 기기(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기(110)의 통신 모듈(213)을 통해 전자 기기(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령, 컨텐츠, 파일 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기(110)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.
입출력 인터페이스(214)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드, 마우스, 마이크로폰, 카메라 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커, 햅틱 피드백 디바이스(haptic feedback device) 등과 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(215)는 전자 기기(110)와 하나의 장치로 구성될 수도 있다. 또한, 서버(150)의 입출력 인터페이스(224)는 서버(150)와 연결되거나 서버(150)가 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 보다 구체적인 예로, 전자 기기(110)의 프로세서(212)가 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기(110)는 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기(110)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라 모듈, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기(110)에 더 포함되도록 구현될 수 있다.
이하에서는 미디어 파일을 전송할 수 있는 방법 및 시스템의 구체적인 실시예를 설명하기로 한다.
본 명세서에 미디어 파일은 비디오나 오디오 등을 포괄하여 의미할 수 있다.
본 실시예들은 클라이언트에서 서버로 미디어 파일을 전송하는 기술에 관한 것으로, 사용자들 간에 설정된 통신 세션을 통해 미디어 파일을 공유하는 기능을 포함하거나 활용하는 서비스, 예를 들어 메신저나 SNS(social network service) 등에서 활용 가능하다.
이하에서는 메신저를 통해 미디어 파일을 전송하는 것을 구체적인 실시예로 설명한다.
도 3은 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 블록도이고, 도 4는 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 미디어 파일 전송 방법의 예를 도시한 흐름도이다.
본 실시예에 따른 전자 기기(110)에는 컴퓨터로 구현된 미디어 파일 전송 시스템이 구성될 수 있다. 일례로, 미디어 파일 전송 시스템은 독립적으로 동작하는 프로그램 형태로 구현되거나, 혹은 특정 어플리케이션의 인-앱(in-app) 형태로 구성되어 상기 특정 어플리케이션 상에서 동작이 가능하도록 구현될 수 있다.
전자 기기(110)에 설치된 어플리케이션이 제공하는 명령에 기반하여 전자 기기(110)에 구현된 미디어 파일 전송 시스템은 도 4에 도시한 미디어 파일 전송 방법을 수행할 수 있다.
도 4에 따른 미디어 파일 전송 방법을 수행하기 위해, 전자 기기(110)의 프로세서(212)는 구성요소로서 도 3에 도시된 바와 같이, 트랜스코더(transcoder)(310), 및 업로더(uploader)(320)를 포함할 수 있다. 실시예에 따라 프로세서(212)의 구성요소들은 선택적으로 프로세서(212)에 포함되거나 제외될 수도 있다. 또한, 실시예에 따라 프로세서(212)의 구성요소들은 프로세서(212)의 기능의 표현을 위해 분리 또는 병합될 수도 있다.
이러한 프로세서(212) 및 프로세서(212)의 구성요소들은 도 4의 미디어 파일 전송 방법이 포함하는 단계들(S410 내지 S430)을 수행하도록 전자 기기(110)를 제어할 수 있다. 예를 들어, 프로세서(212) 및 프로세서(212)의 구성요소들은 메모리(211)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
여기서, 프로세서(212)의 구성요소들은 전자 기기(110)에 저장된 프로그램 코드가 제공하는 명령(일례로, 전자 기기(110)에서 구동된 어플리케이션이 제공하는 명령)에 따라 프로세서(212)에 의해 수행되는 프로세서(212)의 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 전자 기기(110)가 미디어 파일의 트랜스코딩을 수행하도록 상술한 명령에 따라 전자 기기(110)를 제어하는 프로세서(212)의 기능적 표현으로서 트랜스코더(310)가 이용될 수 있다.
단계(S410)에서 프로세서(212)는 전자 기기(110)의 제어와 관련된 명령이 로딩된 메모리(211)로부터 필요한 명령을 읽어들일 수 있다. 이 경우, 상기 읽어들인 명령은 프로세서(212)가 이후 설명될 단계들(S420 내지 S430)을 실행하도록 제어하기 위한 명령을 포함할 수 있다.
단계(S420)에서 트랜스코더(310)는 전자 기기(110)의 사용자가 타 사용자와의 공유 등을 위해 전자 기기(110)에 설치된 메신저를 통해 전자 기기(110)에 저장된 미디어 파일 중 업로드하고자 하는 미디어 파일을 선택하는 경우 선택된 미디어 파일을 트랜스코딩할 수 있다. 사용자들이 이용하는 전자 기기(110, 120, 130, 140)가 다양하기 때문에 비디오나 오디오와 같은 미디어 파일을 공유할 때 모든 전자 기기(110, 120, 130, 140)에서 재생 가능하도록 일관된 파일 형식으로 변환하는 작업, 즉 트랜스코딩 작업이 필요하다. 다시 말해, 트랜스코더(310)는 전자 기기(110)의 사용자에 의해 선택된 미디어 파일을 사전에 정해진 파일 형식으로 트랜스코딩할 수 있다. 특히, 트랜스코더(310)는 분할 트랜스코딩을 수행하는 것으로, 미디어 파일의 원본을 사전에 정해진 단위 크기로 분할하여 분할 단위로 트랜스코딩을 수행할 수 있다.
단계(S430)에서는 트랜스코더(310)를 통한 트랜스코딩 작업과 업로더(320)를 통한 업로딩 작업이 병행처리될 수 있다. 미디어 파일 전체 중 일부 파일인 하나의 분할 단위 파일의 트랜스코딩이 완료되는 시점에, 트랜스코더(310)는 다음 분할 단위 파일에 대한 트랜스코딩을 계속 진행하고, 이와 동시에 업로더(320)는 트랜스코딩이 완료된 이전 분할 단위 파일을 메신저와 관련된 서버(150)로 업로드할 수 있다. 다시 말해, 프로세서(212)는 미디어 파일의 일부에 대해 트랜스코딩이 완료되는 시점에 나머지 부분에 대한 트랜스코딩 작업을 계속해서 진행하면서 먼저 트랜스코딩된 일부 파일에 대한 업로드 작업을 병행 처리할 수 있다.
트랜스코딩 작업의 결과물로 생성되는 파일의 크기가 100인 비디오 파일을 업로드한다고 가정할 때:
기존에는 사용자가 업로드 하고자 하는 비디오 파일의 트랜스코딩 작업을 모두 완료한 후 전체 크기 100의 파일로 생성될 때까지 기다렸다가 비디오 파일의 전체 크기 100을 한꺼번에 업로드하는 방식이다. 기존 방식은 크기 100의 파일 생성 시간(파일 변환 시간)(T1)과 업로드에 수행되는 시간(T2)의 합, 즉 T1+T2의 시간이 소요된다.
본 발명에 따른 미디어 파일 전송 방법은 미디어 파일을 트랜스코딩할 때 미디어 파일의 전체 부분에 대한 변환 작업이 완료된 이후에 업로드를 시작하는 것이 아니라, 전체 미디어 파일에 대해 분할 트랜스코딩을 수행하여 파일 일부가 트랜스코딩이 완료된 시점에 다음 부분에 대한 트랜스코딩 작업과 이전 트랜스코딩 결과물에 대한 업로드 작업을 병행하는 방식을 통해 T1+T2의 시간보다 적은 시간이 소요된다.
먼저, 분할 트랜스코딩 방법에 대한 실시예는 다음과 같다.
도 5는 본 발명의 일실시예에 있어서 분할 트랜스코딩 과정을 설명하기 위한 예시 도면이다.
일례로, 트랜스코더(310)는 비디오 파일을 GOP(group of pictures) 단위로 분할하여 인코딩을 수행할 수 있다.
도 5를 참조하면, GOP의 프레임 타입은 I-프레임, P-프레임, B-프레임 등이 포함될 수 있다. I-프레임과 I-프레임 사이에는 P-프레임이 존재하고, I-프레임과 P-프레임 사이에는 B-프레임이 존재한다. I-프레임은 가장 좋은 화질을 가지고 있는 인트라 프레임(intra frame)으로 키 프레임(key frame)을 의미한다. P-프레임은 순방향 예측 프레임(predicted frame)으로 이전 키 프레임의 정보를 바탕으로 구성된 프레임을 의미하고, B-프레임은 양방향 예측 프레임(bidirectionally interpolated frame)으로 전후 프레임, 즉 I-프레임과 P-프레임의 정보를 바탕으로 구성된 프레임을 의미한다. 예를 들어, 이전 I-프레임과 다음 I-프레임까지를 하나의 GOP 단위로 묶을 수 있고 해당 묶음의 프레임 개수가 GOP의 크기가 된다.
트랜스코더(310)는 GOP 단위를 분할 단위로 하여 분할 트랜스코딩을 수행하게 되는데, 이때 원본 영상의 GOP 크기가 크면 분할 단위의 사이즈가 증가한다. 분할 단위의 길이가 너무 짧으면 파일 분할 개수 증가로 인해 인코딩 오버헤드가 증가하게 되는 한편, 분할 단위의 길이가 너무 길면 하나의 분할 단위에 대한 인코딩 완료 시간이 길어지게 된다. 인코딩 과정에서 발생하는 오버헤드를 최소화 하면서 분할 단위 별 인코딩 완료 시간을 최적화할 수 있는 적당한 길이를 사전 실험을 통해 결정할 수 있다. 즉, 다른 예로 트랜스코더(310)는 사전 실험을 통해 결정된 길이를 분할 단위로 하여 비디오 파일의 원본을 분할할 수 있다.
또 다른 예로, 트랜스코더(310)는 상기한 사전 실험을 통해 결정된 길이의 분할 단위를 최소 단위로 하여 기본적으로는 비디오 파일을 GOP 단위로 분할하되 GOP 단위가 최소 단위보다 작은 경우에는 비디오 파일을 GOP 단위가 아닌 실험으로 결정된 최소 단위로 나눌 수 있다.
다음, 미디어 파일의 전송 시간을 단축시키는 방법에 대한 실시예는 다음과 같다.
도 6 내지 도 7은 본 발명의 일실시예에 있어서 미디어 파일의 전송 시간을 단축시키는 방법의 일례를 도시한 흐름도이다.
프로세서(212)는 미디어 파일에 대해 분할 트랜스코딩을 수행하여 파일 일부의 트랜스코딩을 완료한 시점에 트랜스코더(310)의 파일 변환 결과물을 파일 형태로 저장하지 않고 스트림(stream) 형태로 바로 업로드할 수 있다.
도 6을 참조하면, 프로세서(212)는 미디어 파일에 대해 분할 트랜스코딩을 수행하게 되는데, 이때 트랜스코더(310)의 결과물(transcoded stream)을 스트리밍 방식으로 메모리 버퍼(601)를 거쳐 업로더(320)를 통해 서버(150)로 바로 업로드할 수 있다. 트랜스코더(310)에서 미디어 파일의 트랜스코딩이 분할 단위로 진행됨에 따라 이전 분할 단위 파일의 트랜스코딩이 완료되는 시점에 이전 분할 단위 파일의 업로딩과 다음 분할 단위 파일의 인코딩이 병행 처리될 수 있다.
프로세서(212)는 분할 트랜스코딩을 수행하면서 트랜스코딩 결과물을 별도의 파일로 저장하지 않고 결과물 스트림을 바로 서버(150)로 업로드하여 미디어 파일 전체에 대한 변환이 완료되지 않은 상태에서도 부분적인 트랜스코딩 결과물을 업로드할 수 있다.
도 7을 참조하면, 분할 단위로 미디어 파일의 트랜스코딩과 업로딩을 병행하면서 분할된 일부 파일의 트랜스코딩 결과물을 파일 형태로 저장하지 않고 스트림 형태로 바로 업로드하는 방식의 경우(도 7의 아래 도면 참조), 미디어 파일의 전체 부분에 대한 변환 작업이 모두 완료된 이후에 파일 변환 결과물을 파일 형태로 저장하여 이를 업로드하는 기존 방식(도 7의 위 도면 참조)에 비해, 전체 소요 시간을 단축시킬 수 있다. 전체 미디어 파일에 대한 변환이 완료되지 않은 상태에서 업로드를 시작하게 되므로 기존 방식보다 업로드가 완료되는데 수행되는 시간이 단축될 수 있다.
스트림 방식을 통한 병행 처리의 경우 미디어 파일의 분할 단위에 대한 트랜스코딩은 물론이고, 미디어 파일의 전체 파일에 대해 트랜스코딩을 수행하는 것 또한 가능하다. 트랜스코더(310)가 트랜스코딩 과정에서 결과를 메모리 버퍼(601)에 쓰고 즉시 업로더(320)가 메모리 버퍼(601)의 출력 스트림(output stream)을 그대로 서버(150)에 업스트리밍(up streaming)할 수 있다. 다시 말해, 트랜스코딩 결과물이 스트림 단위로 메모리 버퍼(601)에 쓰여지며 이 스트림을 업로더(320)가 즉시 서버(150)에 업로드함으로 인해 미디어 파일의 트랜스코딩과 업로딩을 병행 처리할 수 있다.
도 8 내지 도 10은 본 발명의 일실시예에 있어서 미디어 파일의 전송 시간을 단축시키는 방법의 다른 예를 도시한 흐름도이다.
프로세서(212)는 미디어 파일에 대해 분할 트랜스코딩을 수행하여 파일 일부의 트랜스코딩을 완료한 시점에 트랜스코더(310)의 파일 변환 결과물을 파일 형태로 저장하여 업로드할 수 있다.
도 8을 참조하면, 인코딩과 업로딩의 병행화를 위해 프로세서(212)는 하나의 트랜스코더(310)와 하나의 업로더(320)를 포함할 수 있다.
트랜스코더(310)에서 미디어 파일의 트랜스코딩을 분할 단위로 차례로 진행하여 파일 형태로 저장된 트랜스코딩 결과물(transcoded chunk file)을 업로더(320)로 전달하게 되고, 이전 분할 단위 파일의 트랜스코딩이 완료되는 시점에 트랜스코더(310)는 다음 분할 단위 파일의 트랜스코딩을 수행하고 이와 동시에 업로더(320)는 이전 분할 단위 파일의 트랜스코딩 결과물을 파일 형태로 서버(150)로 업로드할 수 있다.
프로세서(212)는 분할 트랜스코딩을 수행하여 트랜스코딩 결과물을 분할 단위 파일의 인코딩이 완료된 즉시 생성하여 미디어 파일 전체에 대한 변환이 완료되지 않은 상태에서도 분할 단위 파일의 트랜스코딩 결과물을 업로드할 수 있다.
도 9를 참조하면, 분할 단위로 미디어 파일의 트랜스코딩과 업로딩을 병행하면서 분할된 일부 파일의 트랜스코딩 결과물을 파일 형태로 업로드하는 방식의 경우(도 9의 아래 도면 참조), 미디어 파일의 전체 부분에 대한 변환 작업이 모두 완료된 이후에 파일 변환 결과물을 파일 형태로 저장하여 이를 업로드하는 기존 방식(도 9의 위 도면 참조)에 비해, 전체 소요 시간을 단축시킬 수 있다.
최초 업로드가 시작되는 시간은 첫 번째 분할 파일의 변환이 완료되는 시점이고, 마지막 업로드가 시작되는 시간은 마지막 분할 파일의 변환이 완료되는 시점으로, 전체 미디어 파일의 업로드가 완료되는 총 시간은 마지막 분할 파일의 업로드가 완료되기까지 걸리는 시간이라 할 수 있다. 예를 들어, 트랜스코딩 작업의 결과물로 생성되는 파일의 크기가 100인 미디어 파일에 대해 파일 전체의 트랜스코딩이 완료되기까지 기다렸다가 크기 100의 파일을 한꺼번에 업로드하는 기존 방식에 비해, 100 크기의 미디어 파일을 20개로 나누어 5 크기씩 파일의 트랜스코딩과 업로딩을 병행하는 방식이 결과적으로 전체 소요 시간을 단축시킬 수 있다. 즉, 전체 미디어 파일에 대한 변환이 완료되지 않은 상태에서 업로드를 시작하게 되므로 기존 방식보다 업로드가 완료되는데 수행되는 시간이 단축될 수 있다.
트랜스코딩과 업로딩의 병행 처리를 통한 미디어 파일의 전송 시간을 단축시키는 방법은 네트워크 품질이 보장되는 환경으로 파일 업로드 도중 통신 장애가 발생하지 않는 상황을 가정한 것이다. 예외적으로, 미디어 파일이 10개의 파일로 분할되어 순차적으로 업로드 되는 상황에서 8번째 분할 파일까지 정상적으로 업로드된 이후 일시적인 통신 장애로 인해 9번째 파일을 업로드하기 위한 통신 세션에 문제가 생겨 10번째 분할 파일의 업로드가 먼저 완료된다면 실제 업로드가 완료되는 시간은 9번째 분할 파일의 업로드가 완료된 시점이 되는 것이다.
다른 예로, 도 10을 참조하면 인코딩과 업로딩의 병행화를 위해 프로세서(212)는 복수 개의 트랜스코더(Transcoder#1~#N)(310)와 복수 개의 업로더(Uploader#1~#N)(320)를 포함할 수 있고, 이때 트랜스코더(310)와 업로더(320)는 일대일로 배치되어 구성될 수 있다.
트랜스코더(310)와 업로더(320)의 일대일 배치 이외에도 트랜스코더(310)와 업로더(320)의 성능을 고려하여 트랜스코더(310)와 업로더(320)의 배치 구조가 결정될 수 있다. 다시 말해, 트랜스코더(310)의 성능이 업로더(320)보다 좋은 경우 트랜스코더(310)의 개수가 업로더(320)보다 적을 수 있고, 반대로 업로더(320)의 성능이 트랜스코더(310)보다 좋은 경우 업로더(320)의 개수가 트랜스코더(310)보다 적을 수 있다.
프로세서(212)는 미디어 파일을 사전에 정해진 크기의 분할 단위로 분할한 후 각 분할 단위 파일을 복수 개의 트랜스코더(310)에 할당할 수 있다. 이때, 각 트랜스코더(310)는 할당받은 분할 단위 파일의 트랜스코딩을 수행하여 파일 형태로 저장된 트랜스코딩 결과물을 업로더(320)에 전달하고, 각 업로더(320)는 대응되는 트랜스코더(310)로부터 파일 형태의 트랜스코딩 결과물을 전달받아 서버(150)로 업로드할 수 있다.
따라서, 복수 개의 트랜스코더(310)를 이용한 병렬 트랜스코딩과 복수 개의 업로더(320)를 이용한 병렬 업로딩을 수행함으로써 미디어 파일의 인코딩과 업로딩을 병행 처리하여 파일 전송 시간을 한층 단축시킬 수 있다.
더 나아가, 프로세서(212)는 분할 트랜스코딩을 수행함에 따라 인코딩이나 업로딩이 실패하는 상황이 발생하는 경우 실패한 분할 단위 파일에 대해 작업을 재시도할 수 있다.
파일 전체의 트랜스코딩이 완료되기까지 기다렸다가 단일 파일로 생성하여 한꺼번에 업로드하는 기존 방식의 경우 트랜스코딩이나 업로딩이 도중에 실패하면 이는 곧 전체 작업의 실패로 이어지게 된다.
이와 달리, 본 발명에서는 분할 단위의 트랜스코딩과 업로딩을 수행하기 때문에 작업이 실패하더라도 부분적으로 실패한 분할 단위 파일에 대해 작업을 재개할 수 있어 전체적인 소요시간을 단축할 수 있다.
프로세서(212)는 분할 단위의 트랜스코딩과 업로딩을 병행하는 방법을 통해 미디어 파일을 서버(150)로 전송할 때 미디어 파일의 전체를 다운로드 하지 않고도 분할 단위의 트랜스코딩 결과물만으로도 재생 가능한 형태(예컨대, progressive downloadable format)로 업로드할 수 있고, 이때 서버(150)에서는 별도의 파일 변환 작업을 수행할 필요가 없다. 미디어 파일의 전체를 다운로드 하지 않고는 재생 불가능한 형태로 업로드되더라도 서버(150)에 업로드된 파일을 조합한 후 재생 가능한 형태로 전환(re-formatting)하는 비용은 비교적 작다. 분할 단위의 트랜스코딩 결과물을 파일 형태가 아닌 스트림 형태로 업로드하는 경우에는 미디어 파일의 전체를 다운로드 하지 않고는 자체 재생이 불가능한 상태이므로 서버(150)에서 트랜스코딩 결과물에 해당되는 스트림을 재생 가능한 형태로 포맷을 변경하게 되며, 이때 소비되는 비용이나 리소스는 서버(150) 측에서 미디어 파일의 트랜스코딩을 직접 수행할 때의 운영 비용에 비해 현저히 작다.
이처럼 본 발명의 실시예들에 따르면, 클라이언트에서 미디어 파일에 대한 트랜스코딩을 수행하여 서버로 업로드하는 환경에서 미디어 파일에 대한 트랜스코딩과 업로딩을 병행 처리함으로써 미디어 파일의 전송 완료까지 소요되는 전체 시간을 효과적으로 단축시킬 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (17)

  1. 컴퓨터 시스템에서 실행되는 미디어 파일 전송 방법에 있어서,
    상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 미디어 파일 전송 방법은,
    상기 적어도 하나의 프로세서에 의해, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일을 단위 크기를 갖는 복수의 분할 단위 파일들로 분할하고, 상기 분할 단위 파일들의 각 분할 단위 파일에 대해 순차적으로 트랜스코딩을 수행하는 단계; 및
    상기 트랜스코딩을 수행하는 단계와의 병렬 처리로서, 상기 적어도 하나의 프로세서에 의해, 상기 각 분할 단위 파일에 대한 트랜스코딩 결과물을 순차적으로 상기 메신저와 관련된 서버로 업로드하는 단계
    를 포함하고,
    상기 복수의 분할 단위 파일들 중 제1 분할 단위 파일의 트랜스코딩이 완료되는 시점에, 상기 복수의 분할 단위 파일들 중 상기 제1 분할 단위 파일의 다음 분할 단위 파일인 제2 분할 단위 파일에 대한 트랜스코딩이 수행되고, 상기 제2 분할 단위 파일에 대한 트랜스코딩과의 병행 처리로서, 상기 제1 분할 단위 파일의 트랜스코딩 결과물의 상기 서버로의 업로딩이 처리되는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  2. 제1항에 있어서,
    상기 업로드하는 단계는,
    상기 각 분할 단위 파일에 대한 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 업로드하는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  3. 제1항에 있어서,
    상기 트랜스코딩을 수행하는 단계는,
    상기 각 분할 단위 파일에 대한 트랜스코딩 결과물을 파일 형태로 저장하는 단계
    를 포함하고,
    상기 업로드하는 단계는,
    상기 저장된 파일 형태의 트랜스코딩 결과물을 순차적으로 업로드하는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  4. 제3항에 있어서,
    상기 저장하는 단계는,
    상기 각 분할 단위 파일에 트랜스코딩 결과물을 자체 재생이 가능한 형태로 저장하는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  5. 제1항에 있어서,
    상기 적어도 하나의 프로세서는 하나의 트랜스코더와 하나의 업로더를 포함하고,
    상기 미디어 파일에 대해 상기 트랜스코더를 통해 상기 제2 분할 단위 파일의 트랜스코딩을 수행하면서 동시에 상기 업로더를 통해 상기 제1 분할 단위 파일의 업로딩을 수행하는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  6. 제1항에 있어서,
    상기 적어도 하나의 프로세서는 복수 개의 트랜스코더와 복수 개의 업로더를 포함하고,
    상기 미디어 파일에 대해 상기 복수 개의 트랜스코더를 이용한 병렬 트랜스코딩과 상기 복수 개의 업로더를 이용한 병렬 업로딩을 수행하고,
    상기 복수 개의 트랜스코더 각각에 의해 상기 트랜스코딩을 수행하는 단계가 수행되고,
    상기 복수 개의 업로더 각각에 의해 상기 업로드하는 단계가 수행되는 것을 특징으로 하는 미디어 파일 전송 방법.
  7. 제1항에 있어서,
    상기 트랜스코딩을 수행하는 단계는,
    상기 미디어 파일을, 상기 분할 단위 파일들로서, 키 프레임(key frame)을 기준으로 한 GOP(group of pictures) 단위로 분할하는 단계
    를 포함하는 미디어 파일 전송 방법.
  8. 제7항에 있어서,
    상기 분할하는 단계는,
    상기 GOP 단위가 사전 실험을 통해 결정된 최소 단위보다 작은 경우 상기 미디어 파일을 상기 GOP 단위가 아닌 상기 최소 단위로 분할하는 것
    을 특징으로 하는 미디어 파일 전송 방법.
  9. 컴퓨터 시스템에서 실행되는 미디어 파일 전송 방법에 있어서,
    상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 미디어 파일 전송 방법은,
    상기 적어도 하나의 프로세서에 의해, 상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일에 대해 트랜스코딩을 수행하는 단계; 및
    상기 트랜스코딩을 수행하는 단계와의 병렬 처리로서, 상기 적어도 하나의 프로세서에 의해, 상기 미디어 파일의 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 상기 메신저와 관련된 서버로 업로드하는 단계
    를 포함하고,
    상기 미디어 파일에 대한 트랜스코딩 중, 상기 미디어 파일의 트랜스코딩 결과물은 상기 컴퓨터 시스템의 메모리 버퍼에 쓰여지고, 상기 미디어 파일의 트랜스코딩 결과물이 상기 메모리 버퍼에 쓰여지는 즉시 상기 서버로 업로드되므로써 상기 트랜스코딩을 수행하는 단계와 상기 업로드하는 단계는 병렬 처리되는 미디어 파일 전송 방법.
  10. 제1항 내지 제9항 중 어느 한 항의 미디어 파일 전송 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 비-일시적인 컴퓨터 판독 가능한 기록 매체.
  11. 컴퓨터 시스템에 있어서,
    메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일을 단위 크기를 갖는 복수의 분할 단위 파일들로 분할하고, 상기 분할 단위 파일들의 각 분할 단위 파일에 대해 순차적으로 트랜스코딩을 수행하는 과정; 및
    상기 트랜스코딩을 수행하는 과정과의 병렬 처리로서, 상기 각 분할 단위 파일에 대한 트랜스코딩 결과물을 순차적으로 상기 메신저와 관련된 서버로 업로드하는 과정
    을 처리하고,
    상기 복수의 분할 단위 파일들 중 제1 분할 단위 파일의 트랜스코딩이 완료되는 시점에, 상기 복수의 분할 단위 파일들 중 상기 제1 분할 단위 파일의 다음 분할 단위 파일인 제2 분할 단위 파일에 대한 트랜스코딩이 수행되고, 상기 제2 분할 단위 파일에 대한 트랜스코딩과의 병행 처리로서, 상기 제1 분할 단위 파일의 트랜스코딩 결과물의 상기 서버로의 업로딩이 처리되는 것
    을 특징으로 하는 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 업로드하는 과정은,
    상기 각 분할 단위 파일에 대한 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 업로드하는 것
    을 특징으로 하는 컴퓨터 시스템.
  13. 제11항에 있어서,
    상기 각 분할 단위 파일에 대한 트랜스코딩 결과물은 파일 형태로 저장되고,
    상기 업로드하는 과정은,
    상기 저장된 파일 형태의 트랜스코딩 결과물을 순차적으로 업로드하는 것
    을 특징으로 하는 컴퓨터 시스템.
  14. 제11항에 있어서,
    상기 적어도 하나의 프로세서는 하나의 트랜스코더와 하나의 업로더를 포함하고,
    상기 미디어 파일에 대해 상기 트랜스코더를 통해 상기 제2 분할 단위 파일의 트랜스코딩을 수행하면서 동시에 상기 업로더를 통해 상기 제1 분할 단위 파일의 업로딩을 수행하는 것
    을 특징으로 하는 컴퓨터 시스템.
  15. 제11항에 있어서,
    상기 적어도 하나의 프로세서는 복수 개의 트랜스코더와 복수 개의 업로더를 포함하고,
    상기 미디어 파일에 대해 상기 복수 개의 트랜스코더를 이용한 병렬 트랜스코딩과 상기 복수 개의 업로더를 이용한 병렬 업로딩을 수행하고,
    상기 복수 개의 트랜스코더 각각에 의해 상기 트랜스코딩을 수행하는 과정이 수행되고,
    상기 복수 개의 업로더 각각에 의해 상기 업로드하는 과정이 수행되는 것
    을 특징으로 하는 컴퓨터 시스템.
  16. 제11항에 있어서,
    상기 트랜스코딩을 수행하는 과정은,
    상기 미디어 파일을, 상기 분할 단위 파일들로서, 키 프레임을 기준으로 한 GOP 단위로 분할하여 트랜스코딩을 수행하는 것
    을 특징으로 하는 컴퓨터 시스템.
  17. 컴퓨터 시스템에 있어서,
    메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터 시스템에 설치된 메신저를 통해 미디어 파일이 선택되는 경우 상기 미디어 파일에 대해 트랜스코딩을 수행하는 과정; 및
    상기 트랜스코딩을 수행하는 과정과의 병렬 처리로서, 상기 미디어 파일의 트랜스코딩 결과물을 스트리밍 방식을 통해 스트림 형태로 상기 메신저와 관련된 서버로 업로드하는 과정
    을 처리하고,
    상기 미디어 파일에 대한 트랜스코딩 중, 상기 미디어 파일의 트랜스코딩 결과물은 상기 컴퓨터 시스템의 메모리 버퍼에 쓰여지고, 상기 미디어 파일의 트랜스코딩 결과물이 상기 메모리 버퍼에 쓰여지는 즉시 상기 서버로 업로드되므로써 상기 트랜스코딩을 수행하는 과정과 상기 업로드하는 과정은 병렬 처리되는 컴퓨터 시스템.
KR1020190081428A 2019-07-05 2019-07-05 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템 KR102238720B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190081428A KR102238720B1 (ko) 2019-07-05 2019-07-05 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템
JP2020112931A JP7568203B2 (ja) 2019-07-05 2020-06-30 エンコードとアップロードの並行処理によってメディアファイルの送信時間を短縮することができる方法およびシステム
US16/918,198 US20210006850A1 (en) 2019-07-05 2020-07-01 Method and system for shortening transmission time of media file through concurrent processing of encoding and uploading

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190081428A KR102238720B1 (ko) 2019-07-05 2019-07-05 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20210004660A KR20210004660A (ko) 2021-01-13
KR102238720B1 true KR102238720B1 (ko) 2021-04-09

Family

ID=74065506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190081428A KR102238720B1 (ko) 2019-07-05 2019-07-05 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템

Country Status (3)

Country Link
US (1) US20210006850A1 (ko)
JP (1) JP7568203B2 (ko)
KR (1) KR102238720B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024167122A1 (ko) * 2023-02-07 2024-08-15 삼성전자 주식회사 외부 장치에 표시하기 위한 비디오를 처리하는 전자 장치, 그 제어 방법, 및 그 기록 매체

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102006449B1 (ko) * 2017-11-29 2019-08-01 네이버 주식회사 분산 트랜스코딩 방법 및 분산 트랜스코딩 시스템

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083124A1 (en) 2000-10-04 2002-06-27 Knox Christopher R. Systems and methods for supporting the delivery of streamed content
WO2009151789A2 (en) * 2008-04-17 2009-12-17 Sony Corporation Dual-type of playback for multimedia content
WO2010108053A1 (en) 2009-03-19 2010-09-23 Azuki Systems, Inc. Method for scalable live streaming delivery for mobile audiences
KR101295209B1 (ko) 2012-02-01 2013-09-12 엔에이치엔(주) 클라우드 서버와의 양방향 연동을 통해 파일 공유를 제공하는 그룹 메시징 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
JP6148460B2 (ja) 2012-03-05 2017-06-14 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
KR20150044058A (ko) * 2013-10-15 2015-04-24 주식회사 제이엘에스커뮤니케이션 업로드 동영상 파일의 미리보기 정보 처리방법 및 그 시스템
KR20160056236A (ko) * 2014-11-11 2016-05-19 (주)판도라티비 온라인 비디오 플랫폼 서비스 방법 및 그 시스템
KR102006449B1 (ko) * 2017-11-29 2019-08-01 네이버 주식회사 분산 트랜스코딩 방법 및 분산 트랜스코딩 시스템
KR102024160B1 (ko) * 2017-11-30 2019-09-23 네이버 주식회사 분산 트랜스코딩의 시간 단축을 위한 최적화 방법 및 그 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024167122A1 (ko) * 2023-02-07 2024-08-15 삼성전자 주식회사 외부 장치에 표시하기 위한 비디오를 처리하는 전자 장치, 그 제어 방법, 및 그 기록 매체

Also Published As

Publication number Publication date
KR20210004660A (ko) 2021-01-13
JP7568203B2 (ja) 2024-10-16
JP2021012691A (ja) 2021-02-04
US20210006850A1 (en) 2021-01-07

Similar Documents

Publication Publication Date Title
JP7126813B2 (ja) 動画録画方法およびシステム
US9455931B2 (en) Load balancing between processors
EP4021000A1 (en) Video playback method, device, apparatus, and storage medium
JP7273217B2 (ja) ビデオカンファレンスのビデオストリームを提供するサーバ、方法及びコンピュータプログラム
US20200236074A1 (en) Method, system, and non-transitory computer readable record medium for sharing information in chatroom using application added to platform in messenger
US20200029114A1 (en) Method, system, and non-transitory computer-readable record medium for synchronization of real-time live video and event data
US11528516B2 (en) Distributed transcoding method and distributed transcoding system
WO2024066828A1 (zh) 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品
KR102238720B1 (ko) 인코딩과 업로딩의 병행 처리를 통해 미디어 파일의 전송 시간을 단축시킬 수 있는 방법 및 시스템
EP4126277A1 (en) Creating cloud-hosted, streamed augmented reality experiences with low perceived latency
JP7164623B2 (ja) ライブ放送で発生するゲスト放送のディレイを解消する方法とシステム、および非一時的なコンピュータ読み取り可能な記録媒体
CN113226501A (zh) 应用程序的流媒体影像提供装置及方法
KR102024160B1 (ko) 분산 트랜스코딩의 시간 단축을 위한 최적화 방법 및 그 시스템
CN114143562A (zh) 延迟最小化方法、服务器及计算机可读记录介质
US20180192064A1 (en) Transcoder for real-time compositing
KR20170067448A (ko) 타임머신 기능을 위한 슬라이딩 윈도우 관리 방법 및 시스템
KR20160131830A (ko) 클라우드 스트리밍 서비스 시스템, 리사이즈 기반의 멀티뷰 화면을 제공하는 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR102134250B1 (ko) 스트리밍 콘텐츠의 재생 방법 및 시스템
CN117557701B (zh) 一种图像渲染方法和电子设备
JP7534027B2 (ja) 多重ライブ配信環境でのチャンネル間の高速切替モードを実現する方法、システム、およびコンピュータ読み取り可能な記録媒体
JP7312858B2 (ja) 多重ライブ配信環境でチャンネルのシームレス切り替えモードを実現する方法、システム、およびコンピュータ読み取り可能な記録媒体
KR102095674B1 (ko) 다중화 스트리밍 및 네트워크 장치 및 그 동작 방법
JP7133634B2 (ja) ユーザフィードバックが可能なボットに基づいて映像を制作する方法、システム、および非一時的なコンピュータ読み取り可能な記録媒体
KR102059363B1 (ko) 스트리밍 기반의 분산 트랜스코더
KR102427882B1 (ko) 온라인 인터랙션을 위한 실시간 동영상 공유 시스템 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant