WO2019107955A1 - Optimization method for shortening time for distributed transcoding and system therefor - Google Patents

Optimization method for shortening time for distributed transcoding and system therefor Download PDF

Info

Publication number
WO2019107955A1
WO2019107955A1 PCT/KR2018/014919 KR2018014919W WO2019107955A1 WO 2019107955 A1 WO2019107955 A1 WO 2019107955A1 KR 2018014919 W KR2018014919 W KR 2018014919W WO 2019107955 A1 WO2019107955 A1 WO 2019107955A1
Authority
WO
WIPO (PCT)
Prior art keywords
segments
segment
worker
encoding
merging
Prior art date
Application number
PCT/KR2018/014919
Other languages
French (fr)
Korean (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 네이버 주식회사
Publication of WO2019107955A1 publication Critical patent/WO2019107955A1/en

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/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/234318Processing 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 decomposing into objects, e.g. MPEG-4 objects
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • 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

Definitions

  • the following description relates to techniques for handling distributed transcoding.
  • a video service provider places a separate encoding server for encoding and transcoding through a compression algorithm (for example, MPEG2 or H.264).
  • a compression algorithm for example, MPEG2 or H.264.
  • Korean Patent Laid-Open Publication No. 10-2005-0091369 discloses a technique for converting a video coded in one format into another video coding format.
  • the encoding system encodes only one video file in one encoding server, especially since the encoding of high-quality video takes a considerable CPU load.
  • a distributed transcoding method performed in a computer-implemented server comprising the steps of: dividing image content into segments of a predetermined interval, and allocating segmented segments to a plurality of workers; Receiving an encoded segment from each worker and storing the received segment in storage; And concatenating the segments stored in the storage in order and merging them into one encoded file.
  • each worker can transmit an encoded data unit to the server at the time when the encoding of each of the data units constituting the segment is completed with respect to the allocated segment.
  • the data unit may be a unit that performs encoding in one unit in the worker.
  • each worker can transmit an entire encoded segment file to the server at the time when encoding of the entire segment file is completed with respect to the allocated segment.
  • the merging step may sequentially read the stored segments one by one in the storage and perform a connection operation.
  • the merging step may preload the at least some segments stored in the storage in the temporary memory for the connection operation, and sequentially connect the preloaded segments to the temporary memory.
  • the merging step may include determining the number of segments to be preloaded considering the number of concurrent encodings currently in progress and the available memory size.
  • the merging step may include determining whether to perform additional preloading and scaling each time a connection operation for one segment is completed.
  • the allocating step may include dividing the image content into segments of a group of pictures (GOP), or dividing the image contents into a minimum unit segment determined through a preliminary experiment.
  • GOP group of pictures
  • the allocating step may include allocating a segment according to a priority using at least one of the number of co-available encoders and the idle time of the worker.
  • a computer-readable recording medium having recorded thereon a program for causing a computer to execute the distributed transcoding method.
  • a distributed transcoding system in a computer-implemented server comprising: at least one processor configured to execute computer-readable instructions contained in a memory, the at least one processor comprising: Assigning the segmented segments to a plurality of walkers; Receiving an encoded segment from each worker and storing the received segment in storage; And merging the segments stored in the storage into a single encoded file in order.
  • the segments encoded in each worker can be connected and merged more quickly.
  • FIG. 1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
  • FIG. 2 is a block diagram for explaining an internal configuration of an electronic device and a server in an embodiment of the present invention.
  • FIG. 3 is a flow chart illustrating a distributed transcoding method in an embodiment of the present invention.
  • FIG. 4 is a diagram illustrating an example of a component that may be included in a distributed transcoding system according to an embodiment of the present invention.
  • FIG. 5 is an exemplary diagram for explaining a process of dividing and distributing an original image according to an embodiment of the present invention.
  • FIG. 6 is an exemplary diagram for explaining a process of merging encoded segments into one encoding result in an embodiment of the present invention.
  • 7 to 8 are exemplary diagrams illustrating a process of transmitting an encoded segment in a worker in an embodiment of the present invention.
  • 9 to 10 are exemplary diagrams illustrating a process of connecting encoded segments in an embodiment of the present invention.
  • Embodiments of the present invention relate to a distributed transcoder, and more particularly, to a method and system for performing parallel transcoding by dividing an image into segments for further improved time.
  • Embodiments including those specifically disclosed herein achieve significant advantages in terms of time improvement, cost savings, resiliency, efficiency, rationality, etc. through distributed transcoding.
  • 1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention. 1 shows an example in which a plurality of electronic devices 110, 120, 130, 140, a plurality of servers 150, 160, and a network 170 are included. 1, the number of electronic devices and the number of servers are not limited to those shown in FIG.
  • the plurality of electronic devices 110, 120, 130, 140 may be a fixed terminal implemented as a computer device or a mobile terminal.
  • Examples of the plurality of electronic devices 110, 120, 130 and 140 include a smart phone, a mobile phone, a navigation device, a computer, a notebook, a digital broadcast terminal, a PDA (Personal Digital Assistants) ), A tablet PC, a game console, a wearable device, an Internet of things (IoT) device, a virtual reality (VR) device, and an augmented reality (AR) device.
  • FIG. 1 illustrates the shape of a smartphone as an example of the first electronic device 110, but in the embodiments of the present invention, the first electronic device 110 transmits the network 170 using a wireless or wired communication method.
  • any of a variety of physical computer devices capable of communicating with other electronic devices 120, 130, 140 and / or servers 150 any of a variety of physical computer devices capable of communicating with other electronic devices 120, 130, 140 and / or servers 150,
  • the communication method is not limited and includes a communication method using a communication network (for example, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network, a satellite network, etc.) .
  • the network 170 may be a personal area network (LAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN) , A network such as the Internet, and the like.
  • the network 170 may also include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or a hierarchical network, It is not limited.
  • Each of the servers 150 and 160 is a computer device or a plurality of computers that communicate with a plurality of electronic devices 110, 120, 130 and 140 through a network 170 to provide commands, codes, files, Lt; / RTI > devices.
  • the server 150 may be a system that provides a first service to a plurality of electronic devices 110, 120, 130, 140 connected through a network 170, 170, and 140 to the first and second electronic devices 110, 120, 130, and 140, respectively.
  • the server 150 may provide a service (for example, a video service or the like) for a corresponding application through an application as a computer program installed in a plurality of electronic apparatuses 110, 120, 130, As a single service, to a plurality of electronic devices 110, 120, 130, and 140.
  • the server 160 may provide a service for distributing a file for installing and running the application to the plurality of electronic devices 110, 120, 130, and 140 as a second service.
  • 2 is a block diagram for explaining an internal configuration of an electronic device and a server in an embodiment of the present invention. 2 illustrates an internal configuration of the electronic device 1 (110) and the server 150 as an example of the electronic device. Other electronic devices 120, 130, 140 and server 160 may also have the same or similar internal configuration as electronic device 1 110 or server 150 described above.
  • the electronic device 1 110 and the server 150 may include memories 211 and 221, processors 212 and 222, communication modules 213 and 223 and input / output interfaces 214 and 224.
  • the memories 211 and 221 are non-transitory computer readable recording media and can be used to store non-transient computer readable media such as random access memory (RAM), read only memory (ROM), disk drive, solid state drive (SSD), flash memory And may include a permanent mass storage device.
  • the non-decaying mass storage device such as a ROM, an SSD, a flash memory, a disk drive, or the like may be included in the electronic device 110 or the server 150 as a separate persistent storage device separate from the memories 211 and 221.
  • the memory 211 and the memory 221 are provided with an operating system and at least one program code (for example, a program installed in the electronic device 1 (110) and used for a browser or an application installed in the electronic device 1 Code) can be stored.
  • These software components may be loaded from a computer readable recording medium separate from the memories 211 and 221.
  • a computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, and a memory card.
  • the software components may be loaded into memory 211, 221 via communication modules 213, 223 rather than a computer readable recording medium.
  • At least one program may be a computer program installed by files provided by a file distribution system (e.g., the server 160 described above) that distributes installation files of developers or applications, May be loaded into the memory 211, 221 based on the application (e.g., the application described above).
  • a file distribution system e.g., the server 160 described above
  • the application e.g., the application described above.
  • Processors 212 and 222 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations.
  • the instructions may be provided to the processors 212 and 222 by the memories 211 and 221 or the communication modules 213 and 223.
  • the processor 212, 222 may be configured to execute a command received in accordance with a program code stored in a recording device, such as the memory 211, 221.
  • the communication modules 213 and 223 may provide functions for the electronic device 1 110 and the server 150 to communicate with each other through the network 170 and may be provided to the electronic device 1 110 and / May provide a function for communicating with another electronic device (e.g., electronic device 2 120) or another server (e.g., server 160).
  • another electronic device e.g., electronic device 2 120
  • another server e.g., server 160
  • the request generated by the processor 212 of the electronic device 1 110 according to the program code stored in the recording device such as the memory 211 is transmitted to the server 170 via the network 170 under the control of the communication module 213 150 < / RTI > Conversely, control signals, commands, contents, files, and the like provided under the control of the processor 222 of the server 150 are transmitted to the communication module 223 of the electronic device 110 via the communication module 223 and the network 170 213 to the electronic device 1 (110).
  • control signals, commands, contents, files, and the like of the server 150 received through the communication module 213 can be transmitted to the processor 212 or the memory 211, (The above-mentioned persistent storage device), which may further include a storage medium 110.
  • the input / output interface 214 may be a means for interfacing with the input / output device 215.
  • the input device may include a device such as a keyboard, a mouse, a microphone, a camera, and the like
  • the output device may include a device such as a display, a speaker, a haptic feedback device
  • the input / output interface 214 may be a means for interfacing with a device having integrated functions for input and output, such as a touch screen.
  • the input / output device 215 may be composed of the electronic device 1 (110) and one device.
  • the input / output interface 224 of the server 150 may be a means for interfacing with the server 150 or an interface with a device (not shown) for input or output that the server 150 may include.
  • the configuration is performed using the data provided by the server 150 or the electronic device 2 (120)
  • a service screen or contents can be displayed on the display through the input / output interface 214.
  • electronic device 1 110 and server 150 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components.
  • electronic device 1 110 may be implemented to include at least a portion of input / output devices 215 described above, or may be implemented with other components such as a transceiver, Global Positioning System (GPS) module, camera, Elements. More specifically, when the electronic device 1 (110) is a smart phone, the acceleration sensor, the gyro sensor, the camera module, various physical buttons, buttons using a touch panel, input / output ports, A vibrator, and the like may be further included in the electronic device 1 (110).
  • GPS Global Positioning System
  • FIG. 3 is a flow chart illustrating a basic process for distributed transcoding in one embodiment of the present invention.
  • the server 150 serves as a platform for providing a moving image service to a plurality of electronic devices 110, 120, 130, and 140 which are clients.
  • the server 150 can provide a moving image service in cooperation with an application installed on the electronic devices 110, 120, 130 and 140.
  • the server 150 may include a processor 222 as a component for performing the distributed transcoding method according to FIG.
  • the processor 222 may be separated into two or more components for presentation of the functionality of the processor 222.
  • Such a processor 222 may control the server 150 to perform the steps S301 to S303 that are included in the distributed transcoding method of FIG.
  • the processor 222 may be implemented to execute instructions in accordance with the code of the operating system and the code of at least one program that the memory 221 contains.
  • the distributed transcoding method according to the present invention is performed by the server 150.
  • a transcoding process (S302) and a process of merging the transcoded segments into a single encoded file (S303).
  • FIG. 4 is a diagram illustrating an example of a component that may be included in a distributed transcoding system according to an embodiment of the present invention.
  • the distributed transcoding system 400 is a component for distributed transcoding, and includes a controller 410, a splitter & merge 420, and an encoding / (Not shown).
  • the control unit 410 and the splitting and merging unit 420 may be included in the processor 222 of the server 150 described with reference to FIG. 1 and FIG.
  • the encoding unit 430 includes a worker which is a unit transcoder for performing an encoding task and each of the walkers is a separate computer device connected to the server 150 and is connected to the division and merging unit 420 It acts as an encoding server to perform assigned tasks.
  • the control unit 410 manages the overall state of the encoding operation.
  • the control unit 410 may control the encoding operation required to provide the moving picture service corresponding to the request of the electronic apparatuses 110, 120, 130,
  • the splitting and merging unit 420 is responsible for distributed transcoding as a distribution subject. Specifically, the dividing and merging unit 420 divides the original image into segments of an appropriate size for the encoding task requested by the control unit 410, distributes the divided images to the walkers corresponding to the encoding unit 430, And merge them into one encoding result.
  • Each of the walkers performs an encoding operation on the segment received from the segmenting and merging unit 420 and transmits the segmented segment to the segmenting and merging unit 420 again.
  • FIG. 5 is an exemplary diagram for explaining a process of dividing and distributing an original image according to an embodiment of the present invention.
  • the dividing and merging unit 420 may divide the original image 501 into a plurality of segments S_0, S_1, S_2, ..., S_N 503 having appropriate sizes.
  • the dividing and merging unit 420 may divide the original image 501 into segments 503 of group of pictures (GOP). In other words, the dividing and merging unit 420 divides the original image 501 based on the GOP boundary of the image. If the GOP size of the original image 501 is large, the size of the segment 503 increases.
  • the dividing and merging unit 420 may divide the original image 501 based on a division unit (for example, 4 seconds) of a predetermined size.
  • the length of the segment 503 is too short, an increase in the number of segments 503 leads to an increase in encoding overhead.
  • the length of the segment 503 is too long, the difference in encoding completion time between walkers increases, that is, the encoding load is not distributed evenly across the walkers, resulting in a longer total encoding time. It is possible to determine an appropriate length by minimizing the overhead incurred in the encoding process and to distribute the encoding load evenly to all the workers, and divides the original image 501 with the determined length as a division unit.
  • the dividing and merging unit 420 basically divides the original image 501 into GOP units and divides the length of the GOP unit into a plurality of GOP units
  • the original image 501 can be divided into a minimum unit determined by experiment rather than a GOP unit.
  • the dividing and merging unit 420 divides the segments S_0, S_1, S_2, ..., S_N 503 into worker_0, worker_1, worker_2, ..., worker_M N). At this time, the dividing and merging unit 420 allocates the walkers (Worker_0, Worker_1, Worker_2, ..., Worker_M) of the encoding performing unit 430 to the segments S_0, S_1, S_2, And may follow priorities of predetermined criteria. For example, the partitioning and merging unit 420 may first allocate a worker having the maximum number of simultaneous encoding available. Since each walker may have a different number of encodings at a time, you can assign the walkers in the order of the number of encodings available.
  • the partitioning and merging unit 420 may first allocate a worker having the longest idle time.
  • the walkers can be allocated in the order of the long waiting time in consideration of the waiting time in which the latest segment is not allocated.
  • the dividing and merging unit 420 allocates the walkers considering the number of available encodings and the idle time. For example, a worker with the largest idle time can be assigned if the number of available encodings is the same and the number of available encodings is the same.
  • FIG. 6 is an exemplary diagram for explaining a process of merging encoded segments into one encoding result in an embodiment of the present invention.
  • the segmentation and merging unit 420 includes a segment receiver 601, a local storage 602, and a concatenator 603 as components for merging. . ≪ / RTI >
  • the segment receiving unit 601 receives a segment encoded from each worker (Worker_0, Worker_1, Worker_2, ..., Worker_M) to which segments (S_0, S_1, S_2, ..., S_N) 503 of the original image 501 are assigned It plays a role.
  • the segment receiving unit 601 stores the segment file received from each worker (Worker_0, Worker_1, Worker_2, ..., Worker_M) in the local storage 602.
  • a data packet corresponding to a moving picture can be separately encoded into a video stream V and an audio stream A, respectively, and a segment file for the video stream and a segment file for the audio stream are stored in the local storage 602 Can be stored separately.
  • the connection unit 603 can create an encoded result packet (i.e., a concatenated file) by connecting the segment files stored in the local storage 602 in the segment order based on the segment division information for the original image 501. [ At this time, the connection unit 603 may interleave the segment file for the video stream and the segment file for the audio stream in a temporally interleaved manner, and store the encoded file as a result in the local storage 602 have.
  • an encoded result packet i.e., a concatenated file
  • both the video stream and the audio stream are described as distributed encoding, but in some cases it is also possible to process the audio stream in a single encoding and the video stream in a distributed encoding.
  • the original image 501 is divided into segments 503 having a constant interval, and parallel transcoding using a plurality of walkers is performed, thereby improving the overall encoding time and distributed encoding performance for a moving picture service.
  • FIG. 7 shows an example of a process of transmitting an encoded segment.
  • each worker (Worker_0, Worker_1, Worker_2) to which the segments (S_0, S_1, S_2) are assigned, the encoded segment files (E_S_0, E_S_1, E_S_2) To the splitting and merging unit 420.
  • each worker splits and merges segment files (E_S_0, E_S_1, E_S_2) encoded with a transmission control protocol (TCP) at the completion of encoding the entire segment file ).
  • TCP transmission control protocol
  • the segment receiving unit 601 receives the segment files E_S_0, E_S_1, and E_S_2 encoded from the walkers (Worker_0, Worker_1, and Worker_2) to which the segments S_0, S_1 and S_2 are assigned and stores them in the local storage 602 do.
  • FIG. 8 shows another example of a process of transmitting an encoded segment.
  • each worker (Worker_0, Worker_1, Worker_2) to which the segments (S_0, S_1, S_2) are assigned transmits the encoding file to the segmenting and merging unit 420, (801).
  • the data unit 801 means a unit for performing encoding in units of one unit by a worker.
  • a frame may be a data unit 801.
  • the worker does not transmit the entire segmented encoded file at the time of completion of the encoding of the entire segment file, but at the time when encoding of each data unit 801 constituting the segment is completed, Data unit.
  • the worker transmits the encoded data unit 801 to the splitting and merging unit 420 when the encoding of the data unit 801 of the corresponding segment file is completed send.
  • the worker Worker_0 sequentially encodes the frames 0a, 0b, 0c, and 0d of the segment S_0 And immediately transmits the encoded frame every time the encoding is completed.
  • the transmission of the encoded data units 801 is performed in parallel by a plurality of workers (Worker_0, Worker_1, and Worker_2).
  • a plurality of workers Worker_0, Worker_1, and Worker_2
  • the time required for all the segments of the original image 501 to converge on the local storage 602 can be further improved as compared with a method in which the encoding file is transmitted in the segment unit.
  • the connection unit 603 can create a single encoding result by connecting the segment files stored in the local storage 602 in the order of the segments based on the segmentation information for the original image 501. [ Segment linking operations must be performed in order of segment. However, since the encoding time differs for each segment according to the complexity of the image and the server situation, the time for storing the encoded segment in the local storage 602 may be different from the segment order.
  • FIG. 9 shows an example of a process of connecting encoded segments.
  • the connection unit 603 reads the segments arriving at the local storage 602 (i.e., stored) one by one in the order of the segments, and performs a connection operation.
  • FIG. 10 shows another example of a process of linking an encoded segment.
  • the connection unit 603 pre-loads at least some of the segments arriving (i.e., stored) in the local storage 602 into the temporary memory 1001, that is, the preloading window, regardless of the segment order (Parallel preloading process).
  • the remaining segments except for the 6th, 14th and 22nd segments arrive at the local storage 602 with respect to the original image 501 divided into 28 segments 503,
  • a segment arriving at the local storage 602 is placed in the temporary memory 1001 for connection and the segment on the temporary memory 1001 is connected in order of segment.
  • the sixth segment is not received, the segment is read and connected when the segment arrives, and since the segments are previously loaded in the temporary memory 1001, the connection operation of the next segments can proceed more quickly.
  • the encoding result can be quickly generated by performing a connection operation using a method of previously loading the encoded segment into the temporary memory 1001.
  • the preloading scale can be appropriately adjusted according to the memory status of the segmenting and merging unit 420.
  • the segmenting and merging unit 420 determines whether additional preloading and preloading are performed each time segment transfer from each worker is completed, or when one preloaded segment is exhausted (i.e., when a connection operation for one segment is completed)
  • the loading scale can be determined.
  • the dividing and merging unit 420 may determine the preloading scale, that is, the number of segments to be preloaded, considering the number of concurrent encodings currently in progress and the available memory size.
  • the segmentation and merge unit 420 may preload the segment by the difference (preloading_count-preloaded_count) have.
  • the final number of preloadable segments (preloading_count) can be calculated by Equation (1).
  • preloading_count MIN (preloading_count_max average_segment_size, available_memory) / average_segment_size
  • MIN (a, b) is the minimum value of a and b
  • available_memory is the current available memory size (bytes).
  • preloading_count_max denotes the maximum number of segments that can be preloaded, and can be calculated, for example, by Equation (2).
  • preloading_count_max worker_count ⁇ concurrent_encoding_per_worker ⁇ (concurrent_encoding_max-concurrent_encoding_count)
  • worker_count is the number of currently assigned worker
  • concurrent_encoding_per_worker is the number of simultaneous encodings per worker
  • concurrent_encoding_max is the maximum number of simultaneous encodings available in the dividing and merging unit 420
  • concurrent_encoding_count is currently being divided and merged ≪ / RTI >
  • average_segment_size denotes an expected average size of an encoded segment, and can be calculated, for example, by Equation (3).
  • average_segment_size average_segment_second ⁇ target_bitrate ⁇ ⁇
  • average_segment_second is the average length (in seconds) of the segment
  • target_bitrate is the target bit rate (bits)
  • the dividing and merging unit 420 can determine the preloading size in consideration of the current number of simultaneous encodings and the available memory size, and can perform the connection operation more quickly through the segment preloading of the determined size.
  • the apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components.
  • the apparatus and components described in the embodiments may be implemented as a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), a programmable logic unit, a microprocessor, or any other device capable of executing and responding to instructions.
  • the processing device may execute an operating system (OS) and one or more software applications running on the operating system.
  • the processing device may also access, store, manipulate, process, and generate data in response to execution of the software.
  • the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG.
  • the processing unit may comprise a plurality of processors or one processor and one controller.
  • Other processing configurations are also possible, such as a parallel processor.
  • the software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded.
  • the software and / or data may be embodied in any type of machine, component, physical device, computer storage media, or device for interpretation by a processing device or to provide instructions or data to the processing device have.
  • the software may be distributed over a networked computer system and stored or executed in a distributed manner.
  • the software and data may be stored on one or more computer readable recording media.
  • the method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium.
  • the medium may be a program that continuously stores a computer executable program, or temporarily stores the program for execution or downloading.
  • the medium may be a variety of recording means or storage means in the form of a combination of a single hardware or a plurality of hardware, and is not limited to a medium directly connected to a computer system, but may be dispersed on a network.
  • the medium examples include a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical recording medium such as CD-ROM and DVD, a magneto-optical medium such as a floptical disk, And program instructions including ROM, RAM, flash memory, and the like.
  • a recording medium or a storage medium that is managed by a site or a server that supplies or distributes an application store or various other software is also enumerated.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

An optimization method for shortening time for distributed transcoding and a system therefor are disclosed. A distributed transcoding method comprises the steps of: splitting image content into segments of a fixed interval and allocating the split segments to a plurality of workers; receiving encoded segments from each worker and storing the received segments in a storage; and concatenating the segments stored in the storage in order and merging same into one encoding file.

Description

분산 트랜스코딩의 시간 단축을 위한 최적화 방법 및 그 시스템Optimization method and system for time reduction of distributed transcoding
아래의 설명은 분산 트랜스코딩을 처리하는 기술에 관한 것이다.The following description relates to techniques for handling distributed transcoding.
최근 주문형 비디오 시스템 및 각종 포털의 동영상 서비스가 확대됨에 따라 서비스를 제공하는 시스템에 맞게 동영상 컨텐츠를 트랜스코딩(인코딩)할 필요성이 증가하고 있다.With the recent expansion of video-on-demand systems and video services of various kinds of portals, there is an increasing need to transcode (encode) video contents in accordance with a service providing system.
일반적으로 동영상 서비스 업체에서는 별도의 인코딩 서버를 두어 압축 알고리즘(예컨대, MPEG2 또는 H.264 등)을 통해 인코딩 및 트랜스코딩을 하고 있다.Generally, a video service provider places a separate encoding server for encoding and transcoding through a compression algorithm (for example, MPEG2 or H.264).
예컨대, 한국공개특허공보 제10-2005-0091369호(공개일 2005년 09월 15일)에는 하나의 포맷으로 코딩된 동영상을 다른 동영상 코딩 포맷으로 변환하는 기술이 개시되어 있다.For example, Korean Patent Laid-Open Publication No. 10-2005-0091369 (published on September 15, 2005) discloses a technique for converting a video coded in one format into another video coding format.
동영상 인코딩은 특히 고화질의 동영상에 대한 인코딩은 막대한 CPU 부하를 차지하기 때문에 인코딩 시스템은 하나의 인코딩 서버에서 하나의 동영상 파일만을 인코딩하고 있다.The encoding system encodes only one video file in one encoding server, especially since the encoding of high-quality video takes a considerable CPU load.
이러한 구성 때문에 실시간 방송 컨텐츠를 주문형 비디오 서비스로 제공하고자 할 때 신속한 서비스의 요구에 차질을 주게 된다. 기존 동영상 서비스에서는 인코딩 및 트랜스코딩 하는데 소요되는 시간의 증가로 원활한 서비스를 제공하지 못하고 있다.Due to this configuration, when real-time broadcast contents are to be provided as an on-demand video service, the demand for a quick service is disrupted. In the existing video service, it does not provide smooth service due to an increase in the time required for encoding and transcoding.
원본 영상을 일정 간격의 세그먼트(segment)로 나누어 병렬 트랜스코딩(parallel transcoding)을 수행하는 분산 트랜스코더의 시간 단축을 위한 최적화 기술을 제공한다.And provides an optimization technique for shortening the time of a distributed transcoder that performs parallel transcoding by dividing the original image into segments of a predetermined interval.
각 워커에서 인코딩된 세그먼트를 세그먼트 병합을 위한 스토리지에 전송하는 시간을 단축할 수 있는 방법 및 시스템을 제공한다.And to provide a method and system that can shorten the time to send encoded segments from each worker to storage for segment merging.
각 워커에서 인코딩된 세그먼트를 보다 빠르게 연결하여(concatenate) 병합할 수 있는 방법 및 시스템을 제공한다.And provide a method and system that allows each walker to concatenate and merge encoded segments more quickly.
컴퓨터로 구현되는 서버에서 수행되는 분산 트랜스코딩 방법에 있어서, 영상 컨텐츠를 일정 간격의 세그먼트(segment)로 분할하여 분할된 세그먼트를 복수 개의 워커(worker)에 할당하는 단계; 각 워커에서 인코딩된 세그먼트를 수신하여 수신된 세그먼트를 스토리지(storage)에 저장하는 단계; 및 상기 스토리지에 저장된 세그먼트를 순서대로 연결하여 하나의 인코딩 파일로 병합하는 단계를 포함하는 분산 트랜스코딩 방법을 제공한다.A distributed transcoding method performed in a computer-implemented server, the method comprising the steps of: dividing image content into segments of a predetermined interval, and allocating segmented segments to a plurality of workers; Receiving an encoded segment from each worker and storing the received segment in storage; And concatenating the segments stored in the storage in order and merging them into one encoded file.
일 측면에 따르면, 각 워커에서는 할당 받은 세그먼트에 대해 해당 세그먼트를 구성하는 데이터 단위 각각의 인코딩이 완료되는 시점에 인코딩된 데이터 단위를 상기 서버로 전송할 수 있다.According to an aspect of the present invention, each worker can transmit an encoded data unit to the server at the time when the encoding of each of the data units constituting the segment is completed with respect to the allocated segment.
다른 측면에 따르면, 상기 데이터 단위는 워커에서 한 단위로 인코딩을 수행하는 단위일 수 있다.According to another aspect, the data unit may be a unit that performs encoding in one unit in the worker.
또 다른 측면에 따르면, 각 워커에서는 할당 받은 세그먼트에 대해 해당 세그먼트 파일 전체의 인코딩이 완료되는 시점에 인코딩된 세그먼트 파일 전체를 상기 서버로 전송할 수 있다.According to another aspect of the present invention, each worker can transmit an entire encoded segment file to the server at the time when encoding of the entire segment file is completed with respect to the allocated segment.
또 다른 측면에 따르면, 상기 병합하는 단계는, 상기 스토리지에서 상기 저장된 세그먼트를 하나씩 순차적으로 읽어와 연결 작업을 수행할 수 있다.According to another aspect of the present invention, the merging step may sequentially read the stored segments one by one in the storage and perform a connection operation.
또 다른 측면에 따르면, 상기 병합하는 단계는, 상기 스토리지에 저장된 적어도 일부 세그먼트를 연결 작업을 위한 임시 메모리에 프리로딩(preloading) 해놓고 상기 임시 메모리에 프리로딩된 세그먼트를 순서대로 연결할 수 있다.According to another aspect, the merging step may preload the at least some segments stored in the storage in the temporary memory for the connection operation, and sequentially connect the preloaded segments to the temporary memory.
또 다른 측면에 따르면, 상기 병합하는 단계는, 현재 진행 중인 동시 인코딩 개수와 가용 메모리 크기를 고려하여 프리로딩할 세그먼트의 개수를 결정하는 단계를 포함할 수 있다.According to another aspect, the merging step may include determining the number of segments to be preloaded considering the number of concurrent encodings currently in progress and the available memory size.
또 다른 측면에 따르면, 상기 병합하는 단계는, 하나의 세그먼트에 대한 연결 작업이 완료될 때마다 추가 프리로딩 여부와 규모를 결정하는 단계를 포함할 수 있다.According to another aspect, the merging step may include determining whether to perform additional preloading and scaling each time a connection operation for one segment is completed.
또 다른 측면에 따르면, 상기 할당하는 단계는, 상기 영상 컨텐츠를 GOP(group of pictures) 단위의 세그먼트로 분할하거나 사전 실험을 통해 결정된 최소 단위의 세그먼트로 분할하는 단계를 포함할 수 있다.According to another aspect, the allocating step may include dividing the image content into segments of a group of pictures (GOP), or dividing the image contents into a minimum unit segment determined through a preliminary experiment.
또 다른 측면에 따르면, 상기 할당하는 단계는, 워커의 동시 가용한 인코딩 개수와 아이들 타임(idle time) 중 적어도 하나를 이용한 우선순위에 따라 세그먼트를 할당하는 단계를 포함할 수 있다.According to another aspect, the allocating step may include allocating a segment according to a priority using at least one of the number of co-available encoders and the idle time of the worker.
상기 분산 트랜스코딩 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체를 제공한다.There is provided a computer-readable recording medium having recorded thereon a program for causing a computer to execute the distributed transcoding method.
컴퓨터로 구현되는 서버에서의 분산 트랜스코딩 시스템에 있어서, 메모리에 포함된 컴퓨터 판독 가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 영상 컨텐츠를 일정 간격의 세그먼트로 분할하여 분할된 세그먼트를 복수 개의 워커에 할당하는 과정; 각 워커에서 인코딩된 세그먼트를 수신하여 수신된 세그먼트를 스토리지에 저장하는 과정; 및 상기 스토리지에 저장된 세그먼트를 순서대로 연결하여 하나의 인코딩 파일로 병합하는 과정을 처리하는 분산 트랜스코딩 시스템을 제공한다.What is claimed is: 1. A distributed transcoding system in a computer-implemented server, the system comprising: at least one processor configured to execute computer-readable instructions contained in a memory, the at least one processor comprising: Assigning the segmented segments to a plurality of walkers; Receiving an encoded segment from each worker and storing the received segment in storage; And merging the segments stored in the storage into a single encoded file in order.
본 발명의 실시예들에 따르면, 인코딩된 세그먼트를 빠르게 모아 최적화 된 연결(concatenate) 과정을 통해 분산 인코딩 성능을 최대화 할 수 있다.According to embodiments of the present invention, it is possible to maximize distributed encoding performance through an optimized concatenation process by quickly gathering encoded segments.
본 발명의 실시예들에 따르면, 각 워커에서 인코딩된 세그먼트를 세그먼트 병합을 위한 스토리지에 전송하는 시간을 단축할 수 있다.According to embodiments of the present invention, it is possible to shorten the time for transmitting the segment encoded in each worker to storage for segment merging.
본 발명의 실시예들에 따르면, 각 워커에서 인코딩된 세그먼트를 보다 빠르게 연결하여 병합할 수 있다.According to embodiments of the present invention, the segments encoded in each worker can be connected and merged more quickly.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.2 is a block diagram for explaining an internal configuration of an electronic device and a server in an embodiment of the present invention.
도 3은 본 발명의 일실시예에 있어서 분산 트랜스코딩 방법을 도시한 흐름도이다.3 is a flow chart illustrating a distributed transcoding method in an embodiment of the present invention.
도 4는 본 발명의 일실시예에 따른 분산 트랜스코딩 시스템이 포함할 수 있는 구성요소의 예를 도시한 도면이다.4 is a diagram illustrating an example of a component that may be included in a distributed transcoding system according to an embodiment of the present invention.
도 5는 본 발명의 일실시예에 있어서 원본 영상을 분할하여 분배하는 과정을 설명하기 위한 예시 도면이다.5 is an exemplary diagram for explaining a process of dividing and distributing an original image according to an embodiment of the present invention.
도 6은 본 발명의 일실시예에 있어서 인코딩된 세그먼트를 하나의 인코딩 결과물로 병합하는 과정을 설명하기 위한 예시 도면이다.6 is an exemplary diagram for explaining a process of merging encoded segments into one encoding result in an embodiment of the present invention.
도 7 내지 도 8은 본 발명의 일실시예에 있어서 워커에서 인코딩된 세그먼트를 전송하는 과정을 설명하기 위한 예시 도면이다.7 to 8 are exemplary diagrams illustrating a process of transmitting an encoded segment in a worker in an embodiment of the present invention.
도 9 내지 도 10은 본 발명의 일실시예에 있어서 인코딩된 세그먼트를 연결하는 과정을 설명하기 위한 예시 도면이다.9 to 10 are exemplary diagrams illustrating a process of connecting encoded segments in an embodiment of the present invention.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
본 발명의 실시예들은 분산 트랜스코더에 관한 것으로, 상세하게는 좀더 향상된 시간 개선을 위해 영상을 분할하여 세그먼트로 나눠서 병렬 트랜스코딩을 수행하는 방법 및 시스템에 관한 것이다.Embodiments of the present invention relate to a distributed transcoder, and more particularly, to a method and system for performing parallel transcoding by dividing an image into segments for further improved time.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 분산 트랜스코딩을 통해 시간 개선, 비용 절감, 복원성, 효율성, 합리성 등의 측면에 있어서 상당한 장점들을 달성한다.Embodiments including those specifically disclosed herein achieve significant advantages in terms of time improvement, cost savings, resiliency, efficiency, rationality, etc. through distributed transcoding.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention. 1 shows an example in which a plurality of electronic devices 110, 120, 130, 140, a plurality of servers 150, 160, and a network 170 are included. 1, the number of electronic devices and the number of servers are not limited to those shown in FIG.
복수의 전자 기기들(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에서는 전자 기기 1(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기 1(110)은 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 장치들 중 하나를 의미할 수 있다.The plurality of electronic devices 110, 120, 130, 140 may be a fixed terminal implemented as a computer device or a mobile terminal. Examples of the plurality of electronic devices 110, 120, 130 and 140 include a smart phone, a mobile phone, a navigation device, a computer, a notebook, a digital broadcast terminal, a PDA (Personal Digital Assistants) ), A tablet PC, a game console, a wearable device, an Internet of things (IoT) device, a virtual reality (VR) device, and an augmented reality (AR) device. For example, FIG. 1 illustrates the shape of a smartphone as an example of the first electronic device 110, but in the embodiments of the present invention, the first electronic device 110 transmits the network 170 using a wireless or wired communication method. Or any of a variety of physical computer devices capable of communicating with other electronic devices 120, 130, 140 and / or servers 150,
통신 방식은 제한되지 않으며, 네트워크(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) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.The communication method is not limited and includes a communication method using a communication network (for example, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network, a satellite network, etc.) . For example, the network 170 may be a personal area network (LAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN) , A network such as the Internet, and the like. The network 170 may also include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or a hierarchical network, It is not limited.
서버(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 서비스로서 제공할 수 있다.Each of the servers 150 and 160 is a computer device or a plurality of computers that communicate with a plurality of electronic devices 110, 120, 130 and 140 through a network 170 to provide commands, codes, files, Lt; / RTI > devices. For example, the server 150 may be a system that provides a first service to a plurality of electronic devices 110, 120, 130, 140 connected through a network 170, 170, and 140 to the first and second electronic devices 110, 120, 130, and 140, respectively. More specifically, the server 150 may provide a service (for example, a video service or the like) for a corresponding application through an application as a computer program installed in a plurality of electronic apparatuses 110, 120, 130, As a single service, to a plurality of electronic devices 110, 120, 130, and 140. As another example, the server 160 may provide a service for distributing a file for installing and running the application to the plurality of electronic devices 110, 120, 130, and 140 as a second service.
도 2는 본 발명의 일실시예에 있어서 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 서버(150)의 내부 구성을 설명한다. 또한, 다른 전자 기기들(120, 130, 140)이나 서버(160) 역시 상술한 전자 기기 1(110) 또는 서버(150)와 동일한 또는 유사한 내부 구성을 가질 수 있다.2 is a block diagram for explaining an internal configuration of an electronic device and a server in an embodiment of the present invention. 2 illustrates an internal configuration of the electronic device 1 (110) and the server 150 as an example of the electronic device. Other electronic devices 120, 130, 140 and server 160 may also have the same or similar internal configuration as electronic device 1 110 or server 150 described above.
전자 기기 1(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)와는 구분되는 별도의 영구 저장 장치로서 전자 기기 1(110)이나 서버(150)에 포함될 수도 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 특정 서비스의 제공을 위해 전자 기기 1(110)에 설치된 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로, 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.The electronic device 1 110 and the server 150 may include memories 211 and 221, processors 212 and 222, communication modules 213 and 223 and input / output interfaces 214 and 224. The memories 211 and 221 are non-transitory computer readable recording media and can be used to store non-transient computer readable media such as random access memory (RAM), read only memory (ROM), disk drive, solid state drive (SSD), flash memory And may include a permanent mass storage device. The non-decaying mass storage device such as a ROM, an SSD, a flash memory, a disk drive, or the like may be included in the electronic device 110 or the server 150 as a separate persistent storage device separate from the memories 211 and 221. The memory 211 and the memory 221 are provided with an operating system and at least one program code (for example, a program installed in the electronic device 1 (110) and used for a browser or an application installed in the electronic device 1 Code) can be stored. These software components may be loaded from a computer readable recording medium separate from the memories 211 and 221. [ Such a computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, and a memory card. In other embodiments, the software components may be loaded into memory 211, 221 via communication modules 213, 223 rather than a computer readable recording medium. For example, at least one program may be a computer program installed by files provided by a file distribution system (e.g., the server 160 described above) that distributes installation files of developers or applications, May be loaded into the memory 211, 221 based on the application (e.g., the application described above).
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. Processors 212 and 222 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations. The instructions may be provided to the processors 212 and 222 by the memories 211 and 221 or the communication modules 213 and 223. For example, the processor 212, 222 may be configured to execute a command received in accordance with a program code stored in a recording device, such as the memory 211, 221.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 전자 기기 1(110) 및/또는 서버(150)가 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령, 컨텐츠, 파일 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.The communication modules 213 and 223 may provide functions for the electronic device 1 110 and the server 150 to communicate with each other through the network 170 and may be provided to the electronic device 1 110 and / May provide a function for communicating with another electronic device (e.g., electronic device 2 120) or another server (e.g., server 160). The request generated by the processor 212 of the electronic device 1 110 according to the program code stored in the recording device such as the memory 211 is transmitted to the server 170 via the network 170 under the control of the communication module 213 150 < / RTI > Conversely, control signals, commands, contents, files, and the like provided under the control of the processor 222 of the server 150 are transmitted to the communication module 223 of the electronic device 110 via the communication module 223 and the network 170 213 to the electronic device 1 (110). For example, control signals, commands, contents, files, and the like of the server 150 received through the communication module 213 can be transmitted to the processor 212 or the memory 211, (The above-mentioned persistent storage device), which may further include a storage medium 110.
입출력 인터페이스(214)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드, 마우스, 마이크로폰, 카메라 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커, 햅틱 피드백 디바이스(haptic feedback device) 등과 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(215)는 전자 기기 1(110)과 하나의 장치로 구성될 수도 있다. 또한, 서버(150)의 입출력 인터페이스(224)는 서버(150)와 연결되거나 서버(150)가 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.The input / output interface 214 may be a means for interfacing with the input / output device 215. For example, the input device may include a device such as a keyboard, a mouse, a microphone, a camera, and the like, and the output device may include a device such as a display, a speaker, a haptic feedback device, As another example, the input / output interface 214 may be a means for interfacing with a device having integrated functions for input and output, such as a touch screen. The input / output device 215 may be composed of the electronic device 1 (110) and one device. The input / output interface 224 of the server 150 may be a means for interfacing with the server 150 or an interface with a device (not shown) for input or output that the server 150 may include. More specifically, when the processor 212 of the electronic device 1 (110) processes the command of the computer program loaded in the memory 211, the configuration is performed using the data provided by the server 150 or the electronic device 2 (120) A service screen or contents can be displayed on the display through the input / output interface 214. [
또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)이 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라 모듈, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 전자 기기 1(110)에 더 포함되도록 구현될 수 있다.Also, in other embodiments, electronic device 1 110 and server 150 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components. For example, electronic device 1 110 may be implemented to include at least a portion of input / output devices 215 described above, or may be implemented with other components such as a transceiver, Global Positioning System (GPS) module, camera, Elements. More specifically, when the electronic device 1 (110) is a smart phone, the acceleration sensor, the gyro sensor, the camera module, various physical buttons, buttons using a touch panel, input / output ports, A vibrator, and the like may be further included in the electronic device 1 (110).
이하에서는 분산 트랜스코딩 방법과 분산 트랜스코딩 시스템의 구체적인 실시예를 설명하기로 한다.Hereinafter, specific embodiments of the distributed transcoding method and the distributed transcoding system will be described.
도 3은 본 발명의 일실시예에 있어서 분산 트랜스코딩을 위한 기본 과정을 도시한 흐름도이다.3 is a flow chart illustrating a basic process for distributed transcoding in one embodiment of the present invention.
본 실시예에 따른 서버(150)는 클라이언트(client)인 복수의 전자 기기들(110, 120, 130, 140)을 대상으로 동영상 서비스를 제공하는 플랫폼 역할을 한다. 서버(150)는 전자 기기들(110, 120, 130, 140) 상에 설치되는 어플리케이션과 연동하여 동영상 서비스를 제공할 수 있다.The server 150 according to the present embodiment serves as a platform for providing a moving image service to a plurality of electronic devices 110, 120, 130, and 140 which are clients. The server 150 can provide a moving image service in cooperation with an application installed on the electronic devices 110, 120, 130 and 140.
서버(150)는 도 3에 따른 분산 트랜스코딩 방법을 수행하기 위한 구성요소로서 프로세서(222)를 포함할 수 있다. 실시예에 따라 프로세서(222)는 프로세서(222)의 기능의 표현을 위해 둘 이상의 구성요소로 분리될 수도 있다.The server 150 may include a processor 222 as a component for performing the distributed transcoding method according to FIG. In accordance with an embodiment, the processor 222 may be separated into two or more components for presentation of the functionality of the processor 222.
이러한 프로세서(222)는 도 3의 분산 트랜스코딩 방법이 포함하는 단계들(S301 내지 S303)을 수행하도록 서버(150)를 제어할 수 있다. 예를 들어, 프로세서(222)는 메모리(221)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.Such a processor 222 may control the server 150 to perform the steps S301 to S303 that are included in the distributed transcoding method of FIG. For example, the processor 222 may be implemented to execute instructions in accordance with the code of the operating system and the code of at least one program that the memory 221 contains.
본 발명에 따른 분산 트랜스코딩 방법은 서버(150)에 의해 수행되는 것으로, 도 3에 도시한 바와 같이 기본적으로는 원본 영상을 일정 간격의 세그먼트로 나누는 과정(split)(S301), 각 세그먼트를 병렬 트랜스코딩 하는 과정(transcoding)(S302), 및 트랜스코딩된 세그먼트를 연결하여 하나의 인코딩 파일로 만드는 과정(merge)(S303)을 포함할 수 있다.The distributed transcoding method according to the present invention is performed by the server 150. As shown in FIG. 3, basically, a split process (S301) of dividing an original image into segments of a predetermined interval (S301) A transcoding process (S302), and a process of merging the transcoded segments into a single encoded file (S303).
도 4는 본 발명의 일실시예에 따른 분산 트랜스코딩 시스템이 포함할 수 있는 구성요소의 예를 도시한 도면이다.4 is a diagram illustrating an example of a component that may be included in a distributed transcoding system according to an embodiment of the present invention.
도 4에 도시한 바와 같이, 분산 트랜스코딩 시스템(400)은 분산 트랜스코딩을 위한 구성요소들로서 제어부(controller)(410), 분할 및 병합부(distributor)(splitter&merge)(420), 및 인코딩 수행부(430)를 포함할 수 있다. 일례로, 제어부(410)와 분할 및 병합부(420)는 도 1과 도 2를 통해 설명한 서버(150)의 프로세서(222)에 포함될 수 있다. 그리고, 인코딩 수행부(430)는 인코딩 작업을 수행하기 위한 단위 트랜스코더인 워커(worker)로 구성되는 것이며, 워커 각각은 서버(150)와 연결된 별개의 컴퓨터 장치로서 분할 및 병합부(420)로부터 할당 받은 작업을 수행하는 인코딩 서버 역할을 한다.4, the distributed transcoding system 400 is a component for distributed transcoding, and includes a controller 410, a splitter & merge 420, and an encoding / (Not shown). For example, the control unit 410 and the splitting and merging unit 420 may be included in the processor 222 of the server 150 described with reference to FIG. 1 and FIG. The encoding unit 430 includes a worker which is a unit transcoder for performing an encoding task and each of the walkers is a separate computer device connected to the server 150 and is connected to the division and merging unit 420 It acts as an encoding server to perform assigned tasks.
제어부(410)는 인코딩 작업에 대한 전반적인 상태를 관리하는 역할을 한다. 제어부(410)는 전자 기기들(110, 120, 130, 140)의 요청에 대응하는 동영상 서비스를 제공하기 위해 필요한 인코딩 작업을 제어할 수 있다.The control unit 410 manages the overall state of the encoding operation. The control unit 410 may control the encoding operation required to provide the moving picture service corresponding to the request of the electronic apparatuses 110, 120, 130,
분할 및 병합부(420)는 분산 주체로서 분산 트랜스코딩을 위한 작업을 담당한다. 구체적으로, 분할 및 병합부(420)는 제어부(410)에서 요청한 인코딩 작업에 대해 원본 영상을 적절한 크기의 세그먼트로 나누어 인코딩 수행부(430)에 해당되는 워커로 분배하고 각 워커에서 인코딩된 세그먼트를 병합해서 하나의 인코딩 결과물을 만드는 역할을 한다.The splitting and merging unit 420 is responsible for distributed transcoding as a distribution subject. Specifically, the dividing and merging unit 420 divides the original image into segments of an appropriate size for the encoding task requested by the control unit 410, distributes the divided images to the walkers corresponding to the encoding unit 430, And merge them into one encoding result.
워커 각각은 분할 및 병합부(420)로부터 전달 받은 세그먼트에 대한 인코딩 작업을 수행하고 인코딩된 세그먼트를 다시 분할 및 병합부(420)로 전달하는 역할을 한다.Each of the walkers performs an encoding operation on the segment received from the segmenting and merging unit 420 and transmits the segmented segment to the segmenting and merging unit 420 again.
도 5는 본 발명의 일실시예에 있어서 원본 영상을 분할하여 분배하는 과정을 설명하기 위한 예시 도면이다.5 is an exemplary diagram for explaining a process of dividing and distributing an original image according to an embodiment of the present invention.
도 5를 참조하면, 분할 및 병합부(420)는 원본 영상(501)을 적절한 크기를 가진 복수 개의 세그먼트(S_0, S_1, S_2, …, S_N)(503)로 분할할 수 있다. 일례로, 분할 및 병합부(420)는 원본 영상(501)을 GOP(group of pictures) 단위의 세그먼트(503)로 나눌 수 있다. 다시 말해, 분할 및 병합부(420)는 원본 영상(501)을 해당 영상의 GOP 경계를 기준으로 나누는 것으로, 이때 원본 영상(501)의 GOP 크기가 크면 세그먼트(503)의 사이즈가 증가한다. 다른 예로, 분할 및 병합부(420)는 사전에 정해진 일정 크기의 분할 단위(예컨대, 4초)를 기준으로 원본 영상(501)을 분할할 수 있다. 세그먼트(503)의 길이가 너무 짧으면 세그먼트(503)의 개수 증가로 인해 인코딩 오버헤드가 증가하게 된다. 한편, 세그먼트(503)의 길이가 너무 길면 워커들 간에 인코딩 완료 시점의 차이가 커지면서, 즉 워커들에 걸쳐 인코딩 로드가 고루 분산되지 않아 전체 인코딩 시간이 길어지게 된다. 인코딩 과정에서 발생하는 오버헤드를 최소화 하고 전체 워커들에 인코딩 로드가 고루 분산될 수 있는 적당한 길이를 사전 실험을 통해 결정할 수 있으며, 결정된 길이를 분할 단위로 하여 원본 영상(501)을 나누게 된다. 또 다른 예로, 분할 및 병합부(420)는 상기한 사전 실험을 통해 결정된 길이의 분할 단위를 최소 단위로 하여 기본적으로는 원본 영상(501)을 GOP 단위로 분할하고 GOP 단위가 최소 단위보다 작은 경우에는 원본 영상(501)을 GOP 단위가 아닌 실험으로 결정된 최소 단위로 나눌 수 있다.5, the dividing and merging unit 420 may divide the original image 501 into a plurality of segments S_0, S_1, S_2, ..., S_N 503 having appropriate sizes. For example, the dividing and merging unit 420 may divide the original image 501 into segments 503 of group of pictures (GOP). In other words, the dividing and merging unit 420 divides the original image 501 based on the GOP boundary of the image. If the GOP size of the original image 501 is large, the size of the segment 503 increases. As another example, the dividing and merging unit 420 may divide the original image 501 based on a division unit (for example, 4 seconds) of a predetermined size. If the length of the segment 503 is too short, an increase in the number of segments 503 leads to an increase in encoding overhead. On the other hand, if the length of the segment 503 is too long, the difference in encoding completion time between walkers increases, that is, the encoding load is not distributed evenly across the walkers, resulting in a longer total encoding time. It is possible to determine an appropriate length by minimizing the overhead incurred in the encoding process and to distribute the encoding load evenly to all the workers, and divides the original image 501 with the determined length as a division unit. As another example, the dividing and merging unit 420 basically divides the original image 501 into GOP units and divides the length of the GOP unit into a plurality of GOP units The original image 501 can be divided into a minimum unit determined by experiment rather than a GOP unit.
그리고, 분할 및 병합부(420)는 세그먼트(S_0, S_1, S_2, …, S_N)(503)를 인코딩 수행부(430)인 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)(단, M≤N)에 적절히 분배하게 된다. 이때, 분할 및 병합부(420)는 세그먼트(S_0, S_1, S_2, …, S_N)(503) 각각에 대해 인코딩 수행부(430)의 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)를 할당함에 있어 사전에 정해진 기준의 우선 순위를 따를 수 있다. 일례로, 분할 및 병합부(420)는 가용한 동시 인코딩 개수가 최대인 워커를 우선 할당할 수 있다. 워커마다 한번에 인코딩할 수 있는 개수가 다를 수 있기 때문에 가용한 인코딩 개수가 많은 순서로 워커를 할당할 수 있다. 전체 워커 장비들에 대해 세그먼트를 고르게 분산하는 것이 좋다. 하나의 장비에서 동시에 수행하는 인코딩 개수가 늘어나면 전체 인코딩 속도는 빨라지지만 각 세그먼트 별 인코딩 속도는 느려지게 된다. 따라서, 세그먼트를 워커에 할당할 때 세그먼트가 특정 장비의 워커에 집중되는 상황을 최대한 회피하는 것이 인코딩 속도를 최적의 상태로 유지하는데 중요하다. 다른 예로, 분할 및 병합부(420)는 아이들 타임(idle time)이 가장 긴 워커를 우선 할당할 수 있다. 최근 세그먼트가 할당되지 않은 대기 시간을 고려하여 대기 시간이 긴 순으로 워커를 할당할 수 있다. 또 다른 예로, 분할 및 병합부(420)는 가용 인코딩 개수와 아이들 타임을 함께 고려하여 워커를 할당하는 것 또한 가능하다. 예를 들어, 우선적으로 가용 인코딩 개수가 가장 큰 워커를 할당하고 가용 인코딩 개수가 동일한 경우에 아이들 타임이 가장 긴 워커를 할당할 수 있다.The dividing and merging unit 420 divides the segments S_0, S_1, S_2, ..., S_N 503 into worker_0, worker_1, worker_2, ..., worker_M N). At this time, the dividing and merging unit 420 allocates the walkers (Worker_0, Worker_1, Worker_2, ..., Worker_M) of the encoding performing unit 430 to the segments S_0, S_1, S_2, And may follow priorities of predetermined criteria. For example, the partitioning and merging unit 420 may first allocate a worker having the maximum number of simultaneous encoding available. Since each walker may have a different number of encodings at a time, you can assign the walkers in the order of the number of encodings available. It is a good idea to evenly distribute segments across all worker equipment. As the number of simultaneous encodings performed on one device increases, the overall encoding speed increases, but the encoding speed per segment becomes slower. Therefore, it is important to avoid the situation where the segment is concentrated on the worker of a specific equipment when allocating the segment to the walker, in order to keep the encoding speed at an optimal state. As another example, the partitioning and merging unit 420 may first allocate a worker having the longest idle time. The walkers can be allocated in the order of the long waiting time in consideration of the waiting time in which the latest segment is not allocated. As another example, it is also possible that the dividing and merging unit 420 allocates the walkers considering the number of available encodings and the idle time. For example, a worker with the largest idle time can be assigned if the number of available encodings is the same and the number of available encodings is the same.
도 6은 본 발명의 일실시예에 있어서 인코딩된 세그먼트를 하나의 인코딩 결과물로 병합하는 과정을 설명하기 위한 예시 도면이다.6 is an exemplary diagram for explaining a process of merging encoded segments into one encoding result in an embodiment of the present invention.
도 6에 도시한 바와 같이, 분할 및 병합부(420)는 병합을 위한 구성요소로서 세그먼트 수신부(segment receiver)(601), 로컬 스토리지(local storage)(602), 및 연결부(concatenator)(603)를 포함할 수 있다.6, the segmentation and merging unit 420 includes a segment receiver 601, a local storage 602, and a concatenator 603 as components for merging. . ≪ / RTI >
세그먼트 수신부(601)는 원본 영상(501)의 세그먼트(S_0, S_1, S_2, …, S_N)(503)가 할당된 각 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)로부터 인코딩된 세그먼트를 수신하는 역할을 한다.The segment receiving unit 601 receives a segment encoded from each worker (Worker_0, Worker_1, Worker_2, ..., Worker_M) to which segments (S_0, S_1, S_2, ..., S_N) 503 of the original image 501 are assigned It plays a role.
각 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)에서 인코딩된 세그먼트를 연결부(603)에서 연결하기 위해서는 하나의 스토리지(602)로 모으는 과정이 필요하다.In order to connect the segments encoded in each worker (Worker_0, Worker_1, Worker_2,..., Worker_M) at the connection unit 603, a process of collecting them into one storage 602 is required.
세그먼트 수신부(601)는 각 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)로부터 수신된 세그먼트 파일을 로컬 스토리지(602)에 저장한다. 동영상에 해당되는 데이터 패킷은 비디오 스트림(V)과 오디오 스트림(A)으로 분리되어 각각 분산 인코딩이 수행될 수 있으며, 로컬 스토리지(602)에 비디오 스트림에 대한 세그먼트 파일과 오디오 스트림에 대한 세그먼트 파일이 구분되어 저장될 수 있다.The segment receiving unit 601 stores the segment file received from each worker (Worker_0, Worker_1, Worker_2, ..., Worker_M) in the local storage 602. [ A data packet corresponding to a moving picture can be separately encoded into a video stream V and an audio stream A, respectively, and a segment file for the video stream and a segment file for the audio stream are stored in the local storage 602 Can be stored separately.
연결부(603)는 원본 영상(501)에 대한 세그먼트 분할 정보에 기초하여 로컬 스토리지(602)에 저장된 세그먼트 파일을 세그먼트 순서대로 연결함으로써 인코딩 결과 패킷(즉, concatenated file)을 만들 수 있다. 이때, 연결부(603)는 비디오 스트림에 대한 세그먼트 파일과 오디오 스트림에 대한 세그먼트 파일을 시간적으로 인터리빙(interleaving) 하여 하나의 인코딩 파일로 만들 수 있고 해당 인코딩 파일을 결과물로 로컬 스토리지(602)에 저장할 수 있다.The connection unit 603 can create an encoded result packet (i.e., a concatenated file) by connecting the segment files stored in the local storage 602 in the segment order based on the segment division information for the original image 501. [ At this time, the connection unit 603 may interleave the segment file for the video stream and the segment file for the audio stream in a temporally interleaved manner, and store the encoded file as a result in the local storage 602 have.
본 실시예에서는 비디오 스트림과 오디오 스트림 모두 분산 인코딩 하는 것으로 설명하고 있으나, 경우에 따라서는 오디오 스트림은 단일 인코딩으로 처리하고 비디오 스트림만 분산 인코딩으로 처리하는 것 또한 가능하다.In the present embodiment, both the video stream and the audio stream are described as distributed encoding, but in some cases it is also possible to process the audio stream in a single encoding and the video stream in a distributed encoding.
따라서, 본 발명에서는 원본 영상(501)을 일정한 간격의 세그먼트(503)로 나누어 복수 개의 워커를 이용한 병렬 트랜스코딩을 수행함으로써 동영상 서비스를 위한 전체 인코딩 시간과 분산 인코딩 성능을 개선할 수 있다.Therefore, in the present invention, the original image 501 is divided into segments 503 having a constant interval, and parallel transcoding using a plurality of walkers is performed, thereby improving the overall encoding time and distributed encoding performance for a moving picture service.
분산 트랜스코딩의 보다 향상된 시간 개선을 위해 최적화 부분의 구체적인 실시예를 설명한다.A specific embodiment of the optimization part will be described for a better time improvement of the distributed transcoding.
각 워커(Worker_0, Worker_1, Worker_2, …, Worker_M)에서 인코딩된 세그먼트를 연결부(603)에서 연결하기 위해서는 하나의 스토리지(602)에 모으는 과정이 필요하며, 이러한 과정에서 인코딩된 데이터가 로컬 스토리지(602)에 모이는 시간을 단축하기 위한 최적화가 가능하다.In order to connect segments encoded in each worker (Worker_0, Worker_1, Worker_2, ..., Worker_M) in the connection unit 603, it is necessary to collect the encoded segments in one storage 602. In this process, ) Can be optimized.
도 7은 인코딩된 세그먼트를 전송하는 과정의 일례를 도시한 것이다.FIG. 7 shows an example of a process of transmitting an encoded segment.
도 7을 참조하면, 세그먼트(S_0, S_1, S_2)가 할당된 각 워커(Worker_0, Worker_1, Worker_2)에서는 세그먼트(S_0, S_1, S_2) 인코딩이 완료되면 인코딩된 세그먼트 파일(E_S_0, E_S_1, E_S_2)을 분할 및 병합부(420)로 전송한다. 다시 말해, 각 워커(Worker_0, Worker_1, Worker_2)는 할당 받은 세그먼트 파일 전체의 인코딩이 완료된 시점에 TCP(transmission control protocol)로 인코딩된 세그먼트 파일 전체(E_S_0, E_S_1, E_S_2)를 분할 및 병합부(420)로 전송한다. 이때, 세그먼트 수신부(601)는 각 세그먼트(S_0, S_1, S_2)가 할당된 워커(Worker_0, Worker_1, Worker_2)로부터 인코딩된 세그먼트 파일(E_S_0, E_S_1, E_S_2)을 수신하여 로컬 스토리지(602)에 저장한다.7, in each of the worker (Worker_0, Worker_1, Worker_2) to which the segments (S_0, S_1, S_2) are assigned, the encoded segment files (E_S_0, E_S_1, E_S_2) To the splitting and merging unit 420. [ In other words, each worker (Worker_0, Worker_1, Worker_2) splits and merges segment files (E_S_0, E_S_1, E_S_2) encoded with a transmission control protocol (TCP) at the completion of encoding the entire segment file ). At this time, the segment receiving unit 601 receives the segment files E_S_0, E_S_1, and E_S_2 encoded from the walkers (Worker_0, Worker_1, and Worker_2) to which the segments S_0, S_1 and S_2 are assigned and stores them in the local storage 602 do.
도 8은 인코딩된 세그먼트를 전송하는 과정의 다른 예를 도시한 것이다.FIG. 8 shows another example of a process of transmitting an encoded segment.
도 8을 참조하면, 세그먼트(S_0, S_1, S_2)가 할당된 각 워커(Worker_0, Worker_1, Worker_2)는 인코딩 파일을 분할 및 병합부(420)로 전송할 때 세그먼트 단위가 아닌 세그먼트를 구성하는 데이터 단위(801)로 전송할 수 있다. 이때, 데이터 단위(801)는 워커에서 한 단위로 인코딩을 수행하는 단위를 의미하며, 예컨대 비디오 데이터의 경우 프레임(frame)을 데이터 단위(801)로 할 수 있다.8, each worker (Worker_0, Worker_1, Worker_2) to which the segments (S_0, S_1, S_2) are assigned transmits the encoding file to the segmenting and merging unit 420, (801). In this case, the data unit 801 means a unit for performing encoding in units of one unit by a worker. For example, in the case of video data, a frame may be a data unit 801. [
워커(Worker_0, Worker_1, Worker_2)는 할당 받은 세그먼트 파일 전체의 인코딩이 완료된 시점에 인코딩된 세그먼트 파일 전체를 전송하는 것이 아니라, 해당 세그먼트를 구성하는 데이터 단위(801) 각각의 인코딩이 완료되는 시점에 인코딩된 데이터 단위를 전송한다. 다시 말해, 워커(Worker_0, Worker_1, Worker_2)는 할당 받은 세그먼트에 대해 해당 세그먼트 파일 중 하나의 데이터 단위(801)라도 인코딩이 완료되면 인코딩된 데이터 단위(801)를 바로 분할 및 병합부(420)로 전송한다. 예를 들어, 도 8에 도시한 바와 같이 4개의 프레임 0a, 0b, 0c, 0d로 구성된 세그먼트 S_0이 워커 Worker_0에 할당된 경우 워커 Worker_0는 세그먼트 S_0의 프레임 0a, 0b, 0c, 0d를 차례로 인코딩 하여 인코딩이 완료될 때마다 인코딩된 프레임을 바로 전송한다.The worker (Worker_0, Worker_1, and Worker_2) does not transmit the entire segmented encoded file at the time of completion of the encoding of the entire segment file, but at the time when encoding of each data unit 801 constituting the segment is completed, Data unit. In other words, the worker (Worker_0, Worker_1, Worker_2) transmits the encoded data unit 801 to the splitting and merging unit 420 when the encoding of the data unit 801 of the corresponding segment file is completed send. For example, when a segment S_0 composed of four frames 0a, 0b, 0c, and 0d is assigned to a worker Worker_0 as shown in Fig. 8, the worker Worker_0 sequentially encodes the frames 0a, 0b, 0c, and 0d of the segment S_0 And immediately transmits the encoded frame every time the encoding is completed.
이러한 인코딩된 데이터 단위(801)의 전송이 복수의 워커(Worker_0, Worker_1, Worker_2)에 의해 병렬로 동시에 이루어진다. 인코딩 파일이 데이터 단위(801)로 전송되는 방식을 적용하는 경우 세그먼트 단위로 전송되는 방식에 비해 원본 영상(501)의 모든 세그먼트가 로컬 스토리지(602)에 모이는 시간을 더욱 개선할 수 있다.The transmission of the encoded data units 801 is performed in parallel by a plurality of workers (Worker_0, Worker_1, and Worker_2). When the encoding file is transmitted in the data unit 801, the time required for all the segments of the original image 501 to converge on the local storage 602 can be further improved as compared with a method in which the encoding file is transmitted in the segment unit.
그리고, 원본 영상(501)에 대해 인코딩된 세그먼트가 모두 모이게 되면 인코딩된 세그먼트를 연결하는 작업이 수행되며, 이러한 과정에서 또한 인코딩된 세그먼트를 빠르게 연결하기 위한 최적화가 가능하다.When all of the encoded segments are collected for the original image 501, an operation for connecting the encoded segments is performed. In this process, it is also possible to optimize for connecting the encoded segments quickly.
연결부(603)는 원본 영상(501)에 대한 세그먼트 분할 정보에 기초하여 로컬 스토리지(602)에 저장된 세그먼트 파일을 세그먼트 순서대로 연결함으로써 하나의 인코딩 결과물을 만들 수 있다. 세그먼트 연결 작업은 세그먼트 순서대로 수행되어야 한다. 그러나, 영상의 복잡도나 서버 상황 등에 따라 각 세그먼트마다 인코딩에 걸리는 시간이 다르기 때문에 인코딩된 세그먼트가 로컬 스토리지(602)에 저장하는 시간이 세그먼트 순서와는 다를 수 있다.The connection unit 603 can create a single encoding result by connecting the segment files stored in the local storage 602 in the order of the segments based on the segmentation information for the original image 501. [ Segment linking operations must be performed in order of segment. However, since the encoding time differs for each segment according to the complexity of the image and the server situation, the time for storing the encoded segment in the local storage 602 may be different from the segment order.
도 9는 인코딩된 세그먼트를 연결하는 과정의 일례를 도시한 것이다.FIG. 9 shows an example of a process of connecting encoded segments.
연결부(603)는 로컬 스토리지(602)에 도착한(즉, 저장된) 세그먼트를 세그먼트 순서대로 하나씩 읽어와 연결 작업을 수행하게 된다.The connection unit 603 reads the segments arriving at the local storage 602 (i.e., stored) one by one in the order of the segments, and performs a connection operation.
도 9에 도시한 바와 같이, 28개의 세그먼트(503)로 분할된 원본 영상(501)에 대해 6, 14, 22번째 세그먼트를 제외하고 나머지 세그먼트가 로컬 스토리지(602)에 도착한 경우, 연결부(603)는 로컬 스토리지(602)에서 1~5번째 세그먼트를 먼저 읽어와 순서대로 연결하고 6번째 세그먼트가 도착할 때까지 연결 작업을 홀딩하다가 6번째 세그먼트가 도착하면 로컬 스토리지(602)에 저장되어 연결 대기 중인 세그먼트들을 하나씩 순차적으로 읽어와 연결 작업을 재개한다.9, when the remaining segments except for the 6th, 14th and 22nd segments arrive at the local storage 602 with respect to the original image 501 divided into 28 segments 503, Reads the first to fifth segments from the local storage 602 first and connects them in order and holds the connection operation until the sixth segment arrives. If the sixth segment arrives, it is stored in the local storage 602, Read them one by one and restart the connection.
도 10은 인코딩된 세그먼트를 연결하는 과정의 다른 예를 도시한 것이다.FIG. 10 shows another example of a process of linking an encoded segment.
도 10을 참조하면, 연결부(603)는 로컬 스토리지(602)에 도착한(즉, 저장된) 세그먼트 중 적어도 일부를 세그먼트 순서에 상관없이 임시 메모리(1001), 즉 프리로딩 윈도우(preloading window)에 미리 올려놓고(parallel preloading process) 연결 작업을 수행할 수 있다. 도 10에 도시한 바와 같이, 28개의 세그먼트(503)로 분할된 원본 영상(501)에 대해 6, 14, 22번째 세그먼트를 제외하고 나머지 세그먼트가 로컬 스토리지(602)에 도착한 경우, 연결부(603)는 로컬 스토리지(602)에 도착한 세그먼트를 연결 작업을 위한 임시 메모리(1001)에 미리 올려놓고 임시 메모리(1001) 상의 세그먼트를 세그먼트 순서대로 연결하는 작업을 수행하게 된다. 이때, 6번째 세그먼트가 미도착 시 홀딩했다가 해당 세그먼트가 도착하면 읽어와 연결하고 이후 세그먼트들은 임시 메모리(1001)에 미리 올려져 있으므로 더욱 빠르게 다음 세그먼트들의 연결 작업을 바로 진행할 수 있다.10, the connection unit 603 pre-loads at least some of the segments arriving (i.e., stored) in the local storage 602 into the temporary memory 1001, that is, the preloading window, regardless of the segment order (Parallel preloading process). 10, when the remaining segments except for the 6th, 14th and 22nd segments arrive at the local storage 602 with respect to the original image 501 divided into 28 segments 503, A segment arriving at the local storage 602 is placed in the temporary memory 1001 for connection and the segment on the temporary memory 1001 is connected in order of segment. At this time, when the sixth segment is not received, the segment is read and connected when the segment arrives, and since the segments are previously loaded in the temporary memory 1001, the connection operation of the next segments can proceed more quickly.
따라서, 본 발명에서는 인코딩된 세그먼트를 임시 메모리(1001)에 미리 올려놓는 방식을 이용하여 연결 작업을 수행함으로써 인코딩 결과물을 빠르게 만들 수 있다.Accordingly, in the present invention, the encoding result can be quickly generated by performing a connection operation using a method of previously loading the encoded segment into the temporary memory 1001. [
분할 및 병합부(420)의 메모리 상황에 따라 프리로딩 규모를 적절히 조절할 수 있다. 분할 및 병합부(420)는 각 워커로부터 세그먼트 전송이 완료되었을 때, 혹은 프리로딩된 세그먼트 한 개가 소진되었을 때(즉, 하나의 세그먼트에 대한 연결 작업이 완료되었을 때)마다 추가 프리로딩 여부와 프리로딩 규모를 결정할 수 있다. 이때, 분할 및 병합부(420)는 현재 진행 중인 동시 인코딩 개수와 가용 메모리 크기 등을 고려하여 프리로딩 규모, 즉 프리로딩할 세그먼트의 개수를 결정할 수 있다.The preloading scale can be appropriately adjusted according to the memory status of the segmenting and merging unit 420. [ The segmenting and merging unit 420 determines whether additional preloading and preloading are performed each time segment transfer from each worker is completed, or when one preloaded segment is exhausted (i.e., when a connection operation for one segment is completed) The loading scale can be determined. At this time, the dividing and merging unit 420 may determine the preloading scale, that is, the number of segments to be preloaded, considering the number of concurrent encodings currently in progress and the available memory size.
일례로, 분할 및 병합부(420)는 현재 프리로딩 되어 있는 세그먼트의 개수(preloaded_count)가 프리로딩 가능한 세그먼트의 최종 개수(preloading_count) 보다 적은 경우 그 차이(preloading_count-preloaded_count) 만큼 세그먼트를 프리로딩할 수 있다. 예를 들어, 프리로딩 가능한 세그먼트의 최종 개수(preloading_count)는 수학식 1에 의해 계산될 수 있다.For example, if the preloaded_count of the preloaded segments is less than the preloading count of the preloadable segment, the segmentation and merge unit 420 may preload the segment by the difference (preloading_count-preloaded_count) have. For example, the final number of preloadable segments (preloading_count) can be calculated by Equation (1).
[수학식 1][Equation 1]
preloading_count=MIN(preloading_count_max×average_segment_size,available_memory)/average_segment_sizepreloading_count = MIN (preloading_count_max average_segment_size, available_memory) / average_segment_size
여기서, MIN(a,b)는 a와 b 중 최소 값, available_memory는 현재 가용한 메모리 크기(bytes)를 의미한다.Where MIN (a, b) is the minimum value of a and b, and available_memory is the current available memory size (bytes).
수학식 1에서 preloading_count_max는 프리로딩할 수 있는 세그먼트 최대 개수를 의미하는 것으로, 예를 들어 수학식 2를 통해 계산될 수 있다.In Equation (1), preloading_count_max denotes the maximum number of segments that can be preloaded, and can be calculated, for example, by Equation (2).
[수학식 2]&Quot; (2) "
preloading_count_max=worker_count×concurrent_encoding_per_worker×(concurrent_encoding_max-concurrent_encoding_count)preloading_count_max = worker_count × concurrent_encoding_per_worker × (concurrent_encoding_max-concurrent_encoding_count)
여기서, worker_count는 현재 할당된 워커의 개수, concurrent_encoding_per_worker는 워커당 동시 가용한 인코딩 개수, concurrent_encoding_max는 분할 및 병합부(420)에서 동시 가용한 인코딩 최대 개수, concurrent_encoding_count는 현재 분할 및 병합부(420)에서 진행 중인 동시 인코딩 개수를 의미한다.Herein, worker_count is the number of currently assigned worker, concurrent_encoding_per_worker is the number of simultaneous encodings per worker, concurrent_encoding_max is the maximum number of simultaneous encodings available in the dividing and merging unit 420, and concurrent_encoding_count is currently being divided and merged ≪ / RTI >
수학식 1에서 average_segment_size는 인코딩 된 세그먼트의 예상 평균 크기를 의미하는 것으로, 예를 들어 수학식 3을 통해 계산될 수 있다.In Equation (1), average_segment_size denotes an expected average size of an encoded segment, and can be calculated, for example, by Equation (3).
[수학식 3]&Quot; (3) "
average_segment_size=average_segment_second×target_bitrate×αaverage_segment_size = average_segment_second × target_bitrate × α
여기서, average_segment_second는 세그먼트의 평균 길이(초), target_bitrate는 목표 비트레이트(bits), α는 상수를 의미한다.Here, average_segment_second is the average length (in seconds) of the segment, target_bitrate is the target bit rate (bits), and? Is a constant.
따라서, 분할 및 병합부(420)는 현재 진행 중인 동시 인코딩 개수와 가용 메모리 크기 등을 고려하여 프리로딩 규모를 결정할 수 있으며, 결정된 규모의 세그먼트 프리로딩을 통해 보다 빠르게 연결 작업을 수행할 수 있다.Accordingly, the dividing and merging unit 420 can determine the preloading size in consideration of the current number of simultaneous encodings and the available memory size, and can perform the connection operation more quickly through the segment preloading of the determined size.
이처럼 본 발명의 실시예들에 따르면, 인코딩된 세그먼트를 빠르게 모아 연결 작업을 수행함으로써 동영상 서비스를 위한 전체 인코딩 시간과 분산 인코딩 성능을 개선할 수 있다.As described above, according to the embodiments of the present invention, it is possible to improve the overall encoding time and the distributed encoding performance for the moving picture service by quickly collecting the encoded segments and performing the connection operation.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented as a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), a programmable logic unit, a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be embodied in any type of machine, component, physical device, computer storage media, or device for interpretation by a processing device or to provide instructions or data to the processing device have. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. At this time, the medium may be a program that continuously stores a computer executable program, or temporarily stores the program for execution or downloading. Further, the medium may be a variety of recording means or storage means in the form of a combination of a single hardware or a plurality of hardware, and is not limited to a medium directly connected to a computer system, but may be dispersed on a network. Examples of the medium include a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical recording medium such as CD-ROM and DVD, a magneto-optical medium such as a floptical disk, And program instructions including ROM, RAM, flash memory, and the like. As another example of the medium, a recording medium or a storage medium that is managed by a site or a server that supplies or distributes an application store or various other software is also enumerated.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (20)

  1. 컴퓨터로 구현되는 서버에서 수행되는 분산 트랜스코딩 방법에 있어서,A distributed transcoding method performed on a computer-implemented server,
    영상 컨텐츠를 일정 간격의 세그먼트(segment)로 분할하여 분할된 세그먼트를 복수 개의 워커(worker)에 할당하는 단계;A step of dividing the image contents into segments of a predetermined interval and allocating the segmented segments to a plurality of workers;
    각 워커에서 인코딩된 세그먼트를 수신하여 수신된 세그먼트를 스토리지(storage)에 저장하는 단계; 및Receiving an encoded segment from each worker and storing the received segment in storage; And
    상기 스토리지에 저장된 세그먼트를 순서대로 연결하여 하나의 인코딩 파일로 병합하는 단계Linking the segments stored in the storage in order and merging them into one encoding file
    를 포함하는 분산 트랜스코딩 방법./ RTI >
  2. 제1항에 있어서,The method according to claim 1,
    각 워커에서는 할당 받은 세그먼트에 대해 해당 세그먼트를 구성하는 데이터 단위 각각의 인코딩이 완료되는 시점에 인코딩된 데이터 단위를 상기 서버로 전송하는 것Each worker transmits an encoded data unit to the server at the time when the encoding of each of the data units constituting the segment is completed for the allocated segment
    을 특징으로 하는 분산 트랜스코딩 방법.And a second transcoding method.
  3. 제2항에 있어서,3. The method of claim 2,
    상기 데이터 단위는 워커에서 한 단위로 인코딩을 수행하는 단위인 것The data unit is a unit for performing encoding in one unit in the worker
    을 특징으로 하는 분산 트랜스코딩 방법.And a second transcoding method.
  4. 제1항에 있어서,The method according to claim 1,
    각 워커에서는 할당 받은 세그먼트에 대해 해당 세그먼트 파일 전체의 인코딩이 완료되는 시점에 인코딩된 세그먼트 파일 전체를 상기 서버로 전송하는 것Each worker transmits an entire encoded segment file to the server at the time when encoding of the entire segment file is completed for the allocated segment
    을 특징으로 하는 분산 트랜스코딩 방법.And a second transcoding method.
  5. 제1항에 있어서,The method according to claim 1,
    상기 병합하는 단계는,Wherein the merging comprises:
    상기 스토리지에서 상기 저장된 세그먼트를 하나씩 순차적으로 읽어와 연결 작업을 수행하는 것And sequentially reading the stored segments one by one in the storage and performing a connection operation
    을 특징으로 하는 분산 트랜스코딩 방법.And a second transcoding method.
  6. 제1항에 있어서,The method according to claim 1,
    상기 병합하는 단계는,Wherein the merging comprises:
    상기 스토리지에 저장된 적어도 일부 세그먼트를 연결 작업을 위한 임시 메모리에 프리로딩(preloading) 해놓고 상기 임시 메모리에 프리로딩된 세그먼트를 순서대로 연결하는 것Preloading at least some segments stored in the storage into a temporary memory for a connection operation and connecting the preloaded segments to the temporary memory sequentially
    을 특징으로 하는 분산 트랜스코딩 방법.And a second transcoding method.
  7. 제6항에 있어서,The method according to claim 6,
    상기 병합하는 단계는,Wherein the merging comprises:
    현재 진행 중인 동시 인코딩 개수와 가용 메모리 크기를 고려하여 프리로딩할 세그먼트의 개수를 결정하는 단계Determining the number of segments to be preloaded considering the number of concurrent encodings currently in progress and the available memory size
    를 포함하는 분산 트랜스코딩 방법./ RTI >
  8. 제6항에 있어서,The method according to claim 6,
    상기 병합하는 단계는,Wherein the merging comprises:
    하나의 세그먼트에 대한 연결 작업이 완료될 때마다 추가 프리로딩 여부와 규모를 결정하는 단계Determine whether additional preloading and sizing each time a connection to a segment is completed
    를 포함하는 분산 트랜스코딩 방법./ RTI >
  9. 제1항에 있어서,The method according to claim 1,
    상기 할당하는 단계는,Wherein the assigning comprises:
    상기 영상 컨텐츠를 GOP(group of pictures) 단위의 세그먼트로 분할하거나 사전 실험을 통해 결정된 최소 단위의 세그먼트로 분할하는 단계Dividing the image content into segments of a group of pictures (GOP) or dividing the image contents into a minimum unit segment determined through a preliminary experiment
    를 포함하는 분산 트랜스코딩 방법./ RTI >
  10. 제1항에 있어서,The method according to claim 1,
    상기 할당하는 단계는,Wherein the assigning comprises:
    워커의 동시 가용한 인코딩 개수와 아이들 타임(idle time) 중 적어도 하나를 이용한 우선순위에 따라 세그먼트를 할당하는 단계Allocating a segment according to a priority using at least one of the number of simultaneously available encoders and idle time of the worker
    를 포함하는 분산 트랜스코딩 방법./ RTI >
  11. 제1항 내지 제10항 중 어느 한 항의 분산 트랜스코딩 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체.A computer-readable recording medium on which a program for causing a computer to execute the distributed transcoding method according to any one of claims 1 to 10 is recorded.
  12. 컴퓨터로 구현되는 서버에서의 분산 트랜스코딩 시스템에 있어서,A distributed transcoding system in a computer-implemented server,
    메모리에 포함된 컴퓨터 판독 가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서At least one processor configured to execute computer readable instructions contained in memory,
    를 포함하고,Lt; / RTI >
    상기 적어도 하나의 프로세서는,Wherein the at least one processor comprises:
    영상 컨텐츠를 일정 간격의 세그먼트로 분할하여 분할된 세그먼트를 복수 개의 워커에 할당하는 과정;A step of dividing the image contents into segments at predetermined intervals and allocating the segmented segments to a plurality of walkers;
    각 워커에서 인코딩된 세그먼트를 수신하여 수신된 세그먼트를 스토리지에 저장하는 과정; 및Receiving an encoded segment from each worker and storing the received segment in storage; And
    상기 스토리지에 저장된 세그먼트를 순서대로 연결하여 하나의 인코딩 파일로 병합하는 과정A process of merging the segments stored in the storage into a single encoding file
    을 처리하는 분산 트랜스코딩 시스템.To a distributed transcoding system.
  13. 제12항에 있어서,13. The method of claim 12,
    각 워커에서는 할당 받은 세그먼트에 대해 해당 세그먼트를 구성하는 데이터 단위 각각의 인코딩이 완료되는 시점에 인코딩된 데이터 단위를 상기 서버로 전송하는 것Each worker transmits an encoded data unit to the server at the time when the encoding of each of the data units constituting the segment is completed for the allocated segment
    을 특징으로 하는 분산 트랜스코딩 시스템.Wherein the transcoding system is a distributed transcoding system.
  14. 제13항에 있어서,14. The method of claim 13,
    상기 데이터 단위는 워커에서 한 단위로 인코딩을 수행하는 단위인 것The data unit is a unit for performing encoding in one unit in the worker
    을 특징으로 하는 분산 트랜스코딩 시스템.Wherein the transcoding system is a distributed transcoding system.
  15. 제12항에 있어서,13. The method of claim 12,
    상기 병합하는 과정은,The merging process includes:
    상기 스토리지에서 상기 저장된 세그먼트를 하나씩 순차적으로 읽어와 연결 작업을 수행하는 것And sequentially reading the stored segments one by one in the storage and performing a connection operation
    을 특징으로 하는 분산 트랜스코딩 시스템.Wherein the transcoding system is a distributed transcoding system.
  16. 제12항에 있어서,13. The method of claim 12,
    상기 병합하는 과정은,The merging process includes:
    상기 스토리지에 저장된 적어도 일부 세그먼트를 연결 작업을 위한 임시 메모리에 프리로딩 해놓고 상기 임시 메모리에 프리로딩된 세그먼트를 순서대로 연결하는 것Loading at least some segments stored in the storage into a temporary memory for a connection operation and sequentially connecting the preloaded segments to the temporary memory
    을 특징으로 하는 분산 트랜스코딩 시스템.Wherein the transcoding system is a distributed transcoding system.
  17. 제16항에 있어서,17. The method of claim 16,
    상기 병합하는 과정은,The merging process includes:
    현재 진행 중인 동시 인코딩 개수와 가용 메모리 크기를 고려하여 프리로딩할 세그먼트의 개수를 결정하는 과정The process of determining the number of segments to be preloaded considering the number of concurrent encodings currently in progress and the available memory size
    을 포함하는 분산 트랜스코딩 시스템./ RTI >
  18. 제16항에 있어서,17. The method of claim 16,
    상기 병합하는 과정은,The merging process includes:
    하나의 세그먼트에 대한 연결 작업이 완료될 때마다 추가 프리로딩 여부와 규모를 결정하는 과정The process of determining whether additional preloading and sizing each time a connection to a segment is completed
    을 포함하는 분산 트랜스코딩 시스템./ RTI >
  19. 제12항에 있어서,13. The method of claim 12,
    상기 할당하는 과정은,Wherein the allocating step comprises:
    상기 영상 컨텐츠를 GOP 단위의 세그먼트로 분할하거나 사전 실험을 통해 결정된 최소 단위의 세그먼트로 분할하는 과정Dividing the image content into segments of GOP units or dividing the image contents into segments of a minimum unit determined through a preliminary experiment
    을 포함하는 분산 트랜스코딩 시스템./ RTI >
  20. 제12항에 있어서,13. The method of claim 12,
    상기 할당하는 과정은,Wherein the allocating step comprises:
    워커의 동시 가용한 인코딩 개수와 아이들 타임 중 적어도 하나를 이용한 우선순위에 따라 세그먼트를 할당하는 과정A process of assigning a segment according to a priority using at least one of the number of simultaneous usable encoders and the idle time
    을 포함하는 분산 트랜스코딩 시스템./ RTI >
PCT/KR2018/014919 2017-11-30 2018-11-29 Optimization method for shortening time for distributed transcoding and system therefor WO2019107955A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170162458A KR102024160B1 (en) 2017-11-30 2017-11-30 Optimization method for time reduction of distributed transcoding and system thereof
KR10-2017-0162458 2017-11-30

Publications (1)

Publication Number Publication Date
WO2019107955A1 true WO2019107955A1 (en) 2019-06-06

Family

ID=66665694

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2018/014919 WO2019107955A1 (en) 2017-11-30 2018-11-29 Optimization method for shortening time for distributed transcoding and system therefor

Country Status (2)

Country Link
KR (1) KR102024160B1 (en)
WO (1) WO2019107955A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102238720B1 (en) * 2019-07-05 2021-04-09 라인플러스 주식회사 Method and system for shortening transmission time of media file through concurrent processing of encoding and uploading
CN111163335B (en) * 2019-12-31 2022-04-01 深圳市瑞讯云技术有限公司 Video processing method and device for distributed server
KR20230023306A (en) * 2021-08-10 2023-02-17 삼성전자주식회사 Electronic device for recording contents data and method of the same

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005176069A (en) * 2003-12-12 2005-06-30 Ntt Data Corp Distributed parallel transcoder system and method thereof
KR20130027755A (en) * 2011-09-08 2013-03-18 브로드밴드미디어주식회사 System for encoding distributed moving pictur file and method for the same
KR20130095927A (en) * 2012-02-21 2013-08-29 삼성전자주식회사 Apparatus for correcting of in-loop pixel filter using parameterized complexity measure and method of the same
KR20160118989A (en) * 2015-04-03 2016-10-12 주식회사 미디어엑셀코리아 Video Clone Transcoding Apparatus and method
KR20170096511A (en) * 2016-02-16 2017-08-24 가천대학교 산학협력단 Parallel video processing apparatus using multicore system and method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005176069A (en) * 2003-12-12 2005-06-30 Ntt Data Corp Distributed parallel transcoder system and method thereof
KR20130027755A (en) * 2011-09-08 2013-03-18 브로드밴드미디어주식회사 System for encoding distributed moving pictur file and method for the same
KR20130095927A (en) * 2012-02-21 2013-08-29 삼성전자주식회사 Apparatus for correcting of in-loop pixel filter using parameterized complexity measure and method of the same
KR20160118989A (en) * 2015-04-03 2016-10-12 주식회사 미디어엑셀코리아 Video Clone Transcoding Apparatus and method
KR20170096511A (en) * 2016-02-16 2017-08-24 가천대학교 산학협력단 Parallel video processing apparatus using multicore system and method thereof

Also Published As

Publication number Publication date
KR102024160B1 (en) 2019-09-23
KR20190063568A (en) 2019-06-10

Similar Documents

Publication Publication Date Title
WO2019107955A1 (en) Optimization method for shortening time for distributed transcoding and system therefor
CN108369593B (en) Vehicle domain multi-level parallel buffering and context-based stream data preprocessing system
WO2021029756A1 (en) Apparatus and method for providing streaming video by application program
Fall et al. Improving continuous-media playback performance with in-kernel data paths
US20230118176A1 (en) Data transmission method and apparatus, computer-readable storage medium, electronic device, and computer program product
WO2023000888A1 (en) Cloud application implementing method and apparatus, electronic device, and storage medium
US11671678B2 (en) Method and device, equipment, and storage medium for data processing
WO2019107914A1 (en) Distributed transcoding method and distributed transcoding system
WO2019189959A1 (en) Method, system, and non-transitory computer-readable recording medium for offsetting delay of guest broadcast at live broadcast
WO2019112360A1 (en) Method and system for delayed live broadcast
WO2021029671A1 (en) Method and system for playing streaming content
CN113259729B (en) Data switching method, server, system and storage medium
WO2019103293A1 (en) Distributed transcoding cloud service system
WO2019088721A1 (en) Open live broadcasting platform
WO2019050067A1 (en) Video quality control
WO2019045128A1 (en) Image quality enhancement of video call
WO2022231267A1 (en) Method, computer device, and computer program for providing high-quality image of region of interest by using single stream
WO2022055198A1 (en) Method, system, and computer-readable recording medium for implementing fast switching mode between channels in multi-live transmission environment
WO2021172941A1 (en) Image streaming method and electronic device supporting same
KR102238720B1 (en) Method and system for shortening transmission time of media file through concurrent processing of encoding and uploading
WO2020004883A1 (en) Method and system for parallel audio transcoding
KR102059363B1 (en) Distributed transcoder based on streaming
WO2019031622A1 (en) Method and system for providing group call screen
WO2022086107A1 (en) Content playing method and system
WO2024117479A1 (en) Display device, server device, and control method thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18884325

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18884325

Country of ref document: EP

Kind code of ref document: A1