Optimized video transcoding based on timing requirements
Patent Information
- Application Number
- JP2023164274
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-12-27
- Filing Date
- 2023-09-27
- Publication Date
- 2025-03-26
- Estimated Expiration
- 2043-09-27
Smart Images

Figure 0007651642000001 
Figure 0007651642000002 
Figure 0007651642000003
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001]
[0001] Pursuant to Section 119(a) of the United States Act, this application is entitled to and claims the benefit of the filing date of Chinese Patent Application No. 2022114915706, entitled "OPTIMIZED VIDEO TRANSCODING BASED ON A TIMING REQUIREMENT," filed on November 25, 2022, the contents of which are incorporated by reference in their entirety for all purposes. [Background technology]
[0002]
[0002] A video delivery system may receive a video asset file and transcode the video asset file according to different transcoding configurations. For example, a video asset file may be transcoded into multiple profiles, where each profile represents a different configuration of characteristics (e.g., bitrate, resolution, codec, etc.). Once a video is published on a service, a client may request playback of the video. During playback, the client may switch between any of the profiles based on the current playback conditions experienced by the client.
[0003]
[0003] In some cases, a video distribution system may have requirements regarding when a video should be released. For example, the requirement may be that the video should be released within a certain time period, such as 5 hours from a certain time (e.g., 5 hours from receiving the video asset file). The transcoding time of different video asset files may vary greatly depending on the nature of the respective video content contained in each video asset file. For example, for the same profile, a video with complex texture and motion may take longer to transcode compared to a video with less complex texture and motion. A video distribution system may have a limited perspective regarding how quickly a video asset file can be transcoded to different profiles. Thus, the video distribution system may have difficulty in delivering a transcoded version of the video asset file to meet the timing requirements.
[0004]
[0004] The included drawings are for illustrative purposes and serve only to provide examples of possible structures and operations for the disclosed inventive systems, apparatus, methods, and computer program products. These drawings in no way limit any changes in form and detail that may be made by those skilled in the art without departing from the spirit and scope of the disclosed implementations. [Brief description of the drawings]
[0005] [Figure 1] FIG. 1 illustrates a simplified system for transcoding video asset files according to some embodiments. [Figure 2A]
[0006] FIG. 2A illustrates different scenarios that may arise when transcoding a video asset file that has an indeterminate transcoding duration. [Figure 2B]FIG. 2B illustrates different scenarios that may arise when transcoding a video asset file that has an indeterminate transcoding duration. [Figure 2C]
[0007] FIG. 2C illustrates a scenario when using optimization, according to some embodiments. [Diagram 3]
[0008] FIG. 3 illustrates a more detailed example of an optimization system according to some embodiments. [Figure 4]
[0009] FIG. 4 illustrates a simplified flowchart of a method for generating a transcoding timing estimate according to some embodiments. [Diagram 5]
[0010] FIG. 5 illustrates a table of target configurations for a profile, according to some embodiments. [Figure 6]
[0011] FIG. 6 illustrates a table listing information that may be used to generate an optimization strategy, according to some embodiments. [Figure 7]
[0012] FIG. 7 illustrates a simplified flowchart of a method for analyzing transcoding timing estimates according to some embodiments. [Figure 8]
[0013] FIG. 8 illustrates a simplified flowchart of a method for analyzing additional transcoding options for a profile that does not meet timing requirements, according to some embodiments. [Figure 9A]
[0014] FIG. 9A illustrates an example of different presets, according to some embodiments. [Figure 9B]
[0015] FIG. 9B illustrates an example of the results when performing optimization using different presets, according to some embodiments. [Figure 10]
[0016] FIG. 10 illustrates a simplified flowchart of a method for allocating computing resources according to some embodiments. [Figure 11]
[0017] FIG. 11 illustrates a table showing information summarizing information used to generate an optimization strategy, according to some embodiments. [Figure 12]
[0018] FIG. 12 illustrates a video streaming system in communication with multiple client devices over one or more communication networks, according to one embodiment. [Figure 13]
[0019] FIG. 13 illustrates a schematic diagram of a device for viewing video content and advertisements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0006]
[0020] Techniques for a video distribution system are described herein. In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of some embodiments. Some embodiments as defined by the claims may include some or all of the features in these examples alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.
[0007]
[0021] A video delivery system may optimize transcoding of video asset files into a profile. A profile may be designed for adaptive bitrate streaming applications, where the profile may define different transcoding configurations, such as video resolution, bitrate, codec, and other settings. For example, a first profile may have an output resolution of 384×216 and a video bitrate of 280 kilobytes per second (kbps), and a second profile may have an output resolution of 480×270 and a video bitrate of 400 kbps. A profile may also include other settings, such as specifying a codec type, such as H.264, H.265, etc.
[0008]
[0022] The video delivery system may have requirements for video asset files, such as timing requirements for publishing a video on the service. Publishing a video may be when the video may be accessed by a client that is being used by a user account on the service, such as to play the video. Before being published, the video delivery system may have to transcode the video asset file into one or more profiles. The requirements may limit the time it may take to transcode the video asset file. The following may be examples of when requirements are received for a video asset file, although other scenarios may be understood. The assets may be broadcast on a linear time schedule, such that episodes of a program may be broadcast at scheduled times. The video delivery system may receive video asset files for broadcasted assets. For example, a video asset file for a program may be received before, during, or after it is broadcast at the scheduled time. The video delivery system then transcodes the video asset file. For example, the video asset file may be transcoded as a video-on-demand asset, which is an asset that may be requested at any time. The video-on-demand asset may be available in different profiles. A video delivery system may receive a requirement (e.g., from an entity broadcasting a program or from an internal requirement) that may specify a time for publishing a video on the video delivery system. For example, an episode of a program may be broadcast and a video asset file may be received at 7:00 PM. The video delivery system may then have to publish the video on its video delivery service by 11:00 PM. Thus, the video delivery system may have four hours to transcode the video. Previously, the video delivery system could not know how long it might take to transcode the asset file.For example, some video profiles may not be transcoded in time to meet the requirements, such as by 11:00 PM. Also, some profiles may be transcoded before the requirements, such as by 8:00 PM. The first situation may result in a profile not being available at the required time. The second situation may result in transcoding of the video that does not use the available time efficiently. For example, a video asset file may have been transcoded with a higher quality by taking additional time to transcode the video asset file. Although the above examples have been described, the video distribution system may receive timing requirements in other scenarios as well. For example, internal requirements in the video distribution system may require that a video be released by a certain time, a movie may have to be released by a certain time, etc.
[0009]
[0023] To overcome the above problems, the video delivery system may predict a transcoding timing estimate for transcoding a video asset file. For example, the video delivery system may extract features of the video asset file and predict a transcoding time for transcoding the video asset file into different profiles. The prediction process is described in more detail below. Using the predicted transcoding timing estimate, the video delivery system may determine which profiles can be transcoded to meet the timing requirements. Using this information, the video delivery system may optimize the transcoding process. For example, the video delivery system may choose not to transcode some profiles that may not meet the requirements, which may save on the use of computing resources. Also, the video delivery system may optimize the orchestration of the transcoding of some profiles. For example, some profiles may be allocated to different computing resources based on the prediction. The transcoding system may include low-end computing nodes and high-end computing nodes. Although the low-end computing nodes may transcode the video asset file slower than the high-end computing nodes, the low-end computing nodes may be less costly to use. Profiles that are predicted to finish before the timing requirement may be allocated to a low-end computing node that may not be able to transcode the video asset file as quickly as another computing node. In some embodiments, the prediction may be improved to predict whether a profile can be transcoded by a low-end computing node. This may improve orchestration because low-end computing nodes may be less costly, which may save costs.In another example, if a profile cannot be transcoded within the timing requirements, the video delivery system may change some characteristics of the profile to transcode the video asset file to possibly meet the requirements. For example, a codec may have different settings that may enable a transcoder to transcode the video asset file faster. The video delivery system may choose settings in the profile to transcode the video faster, which is an improvement over predicting that the video asset file cannot be transcoded based on the requirements. This improves the transcoding process because some profiles that may not have been available for publishing based on the timing requirements may now be available to meet the timing requirements.
[0010]
[0024] <System Overview>
[0011]
[0025] FIG. 1 illustrates a simplified system 100 for transcoding video asset files, according to some embodiments. The system 100 includes a content delivery network 102, a client 104, and a video delivery system 106. The video asset files may include different types of content, such as video, audio, or other types of content information. Video may be used for illustrative purposes, but other types of content may be appreciated. In some embodiments, the asset files may be received in a format that requires transcoding to another format, which is described below. For example, the video asset file may be a mezzanine file that includes compressed video. The mezzanine file may be transcoded (e.g., encoded) to create other files, such as different profiles of the video.
[0012]
[0026] A content provider may operate the video delivery system 106 to provide a content delivery service that enables entities to request and receive media content. The content provider may use the video delivery system 106 to coordinate the distribution of media content to the clients 104. The media content may be different types of content, such as on-demand video from a library of videos and live video. In some embodiments, live video may be where video is available based on a linear schedule. Video may also be provided on-demand. On-demand video may be content that may be requested at any time and is not limited to viewing on a linear schedule. Video may be a program such as a movie, a show, an advertisement, etc. As mentioned above, video for a video asset file may be provided as live video and also on-demand, although other scenarios may exist, such as there may be timing requirements for a movie being released.
[0013]
[0027] The clients 104 may include different computing devices, such as a smartphone, a living room device, a television, a set-top box, a tablet device, etc. The clients 104 include a media player 112 that may play content, such as a video. In some embodiments, the media player 112 may receive segments of a video and play these segments. The clients 104 may send requests for segments to the content delivery network 102 and then receive the requested segments for playback on the media player 112. A segment may be a portion of a video, such as 6 seconds of a video.
[0014]
[0028] A video may be transcoded in multiple profiles corresponding to different configurations, which may be different levels of bitrate and / or quality, but may also include other characteristics, such as codec type, computing resource type (e.g., computer processing units), etc. Each video may have an associated profile with a different configuration. The profiles may be categorized in different levels, and each level may be associated with a different configuration. For example, a level may be a combination of bitrate, resolution, codec, etc. For example, each level may be associated with a different bitrate, such as 400 kilobytes per second (kbps), 650 kbps, 1000 kbps, 1500 kbps, ... 12000 kbps, etc. Each level may also be associated with another characteristic, such as a quality characteristic (e.g., resolution). Profile levels may be referred to as higher or lower, such that a profile with a higher bitrate or quality may be rated higher than a profile with a lower bitrate or quality.
[0015]
[0029] The content delivery network 102 includes a server that may deliver video to the client 104. The content delivery network 102 receives requests for segments of video from the client 104 and delivers the segments of video to the client 104. The client 104 may request the segments of video from one of the profile levels based on current playback conditions. The playback conditions may be any conditions experienced based on the playback of the video, such as available bandwidth, buffer length, etc. For example, the client 104 may use an adaptive bitrate algorithm to select a profile for the video based on the currently available bandwidth, buffer length, or other playback conditions. The client 104 may continuously evaluate the current playback conditions and switch between profiles during playback of a segment of the video. For example, during playback, the media player 112 may request a different profile of the video asset. For example, if low bandwidth playback conditions are being experienced, the media player 112 may request a lower profile associated with a lower bitrate for an upcoming segment of the video. However, if playback conditions of higher available bandwidth are experienced, the media player 112 may request a higher level profile associated with higher bandwidth for an upcoming segment of the video.
[0016]
[0030] The video delivery system 106 may transcode received video asset files and publish the transcoded videos on a service where the client 104 may request playback of the videos. To perform the transcoding, the video delivery system 106 may include a transcoding system pipeline 108 and an optimization system 110. The transcoding system pipeline 108 may transcode the video asset files using computing resources (e.g., a transcoding system). The optimization system 110 may optimize the transcoding of the video asset files.
[0017]
[0031] In a video transcoding process, the video delivery system 106 may receive a video asset file that requires transcoding from one format to another. For example, as described above, after broadcasting a video asset, the video delivery system 106 may receive a video asset file for the video asset. In some examples, an episode of a program may be broadcast and the video asset file is received by the video delivery system 106 at 7:00 PM, such as before, during, or after the broadcast. As described above, the transcoding system pipeline 108 may have a timing requirement, such as 11:00 PM, to transcode the video asset file into at least one different profile, where each profile may be a separate video file. Once the transcoding of at least one profile is complete, the video delivery system 106 may publish the video asset on a service. In some embodiments, the video delivery system 106 may publish the transcoded profiles on the origin storage 114. The content delivery network 102 may then receive requests and receive the profiles from the origin storage 114 when they are requested by the client 104. Other configurations are possible, such as where the profile can be sent to each content delivery network 102 individually.
[0018]
[0032] After publishing the profile, the video assets can be requested and delivered to the clients 104 for playback. For example, after broadcast, the video delivery system 106 can publish the video assets as video-on-demand assets, which can be requested at any time by the clients 104. In some examples, a user account can request playback of an episode of a program at a later time after 11:00 PM.
[0019]
[0033] The transcoding system pipeline 108 may include different computing resources that may perform the transcoding, such as transcoding nodes that may include different characteristics. The different characteristics may affect the transcoding time. For example, a low-end computing node may have a lower performance CPU, and a high-end computing node may have a higher performance CPU. A low-end computing node may transcode a video asset file slower than a high-end computing node.
[0020]
[0034] The optimization system 110 may analyze characteristics associated with the video asset file and generate an optimization strategy for transcoding the video asset file. As described in more detail below, the optimization system 110 may predict transcoding timing estimates for different profiles. Then, using requirements for the video asset file, such as transcoding time based on the release time, the optimization system 110 may generate a transcoding optimization strategy. For example, the optimization system 110 may determine which profiles can be transcoded within the timing requirements based on the predicted transcoding timing estimates. Another strategy may attempt to change some configurations of profiles predicted to be unable to finish transcoding to meet the timing requirements so that the profiles can be transcoded to meet the timing requirements. Yet another strategy may be to efficiently allocate the transcoding of the profiles on the computing resources in the transcoding system pipeline 108.
[0021]
[0035] Below, different scenarios illustrating the benefits of using the optimization system 110 are then described, followed by additional details of the optimization process.
[0022]
[0036] <Scenario>
[0023]
[0037] 2A and 2B illustrate different scenarios that may occur when transcoding a video asset file. FIG. 2C illustrates a scenario when using optimization, according to some embodiments. FIGS. 2A-2C show a content arrival time, which may be when a video asset file is received. For example, an episode of a program may arrive at a content arrival time of 7:00 PM. The video delivery system 106 may be given a limited time window for publishing content. For example, the limited time window may have a content publication time at 11:00 PM.
[0024]
[0038] The transcoding process of a video asset file may include different parts. For example, the first part T a The second time T may be the processing time spent preparing the transcoding job. Different preparation tasks may be performed, which may include ingestion of video asset files, resource allocation, and any pre-processing analysis. b may be the video transcoding time it takes to transcode a video asset file into the profile. c is the processing time after the transcoding job is finished, which may include packaging, encryption, sending the video to the CDN network, etc. Time T a and T c The processing time taken for time T b may not be known due to transcoding time variations that may depend on the respective characteristics of each video asset file and the capabilities of the computing nodes that may perform the transcoding as described above.
[0025]
[0039] Potential problems can arise due to indeterminate transcoding times. For example, FIG. 2A illustrates a first problem resulting from indeterminate transcoding times, and FIG. 2B illustrates a second problem resulting from indeterminate transcoding times. In FIG. 2A, the transcoding time T b may be too long, so that the video asset file for the profile may not be ready by the content release time, as shown at 202. Also, in FIG. 2B, the transcoding time T b may be shorter, resulting in the video asset file for the profile being available at 204, which is before the content release time. In this case, the availability time may not be fully optimized. For example, a higher quality transcoding could have been done within the allowed time window, such that the transcoding could have been done slower. That is, the transcoder may take more time to process the video, which may result in a higher quality transcoding.
[0026]
[0040] FIG. 2C illustrates a transcoding timeline optimized using an optimization strategy according to some embodiments. For example, at 206, b1 is the time spent on the optimization analysis by the optimization system 110. Then, at 208, the time T b2 is the transcoding time predicted by the optimization system 110. Then, transcoding of the video asset file for the profile can be prepared by the content release time, which provides an optimized use of the time window. For example, based on the predicted transcoding timing estimate, a transcoder can be selected that can transcode the video asset file for the profile for the highest possible quality within the time window while still meeting the timing requirements.
[0027]
[0041] In FIG. 2C, the first portion Ta The tasks of preparation, optimization analysis at 206, and transcoding at 208 are shown in serial stepwise order. In some embodiments, some of these tasks may be triggered and executed in parallel. For example, the preparation task and optimization analysis may be executed in parallel. Also, optimization analysis and transcoding may also be executed in parallel. The task of transcoding time prediction may be executed faster than the task of transcoding the video asset file, and transcoding time information is available before the transcoding task is finished. Once the transcoding time prediction is known, optimization system 110 may determine whether the transcoding task will be continued or terminated according to this prediction. For example, if the transcoding will not finish so that the timing requirements are met, optimization system 110 may terminate the task. In these embodiments, the time T spent on optimization analysis may be set to 100%. b1 does not introduce any delay into the transcoding tasks, but it may require some transcoding tasks to be started and terminated rather than not being started at all. The optimization will now be described in more detail below.
[0028]
[0042] <Optimization system>
[0029]
[0043] FIG. 3 illustrates a more detailed example of the optimization system 110, according to some embodiments. A video asset file is received at the optimization system 110 and the transcoding system pipeline 108. A pre-analysis engine 302 may perform pre-analysis tasks 303 necessary to prepare a transcoding job. For example, the pre-analysis tasks 303 may include pre-processing tasks, such as may include content classification based transcoding parameter tuning, configuring profile settings, etc. These tasks may be performed in parallel. The pre-analysis engine 302 may also determine any timing requirements for the video asset file. In another pre-analysis task, a transcoding timing estimation engine 304 may generate a transcoding timing estimate using characteristics of the video asset file. As mentioned above, the timing estimation may be performed in parallel with other pre-analysis tasks 303 or transcoding. Transcoding timing estimates may be generated for multiple profiles. Each profile may have a predicted time required to transcode the video asset file. Also, the transcoding time estimate may be an estimate for transcoding the entire video asset, but may be applied to finer granularity, such as chunks, segments, or a given period or portion of the video asset. The transcoding timing engine 304 outputs the transcoding timing estimate to the optimization strategy engine 306. The optimization strategy engine 306 analyzes the transcoding timing estimate and requirements for transcoding the video asset file and outputs an optimization strategy. The optimization strategy may be used to determine the configuration of the transcoding system pipeline 108. The optimization strategy may involve determining which profile to transcode and allocating computing resources to transcode the profile.This configuration configures the transcoding system pipeline 108 to transcode the video asset file into one or more profiles based on the optimization strategy, e.g., the profile that can be transcoded within the timing requirements is transcoded. The encoded bitstream is then output for the different profiles to the origin storage 114 and / or the content delivery network 102, etc. Below, the transcoding timing estimates are then described in more detail, followed by the generation of the optimization strategy.
[0030]
[0044] <Transcoding timing estimate>
[0031]
[0045] FIG. 4 illustrates a simplified flowchart 400 of a method for generating a transcoding timing estimate according to some embodiments. At 402, the optimization system 110 receives a video asset file. For example, as described above, a video asset file for a video is received at 7:00 PM after being broadcast. At 404, the optimization system 110 extracts features for the video asset file. The features may be based on characteristics of the video for the video asset file. In some embodiments, the features may be based on information that may relate to video transcoding. The following features may be used, although other features may be understood. For example, the features may include video asset level features, video pixel level features, video spatial features, video temporal features, video frequency features, and proxy transcoding information. The video asset level features may include asset resolution, duration, container, codec, range (standard dynamic range, high dynamic range, etc.), and other features. A codec may be a coder / decoder that may be responsible for encoding and decoding a video file. A codec may compress and decode a file to create a digital file. Different codecs may be associated with different standards, such as H.264, H.265, etc. The container may be a file format that is responsible for transcoding the content and stores the video content. The asset resolution may be the resolution of the asset, and the duration is the running time of the video.
[0032]
[0046] Video pixel level features may include luminance, histograms, average pixel values, pixel value variants, etc. Luminance may describe the brightness of a frame of video. An image histogram may refer to a histogram of image characteristics, such as pixel intensity values. Average spatial values and pixel value variants may describe the value of a pixel. Values may be organized by pixel, by blocks in a frame, by frame, or by multiple frames.
[0033]
[0047] Video spatial features may include texture edges, gradients, etc. Video temporal features may include motion, optical flow, etc. Video frequency features may include transform coefficients, etc. The proxy transcoding information may include possible transcoding alternatives to increase the speed of transcoding, such as smaller resolution, smaller target bitrate, thinned video frames, or faster transcoding using a portion of the original video asset file. Thinned video frames may remove some video frames from the video asset file.
[0034]
[0048] After extracting the features, at 406, the optimization system 110 determines a target configuration that can be used in the transcoding process, e.g., the target configuration can be structured as a combination of fields that specify different values for settings used in the transcoding process. Examples of different target configurations are illustrated in FIG. 5. The target configuration can include a combination of the following features: Calculation recipes ○ CPU model Number of CPU cores ○ ... ABR Recipe Output resolution Output Bitrate ○ Segment duration ○ ... Codec Recipe ○ Codec standard, e.g. AVC, HEVC, AV1... etc. ○ Codec presets, e.g. x264_fast, x265_slower, libaom_cpu2... etc. ○ Finer control of codec, e.g. number of b-frames, motion search method / Range...etc. ○ Rate control method, e.g. VBR-1 pass, VBR-2 pass... etc. ○ ... · ...
[0035]
[0049] At 408, the optimization system 110 may input the features and target configurations to the transcoding timing estimation engine 304. The transcoding timing estimation engine 304 may be a prediction network (e.g., a machine learning module) that may receive the features and target configurations and output predictions for transcoding timing estimates. In some embodiments, the transcoding timing estimation engine 304 may include multiple outputs that receive multiple target configurations in parallel and output multiple predictions for these target configurations together. In another example, the transcoding timing estimation engine 304 may receive one target configuration separately and output a transcoding timing estimate for that target configuration. In this case, the process may be performed for each target configuration.
[0036]
[0050] At 410, the optimization system 110 outputs transcoding timing estimates for the target configuration, which may be used in generating an optimization strategy, as described below.
[0037]
[0051] The transcoding timing estimates may be based on the training of a prediction network. Different machine learning algorithms may be used by the prediction network. Depending on the particular machine learning algorithm, trained models may be prepared, managed, and used in the prediction network. In some embodiments, the models may be trained offline using a training process. When using a multi-output design, separate models may be prepared for a group of target configurations or for each target configuration. A training dataset may be used based on the results of historical transcoding jobs of other video asset files and used as ground truth. In addition, extra transcoding jobs may be launched to determine training data for the target configuration. The model may then be trained by inputting the features of the training dataset and comparing the results with the ground truth to adjust the parameters of the model. That is, the parameters may be adjusted so that the prediction network produces predictions closer to the ground truth based on the same input. The trained model may be able to predict transcoding timing estimates for a profile based on the features of the video asset file and the target configuration.
[0038]
[0052] The above process is an improvement over the process described in FIG. 2A and FIG. 2B. Instead of relying on uncertain transcoding times or, in some cases, using fixed transcoding times, the optimization system 110 predicts transcoding times. This improves the process of determining transcoding times. The use of features for the video asset file can customize the transcoding timing estimate for the specific characteristics of the video asset file. This improves the transcoding timing estimate because by taking into account specific characteristics of the video that can affect the transcoding time, the transcoding timing estimate can be more accurate. A fixed transcoding time does not take into account the specific characteristics of the video asset file.
[0039]
[0053] As discussed above, a target configuration may be associated with a profile. FIG. 5 illustrates a table 500 of target configurations for profiles, according to some embodiments. The table 500 includes a first column 502 describing the profile name, a second column 504 indicating the output resolution, and a third column 506 indicating the video bitrate. For example, at 508, for a profile "HEVC_600", the output resolution is "640×360" and the video bitrate is "600" kbps. At 510, for a second profile "HEVC_8000", the output resolution is "2560×1440" and the video bitrate is 8000 kbps. The resolution and bitrate may be the target configuration settings used when transcoding the video asset file. The transcoder will transcode the video using these settings, for example, the transcoder may transcode a video asset file with an output resolution of 640x360 and a video bitrate target of 600kbps. Other characteristics (e.g., CPU, codec) may also be specified for the profile, but are not shown. Upon determining the transcoding timing estimates, the optimization strategy engine 306 may analyze the transcoding timing estimates and generate an optimization strategy.
[0040]
[0054] <Optimization strategy>
[0041]
[0055] 6 illustrates a table 600 listing information that may be used to generate an optimization strategy, according to some embodiments. Columns 602, 604, 606, 608, and 610 may list the settings of a profile. For example, column 602 describes the profile name, such as Profile 1, Profile 2, or Profile 3. Columns 604, 606, and 608 describe the transcoding settings of the profile, such as codec, output resolution, and video bitrate, respectively. Other settings of the profile may also be used but are not shown.
[0042]
[0056] Column 610 may be a timing requirement. In this case, the timing requirement may estimate the available time (T_available) at which the transcoding should finish to meet the timing requirement. The timing requirement may be based on the content release time, as described above. This may allow a profile for a video asset file to be published at the content release time. For example, the available time may be 14,400 seconds. This may be the total amount of time that may be used to transcode a video asset file. The available time T_available may be calculated as the content release time minus the content arrival time minus the time T for each profile. a - Time T b1 - Time T c 2C. That is, the available time may be based on the time T b2 The time T at which profile 1 differs compared to profile 3 may be a Note that different profiles may have different availability times associated with them, such as profile 1 may have an availability time of 15,000 seconds and profile 3 may have an availability time of 14,400 seconds. In this case, profile 1 may have an availability time of 15,000 seconds and profile 3 may have an availability time of 14,400 seconds. The timing requirements may also be in other forms, such as a publication time, an end time (e.g., 10:00 PM if started upon content arrival), etc. The timing requirements may also be determined in other ways, such as based on portions of tasks that are running in parallel. Additionally, the timing requirements may be in other formats, such as the content publication time may be a timing requirement, and the transcoding time may be added to other times that need to be done to publish the video asset to determine if the timing requirement is met. For example, time T a , time T b1 , time T b , and time T c This time may be used to determine if the publication time is met.
[0043]
[0057] Column 612 may be a transcoding timing estimate for each profile. The transcoding timing estimate may be the amount of time required to finish transcoding for the profile. For example, for profile 3, the transcoding time is estimated to be 3200 seconds, and for profile 10, the transcoding time is estimated to be 15,600 seconds. The transcoding timing estimate may also be in other forms, such as an end time (e.g., 10:00 PM), etc.
[0044]
[0058] The optimization strategy engine 306 may generate an output based on the available time and the transcoding timing estimate. For example, the output may indicate whether the respective profile can be transcoded within the available time. In some embodiments, the column 614 may be a flag that may be set to a first value (e.g., true) and a second value (e.g., false). The true flag will be set when the profile can be transcoded at a time within the available time. The false flag will be sent when the profile cannot be transcoded within the available time. Although flags have been described, other information may also be output. For example, a value may be set based on a comparison of the available time and the transcoding timing estimate. For example, for profile 1, a value of 14,400-1,400=13,000 may be output, indicating that there are an extra 13,000 seconds in the time window to transcode this profile. For profile 10, the value 14,400-15,600=-1200 may be output, which may indicate that an additional 1200 seconds in the time window is needed to transcode this profile.
[0045]
[0059] In the above example, profiles 1-8 have the flag ABR_profile_pass_flag set to true. The true value indicates that these profiles can be successfully transcoded and published within the availability time T_available. Thus, the transcoding system pipeline 108 may transcode these profiles for delivery at the content publication time. In contrast, profiles 9-12 have a flag value of false. This value indicates that the transcoding system pipeline 108 cannot transcode these profiles within the time T_available. Due to their longer transcoding times, these profiles may not be transcoded and ready for publication at the content publication time.
[0046]
[0060] In the following, a method for generating a value for the flag ABR_profile_pass_flag is described. FIG. 7 illustrates a simplified flowchart 700 of a method for analyzing transcoding timing estimates, according to some embodiments. At 702, the optimization strategy engine 306 receives timing requirements for a video asset file. For example, as described above, the time T_available may be calculated based on the content release time, the content arrival time, and the time T a , T a1 , and T c This information is shown in column 610 of Figure 6. At 704, the optimization strategy engine 306 receives a transcoding timing estimate for the target configuration. This information is shown in column 612 of Figure 6.
[0047]
[0061] At 706, the optimization strategy engine 306 compares the timing requirement to the transcoding timing estimate for the profile. For example, the optimization strategy engine 306 may perform a subtraction of the available time minus the predicted transcoding timing estimate. For example, for profile 2, a value of 14,400-1,800=12,600 is determined. At 708, the optimization strategy engine 306 determines whether the timing requirement is met. In one example, if the output is a positive number, the optimization strategy engine 306 may determine that the timing requirement is met. A threshold such as 1,000 seconds may also be used, and if the output meets the threshold, such as greater than the threshold, the optimization strategy engine 306 may determine that the timing requirement is met. The threshold may be used to provide a buffer to allow for variation in the transcoding time. For example, the available time for transcoding the profile should be 1000 seconds longer than the transcoding time. If the timing requirement is not met, at 710, the optimization strategy engine 306 may display an indication that the requirement is not met. For example, the optimization strategy engine 306 may set the flag ABR_profile_pass_flag to false. If the timing requirement is met, then at 712 the optimization strategy engine 306 may output an indication that the requirement is met, such as setting the flag ABR_profile_pass_flag to a true value.
[0048]
[0062] The optimization strategy engine 306 may use the output of the flag ABR_profile_pass_flag to generate an optimization strategy. In some embodiments, the optimization strategy may be to start transcoding of profiles that meet the timing requirements. Profiles that did not meet the timing requirements may not be transcoded at this time, but may be started later. In other embodiments, if sufficient computing resources are available, profiles that do not meet the timing requirements may be started, but may not finish by the required content publication time. However, at a later time when additional profiles are published, these profiles may be published at that time. In some embodiments, the optimization strategy engine 306 may analyze the available computing resources and the predicted transcoding timing estimates to determine whether to start transcoding jobs for profiles that do not meet the timing requirements. For example, if the optimization strategy engine 306 determines that there are available computing resources that would not affect the transcoding time of profiles that may meet the timing requirements, the optimization strategy engine 306 may start transcoding for all profiles. The output may also be used to determine which profiles may be transcoded to meet the timing requirements and to inform systems that require this information. For example, preparations for publishing a profile in the video delivery system 106 may begin using this prediction.
[0049]
[0063] In addition to the above strategies, the optimization strategy engine 306 may attempt to adjust characteristics of a profile that did not meet the timing requirements so that the profile may meet the timing requirements. Figures 8-9 illustrate optimization strategies for profiles that do not meet timing requirements, according to some embodiments.
[0050]
[0064] 8 illustrates a simplified flowchart 800 of a method for analyzing additional transcoding options for profiles that do not meet timing requirements, according to some embodiments. At 802, the optimization strategy engine 306 determines profiles that do not meet timing requirements. For example, profile 11 does not meet the timing requirements because the transcoding time of 21,600 is longer than the timing requirement of 14,400.
[0051]
[0065] At 804, the optimization strategy engine 306 may analyze characteristics of the profile to determine adjustments to a target configuration for the profile. For example, different profiles may have the potential to use different presets that may change the transcoding time. For example, a transcoding standard may specify different presets that may be used. The presets may be different settings that may be used to transcode a video asset file for the profile. An example of different presets that may be used is shown in FIG. 9A and described later. At 806, the optimization strategy engine 306 may generate transcoding timing estimates for different profile presets. For example, different settings may result in different transcoding timing estimates. An example of different results is shown in FIG. 9B, which will be described below.
[0052]
[0066] At 808, the optimization strategy engine 306 determines which presets meet the timing requirements. If some presets do not meet the timing requirements, at 810, the optimization strategy engine 306 outputs an indication of which settings of the profile do not meet the requirements. The output may be the value of ABR_profile_pass_flag, as described above. If some settings meet the timing requirements, at 812, the optimization strategy engine 306 outputs an indication of which settings of the profile do meet the requirements.
[0053]
[0067] At 814, the optimization strategy engine 306 may analyze the indication and select settings for the profile if any meet the timing requirements. For example, for presets that meet the timing requirements, the optimization system 110 may select one of the presets, such that the preset that may result in the highest quality transcoding that meets the timing requirements may be selected.
[0054]
[0068] Next, an example of selecting different presets will be described. FIG. 9A illustrates an example of different presets, according to some embodiments. Table 900 illustrates different presets that can be used for a profile. For example, for the x264 codec, there are different presets: ultrafast, superfast, very fast, faster, fast, medium, slow, slower, very slow, placebo. These presets can be set on the codec and can affect the transcoding time, such as the "ultrafast" preset transcoding a video faster than the "slow" preset. Similarly, the codec x265 can also include the same presets. Also, the libaom codec can have a preset that indicates how many CPUs should be used. More CPUs can result in faster transcoding times.
[0055]
[0069] 9B illustrates an example of the results when performing optimization using different presets, according to some embodiments. In FIG. 9B, table 906 shows an example of transcoding timing estimates using different presets. Column 908 illustrates the profile name, column 910 illustrates the codec type, column 912 illustrates the output resolution, and column 914 illustrates the video bitrate of the profile. Column 916 illustrates the time for the timing requirement.
[0056]
[0070] Column 918 illustrates examples of different presets for a codec. For example, a first setting of preset 1 (fast), a second setting of preset 2 (medium), a third setting of preset 3 (slow), and a fourth setting of preset 4 (customized) may be used. The customized presets may be specially configured, such as a combination of different presets, or presets not provided by the standard. These presets may be configured for the codec that performs the transcoding. A prediction network may be trained to generate transcoding timing estimates for different presets. Column 920 illustrates the new estimated transcoding time when using different presets. For example, using preset 1, the transcoding timing estimate is 12,000 seconds, using preset 2, it is 17,300 seconds, preset 3 is 21,600 seconds, and preset 4 is 14,000 seconds. Compared to the timing requirement of 14,400 seconds, preset 1 and preset 4 pass the timing requirement, and preset 2 and preset 3 do not meet the timing requirement. For example, preset 1 has a time of 12,000 seconds, which is less than 14,400 seconds, and preset 4 has an estimated time of 14,000 seconds, which is less than 14,400 seconds. However, preset 2 has a time of 17,300 seconds, and preset 3 has a time of 21,600 seconds, both of which are longer than the timing requirement of 14,400 seconds. In some embodiments, the optimization system 110 may select one of the presets if multiple presets meet the timing requirement. For example, the optimization strategy engine 306 may select preset 4 because this preset may be configured to transcode the video asset file with higher quality compared to preset 1. Thus, by selecting the preset to be used, the profile may be transcoded to meet the timing requirement, which may be an improvement over not being able to transcode the profile to meet the timing requirement if no preset is used or if a default preset is used.
[0057]
[0071] The optimization strategy engine 306 may also optimize the orchestration of computing resources in the transcoding system pipeline 108, such as by selecting a transcoding node to which a transcoding job for a profile is allocated. A transcoding node may be a configuration of computing resources, such as a CPU, a codec, etc. The allocation may improve utilization of the computing resources. FIG. 10 illustrates a simplified flowchart 1000 of a method for allocating computing resources, according to some embodiments. At 1002, the optimization strategy engine 306 receives a transcoding timing estimate for a target configuration. The transcoding timing estimate may be an estimated transcoding time for a target configuration that can be transcoded within timing requirements. At 1004, the optimization system 110 may analyze the transcoding timing estimate to select a transcoding node configuration. For example, as described in more detail below in FIG. 11, the optimization system 110 may select from different transcoding nodes having different performance capabilities. For example, a low-end transcoding node may transcode video asset files with lower performance (taking more time), and a high-end transcoding node may transcode video asset files with higher performance (faster or higher quality).
[0058]
[0072] At 1006, the optimization system 110 may allocate target configurations for the profiles to specific transcoding nodes. The allocation may send different transcoding configurations to different transcoding nodes to perform transcoding of the respective profiles. FIG. 11 illustrates a table 1100 showing information summarizing information used to generate an optimization strategy, according to some embodiments. Transcoding computing resources may be classified into different classifications depending on different characteristics of the transcoding nodes. In some examples, the computing resources may be classified into two classifications, although other classifications may also be used. The first classification may be low-end computing nodes and the second classification may be high-end computing nodes. In general, low-end computing nodes may have lower performance compared to high-end computing nodes. Low-end computing nodes may be computing machines such as servers that may have lower performance computing resources such as CPUs, or may be older. These computing nodes may transcode video asset files slower compared to high-end computing nodes. High-end computing nodes may have computing resources that are considered high performance, such as more CPUs operating using higher frequencies, etc. In general, a high-end computing node may transcode a video asset file faster, but the cost of transcoding the video asset file may be higher compared to a low-end computing node, and the higher cost may be because a company is charged based on the computing resources used in the data center.
[0059]
[0073] In table 1100, columns 1102, 1104, 1106, and 1108 correspond to profile name, output resolution, video bit rate, and timing requirement. Column 1110 may be transcoding timing estimates for the computing nodes of the low-end group. Column 1112 may be a flag indicating whether the transcoding timing estimates for the low-end computing group meet the timing requirement in column 1108. For example, for profile 4, the transcoding timing estimate of 13,900 meets the timing requirement of 14,400 and is assigned a value of true. However, for profile 5, the transcoding timing estimate of 14,800 does not meet the timing requirement of 14,400 and is assigned a value of false.
[0060]
[0074] Column 1114 is a transcoding timing estimate for the high-end group, and column 1116 is a pass flag for the high-end group. The pass flag for the low-end group and the pass flag for the high-end group may include different values. For example, profiles 1-8 may meet the timing requirements for the high-end group, while profiles 1-4 meet the timing requirements for the low-end group. Thus, profiles 5-12 do not meet the timing requirements for the low-end group, and profiles 9-12 do not meet the timing requirements for the high-end group.
[0061]
[0075] The optimization strategy engine 306 may use the results in table 1100 to perform different optimization strategies. In the above example, for profiles 1-4, both the low-end group and the high-end group may finish transcoding the profiles within the available time according to the timing requirement. The optimization strategy engine 306 may select the low-end group for these profiles to save costs. For profiles 5-8, only the high-end group may finish transcoding the profiles to meet the timing requirement. The optimization strategy engine 306 may select high-end nodes for those profiles. For profiles 9-12, these profiles cannot be transcoded according to the timing requirement no matter what type of computing node is used. The optimization strategy engine 306 may cancel transcoding of these profiles to save computing resources, and these profiles may be transcoded later. Also, these profiles may be transcoded using low-end computing nodes because they will not be published at the content publishing time, but will be published after the content publishing time.
[0062]
[0076] Therefore, the optimization system 110 may use the transcoding timing estimates to efficiently allocate transcoding jobs to different nodes, which may use computing resources more efficiently and also save costs.
[0063]
[0077] In conclusion, the optimization system 110 may avoid the problem of not being able to publish content on time or wasting available transcoding time. Instead of using a fixed or indeterminate time of how long it may take to transcode a video asset file, the optimization system 110 uses a predicted video transcoding time that is generated before the transcoding job starts. Different characteristics of different video asset files may result in different transcoding timing predictions. Thus, the transcoding timing predictions may be improved by being personalized for the video asset file. Also, different target configurations may be supported by the transcoding timing predictions. If one setting of the target configuration does not meet the timing requirements, the optimization system 110 may select another setting. This may allow the profile to be transcoded within the timing requirements, which may not have previously occurred. All of the above may optimize the transcoding of video asset files into different profiles when timing requirements are imposed on the content publishing time.
[0064]
[0078] <System>
[0065]
[0079] Features and aspects as disclosed herein may be implemented in conjunction with a video streaming system 1200 in communication with multiple client devices over one or more communication networks, as shown in Figure 12. Aspects of the video streaming system 1200 are described solely to provide examples of applications for enabling distribution and delivery of content prepared in accordance with the present disclosure. It should be understood that the present technology is not limited to streaming video applications, but may be adapted to other applications and delivery mechanisms.
[0066]
[0080] In one embodiment, a media program provider may include a library of media programs. For example, the media programs may be aggregated and provided through a site (e.g., a website), an application, or a browser. A user may access a site or application of a media program provider and request a media program. The user may be limited to requesting only media programs provided by the media program provider.
[0067]
[0081] In the system 1200, video data may be obtained from one or more sources, such as from a video source 1210, for use as input to the video content server 1202. The input video data may comprise raw or edited frame-based video data in any suitable digital format, such as Moving Pictures Experts Group (MPEG)-1, MPEG-2, MPEG-4, VC-1, H.264 / Advanced Video Coding (AVC), High Efficiency Video Coding (HEVC), or other formats. In the alternative, the video may be provided in a non-digital format and converted to a digital format using a scanner or transcoder. The input video data may comprise various types of video clips or programs, such as television episodes, movies, and other content produced as the primary content of interest to consumers. The video data may also include audio, or only audio may be used.
[0068]
[0082] The video streaming system 1200 may include one or more computer servers or modules 1202, 1204, and 1207 distributed across one or more computers. Each server 1202, 1204, 1207 may include or be operatively coupled to one or more data stores 1209, such as databases, indexes, files, or other data structures. The video content server 1202 may access a data store (not shown) of various video segments. The video content server 1202 may serve video segments as directed by a user interface controller in communication with a client device. As used herein, a video segment refers to a distinct portion of frame-based video data, such as may be used in a streaming video session to view a television episode, a movie, a recorded live performance, or other video content.
[0069]
[0083] In some embodiments, the video ad server 1204 may access a data store of relatively short videos (e.g., 10-second, 30-second, or 60-second video ads) configured as advertisements for particular advertisers or messages. The advertisements may be provided for advertisers in exchange for some type of payment, or may comprise promotional messages, public service messages, or some other information for the system 1200. The video ad server 1204 may serve video ad segments as directed by a user interface controller (not shown).
[0070]
[0084] The video streaming system 1200 may also include an optimization system 110.
[0071]
[0085] The video streaming system 1200 may further include an integration and streaming component 1207 that integrates video content and video advertisements into streaming video segments. For example, the streaming component 1207 may be a content server or a streaming media server. A controller (not shown) may determine the selection or configuration of advertisements in the streaming video based on any suitable algorithm or process. The video streaming system 1200 may include other modules or units not shown in FIG. 12, such as a management server, a commerce server, a network infrastructure, an advertisement selection engine, etc.
[0072]
[0086] The video streaming system 1200 may connect to a data communications network 1212. The data communications network 1212 may comprise a local area network (LAN), a wide area network (WAN), such as the Internet, a telephone network, a wireless cellular telecommunications network (WCS) 1214, or any combination of these or similar networks.
[0073]
[0087] One or more client devices 1220 may be in communication with the video streaming system 1200 via the data communications network 1212, the wireless cellular telecommunications network 1214, or another network. Such client devices may include, for example, one or more laptop computers 1220-1, desktop computers 1220-2, "smart" mobile phones 1220-3, tablet devices 1220-4, network-enabled televisions 1220-5, or combinations thereof, via a router 1218 for a LAN, via a base station 1217 for the wireless cellular telecommunications network 1214, or via some other connection. In operation, such client devices 1220 may send or receive data or instructions to the system 1200 in response to user input or other input received from a user input device. In response, the system 1200 may provide video segments and metadata from the data store 1209 to the client device 1220 in response to a selection of a media program. The client device 1220 may use a display screen, projector, or other video output device to output video content from the streaming video segments in a media player and receive user input for interacting with the video content.
[0074]
[0088] Distribution of the audio-video data from the streaming component 1207 to the remote client devices may be performed using various methods, e.g., streaming, over computer networks, telecommunications networks, and combinations of such networks. In streaming, a content server continuously streams the audio-video data to a media player component operating at least partially on the client device, and the media player component may play the audio-video data concurrently as it receives the streaming data from the server. Although streaming has been discussed, other distribution methods may be used. The media player component may begin playing the video data immediately after receiving the first portion of the data from the content provider. Traditional streaming techniques use a single provider that delivers a stream of data to a set of end users. Delivering a single stream to a large audience may require high bandwidth and processing power, and the bandwidth required from the provider may increase as the number of end users increases.
[0075]
[0089] Streaming media may be delivered on demand or live. Streaming allows for instant playback at any point in the file. An end user may skip within a media file to start playback or change playback to any point in the media file. Thus, the end user does not have to wait for the file to download incrementally. Typically, streaming media is delivered from a small number of dedicated servers with high bandwidth capabilities via dedicated devices that accept requests for video files and deliver just the amount of data needed to play the video, along with information about the format, bandwidth, and structure of those files, at the rate needed to play it. The streaming media server may also take into account the transmission bandwidth and capabilities of the media player on the destination client. The streaming component 1207 may communicate with the client device 1220 using control and data messages to adapt to changing network conditions as the video is played. These control messages may include commands to enable control functions at the client, such as fast forward, rewind, pause, or seek to a particular part of the file.
[0076]
[0090] Because the streaming component 1207 transmits video data only as needed and at the rate required, precise control over the number of streams provided can be maintained. A viewer would not be able to watch high data rate video over a lower data rate transmission medium. However, a streaming media server (1) provides users with random access to video files, (2) allows monitoring of who is watching which video programs and how long they are being watched, (3) uses transmission bandwidth more efficiently because only the amount of data needed to support the viewing experience is transmitted, and (4) video files are not stored on the viewer's computer but discarded by the media player, thus allowing greater control over the content.
[0077]
[0091] The streaming component 1207 may use TCP-based protocols such as Hypertext Transfer Protocol (HTTP) and Real-Time Messaging Protocol (RTMP). The streaming component 1207 may also deliver and multicast live webcasts, which allows more than one client to tune into a single stream, thus conserving bandwidth. A streaming media player may not rely on buffering the entire video to provide random access to any point in a media program. Instead, this is accomplished using control messages sent from the media player to the streaming media server. Other protocols used for streaming are HTTP Live Streaming (HLS) or Dynamic Adaptive Streaming over HTTP (DASH). The HLS and DASH protocols typically deliver video over HTTP via a playlist of small segments made available at various bitrates from one or more content delivery networks (CDNs). This allows the media player to switch both bitrate and content source on a segment-by-segment basis. This switching helps to compensate for network bandwidth fluctuations and infrastructure failures that may occur during the playback of the video.
[0078]
[0092] Delivery of video content through streaming can be accomplished under a variety of models. In one model, a user pays to view a video program, for example, paying a fee for access to a library of media programs or a limited subset of media programs, or using a pay-per-view service. In another model, widely adopted by television broadcasting soon after its inception, sponsors pay for the presentation of a media program in exchange for the right to present advertisements during or adjacent to the presentation of the program. In some models, advertisements are inserted at predefined times in the video program, which may be referred to as "ad slots" or "ad breaks." In streaming video, media players may be configured to prevent client devices from playing a video without playing predefined advertisements during designated ad slots.
[0079]
[0093] Referring to Figure 13, a schematic diagram of an apparatus 1300 for viewing video content and advertisements is illustrated. In selected embodiments, the apparatus 1300 may include a processor (CPU) 1302 operatively coupled to a processor memory 1304 that holds binary coded functional modules for execution by the processor 1302. Such functional modules may include an operating system 1306 for handling system functions such as input / output and memory access, a browser 1308 for displaying web pages, and a media player 1310 for playing videos. The memory 1304 may hold additional modules not shown in Figure 13, such as modules for performing other operations described elsewhere herein.
[0080]
[0094] The bus 1314 or other communication components may support communication of information within the apparatus 1300. The processor 1302 may be a specialized or dedicated microprocessor configured or operable to perform particular tasks in accordance with the features and aspects disclosed herein by executing machine-readable software code that defines those tasks. The processor memory 1304 (e.g., a random access memory (RAM) or other dynamic storage device) may be connected to the bus 1314 or directly connected to the processor 1302 and may store information and instructions executed by the processor 1302. The memory 1304 may also store temporary variables or other intermediate information during the execution of such instructions.
[0081]
[0095] A computer readable medium in storage device 1324 is connected to bus 1314 and may store static information and instructions for processor 1302, for example, storage device (CRM) 1324 may store modules 1306, 1308, and 1310 when apparatus 1300 is powered off, from which these modules may be loaded into processor memory 1304 when apparatus 1300 is powered on. Storage device 1324 may include a non-transitory computer readable storage medium that holds information, instructions, or some combination thereof, for example, instructions that when executed by processor 1302 configure or enable apparatus 1300 to perform one or more operations of the methods as described herein.
[0082]
[0096] A network communication (comm.) interface 1316 may also be connected to the bus 1314. The network communication interface 1316 may optionally provide or support bidirectional data communication between the apparatus 1300 and one or more external devices, such as the streaming system 1200, via a router / modem 1326 and a wired or wireless connection. Alternatively or additionally, the apparatus 1300 may include a transceiver 1318 connected to an antenna 1329, through which the apparatus 1300 may communicate wirelessly with a base station for a wireless communication system or with the router / modem 1326. Alternatively, the apparatus 1300 may communicate with the video streaming system 1200 via a local area network, a virtual private network, or other network. As another alternative, the apparatus 1300 may be incorporated as a module or component of the system 1200 and communicate with other components via the bus 1314 or by some other modality.
[0083]
[0097] Apparatus 1300 may be connected (e.g., via bus 1314 and graphics processing unit 1320) to a display unit 1328. Display 1328 may include any suitable configuration for displaying information to an operator of apparatus 1300. For example, display 1328 may include or utilize a liquid crystal display (LCD), a touchscreen LCD (e.g., a capacitive display), a light emitting diode (LED) display, a projector, or other display device for presenting information to a user of apparatus 1300 in a visual display.
[0084]
[0098] One or more input devices 1330 (e.g., an alphanumeric keyboard, a microphone, a keypad, a remote controller, a game controller, a camera, or a camera array) may be connected to the bus 1314 via a user input port 1322 for communicating information and commands to the apparatus 1300. In selected embodiments, the input device 1330 may provide or support control over cursor positioning. Such cursor control devices, also referred to as pointing devices, may be configured as a mouse, a trackball, a trackpad, a touch screen, cursor direction keys, or other devices for receiving or tracking physical movements and converting the movements into electrical signals indicative of cursor movement. The cursor control device may be incorporated into the display unit 1328, for example using a touch-sensitive screen. The cursor control device may communicate directional information and command selections to the processor 1302 and control cursor movement on the display 1328. The cursor control device may have two or more degrees of freedom, for example allowing the device to specify a cursor position in a plane or three-dimensional space.
[0085]
[0099] Some embodiments may be implemented in a non-transitory computer-readable storage medium for use by or in connection with an instruction execution system, apparatus, system, or machine. The computer-readable storage medium includes instructions for controlling a computer system to perform the methods described by some embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be configured or operable to perform those described in some embodiments.
[0086]
[0100] As used in this description and throughout the claims which follow, "a," "an," and "the" include plural references unless the context clearly dictates otherwise. Also, as used in this description and throughout the claims which follow, the meaning of "in" includes "in" and "on," unless the context clearly dictates otherwise.
[0087]
[0101] The above description illustrates various embodiments, along with examples of how aspects of some embodiments may be implemented. The above examples and embodiments should not be considered the only embodiments, but are presented to illustrate the flexibility and advantages of some embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations, and equivalents may be used without departing from the scope of the invention as defined by the claims. The following is a summary of the claims as originally filed: [C1] 1. A method comprising: receiving, by a computing device, a file for transcoding, wherein a timing requirement is associated with the transcoding of the file; generating, by the computing device, a prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing, by the computing device, the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting, by the computing device, the transcoding configuration for configuring the transcoding system to transcode the file, where the file should be transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; A method for providing the above. [C2] The method of claim C1, wherein the timing requirement is a time limit for transcoding the file. [C3] Generating the prediction of the timing estimate includes: extracting features of said file; using the characteristics and a target configuration to predict the timing estimate; The method of claim C1, comprising: [C4] Generating the prediction of the timing estimate includes: extracting features of said file; using the characteristics and the set of target configurations to predict the timing estimates for each of the set of target configurations; The method of claim C1, comprising: [C5] The method of claim C1, wherein a target configuration in the set of target configurations is used by the transcoding system to transcode the file. [C6] Analyzing the timing estimates and the timing requirements includes: comparing timing estimates for a target configuration with the timing requirements; determining whether the file can be transcoded to meet the timing requirements; The method of claim C1, comprising: [C7] Analyzing the timing estimates and the timing requirements includes: outputting an indication of whether the file can be transcoded to meet the timing requirements. The method of C6, comprising: [C8] Outputting the configuration includes: determining, based on said analyzing, one or more of said set of target configurations to use to transcode said file; The method of claim C1, comprising: [C9] The method of C8, wherein the one or more of the set of target configurations is based on the transcoding of a target configuration satisfying the timing requirement. [C10] The method of claim 8, wherein a first portion of the set of target configurations is selected for publication at a first publication time, the publication being when a transcoded file may be requested for delivery to a device. [C11] The method of C10, wherein a second portion of the set of target configurations is selected for publication at a second publication time, the second publication time being later than the first publication time. [C12] Outputting the transcoding configuration includes: selecting a target configuration that does not meet the timing requirement; determining a plurality of presets for the target configuration; determining a plurality of timing estimates based on the plurality of presets, where the plurality of timing estimates are used to select one of the presets in the plurality of presets to use in the transcoding configuration; and The method of claim C1, comprising: [C13] Determining the plurality of timing estimates includes: generating the plurality of timing estimates based on the plurality of presets for a target configuration, where the presets affect a transcoding time for the file; The method of claim 12, comprising: [C14] Generating the prediction of the timing estimate includes: generating a first prediction of a first timing estimate for a first type of computing resource; generating a second prediction of a second timing estimate for a second type of computing resource; using the first timing estimate and the second timing estimate to select one of the first type of computing resource and the second type of computing resource for transcoding a target configuration; The method of claim C1, comprising: [C15] Using the first timing estimate and the second timing estimate includes: allocating a first target configuration of the set of target configurations to a computing resource of the first type in the configuration; allocating a second target configuration of the set of target configurations to the second type of computing resource in the configuration; The method of claim 14, comprising: [C16] the first type of computing resource is associated with a first transcoder used to transcode the file; the second type of computing resource is associated with a second transcoder used to transcode the file; The method according to C14. [C17] Generating the prediction of the timing estimate includes: The method of C1, comprising generating the prediction of the timing estimate for a portion of the file. [C18] A non-transitory computer-readable storage medium having stored thereon computer-executable instructions that, when executed by a computing device, cause the computing device to: receiving a file for transcoding, where a timing requirement is associated with the transcoding of the file; generating the prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting the transcoding configuration for configuring the transcoding system to transcode the file, where the file should be transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; 23. A non-transitory computer-readable storage medium operable to: [C19] Outputting the configuration selecting a target configuration that does not meet the timing requirement; determining a plurality of presets for the target configuration; determining a plurality of timing estimates based on the plurality of presets, wherein the plurality of timing estimates are used to select one of the presets in the plurality of presets to use in the transcoding configuration; and 19. A non-transitory computer-readable storage medium as described in C18, comprising: [C20] 1. An apparatus comprising: one or more computer processors; receiving a file for transcoding, where a timing requirement is associated with the transcoding of the file; generating the prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting the transcoding configuration for configuring the transcoding system to transcode the file, where the file should be transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; a computer-readable storage medium comprising instructions for controlling the one or more computer processors to be operable to perform the steps of: An apparatus comprising:
Claims
1. 1. A method comprising: receiving, by a computing device, a file for transcoding, wherein a timing requirement is associated with the transcoding of the file; generating, by the computing device, a prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing, by the computing device, the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting, by the computing device, the transcoding configuration for configuring the transcoding system to transcode the file, the file being transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; A method for providing the above.
2. The method of claim 1 , wherein the timing requirement is a time limit for transcoding the file.
3. Generating the prediction of the timing estimate includes: extracting features of said file; using the characteristics and a target configuration to predict the timing estimate; The method of claim 1 , comprising:
4. Generating the prediction of the timing estimate includes: extracting features of said file; using the characteristics and the set of target configurations to predict the timing estimates for each of the set of target configurations; The method of claim 1 , comprising:
5. The method of claim 1 , wherein a target configuration in the set of target configurations is used by the transcoding system to transcode the file.
6. Analyzing the timing estimates and the timing requirements includes: comparing a timing estimate for a target configuration to the timing requirements; determining whether the file can be transcoded to meet the timing requirements; The method of claim 1 , comprising:
7. Analyzing the timing estimates and the timing requirements includes: outputting an indication of whether the file can be transcoded to meet the timing requirements. The method of claim 6 comprising:
8. Outputting the transcoding configuration includes: determining, based on said analyzing, one or more of the set of target configurations to use to transcode the file; The method of claim 1 , comprising:
9. The method of claim 8 , wherein the one or more of the set of target configurations is based on the transcoding of a target configuration satisfying the timing requirement.
10. 10. The method of claim 8, wherein a first portion of the set of target configurations is selected for publication at a first publication time, the publication being a time when a transcoded file is available for request for delivery to a device.
11. The method of claim 10 , wherein a second portion of the set of target configurations is selected for publication at a second publication time, the second publication time being later than the first publication time.
12. Outputting the transcoding configuration includes: selecting a target configuration that does not meet the timing requirement; determining a plurality of presets for the target configuration; determining a plurality of timing estimates based on the plurality of presets, the plurality of timing estimates being used to select one of the presets in the plurality of presets to use in the transcoding configuration; The method of claim 1 , comprising:
13. Determining the plurality of timing estimates includes: generating the plurality of timing estimates based on the plurality of presets for a target configuration, the presets affecting a transcoding time for the file; The method of claim 12 comprising:
14. Generating the prediction of the timing estimate includes: generating a first prediction of a first timing estimate for a first type of computing resource; generating a second prediction of a second timing estimate for a second type of computing resource; using the first timing estimate and the second timing estimate to select one of the first type and the second type of computing resources for transcoding a target configuration; The method of claim 1 , comprising:
15. Using the first timing estimate and the second timing estimate includes: allocating a first target configuration of the set of target configurations to the first type of computing resource in the transcoding configuration; allocating a second target configuration of the set of target configurations to the second type of computing resource in the transcoding configuration; The method of claim 14 comprising:
16. the first type of computing resource is associated with a first transcoder used to transcode the file; the second type of computing resource is associated with a second transcoder used to transcode the file; The method of claim 14.
17. Generating the prediction of the timing estimate includes: The method of claim 1 , comprising generating the prediction of the timing estimate for a portion of the file.
18. A non-transitory computer-readable storage medium having stored thereon computer-executable instructions that, when executed by a computing device, cause the computing device to: receiving a file for transcoding, wherein a timing requirement is associated with the transcoding of the file; generating a prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting the transcoding configuration for configuring the transcoding system to transcode the file, the file being transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; 23. A non-transitory computer-readable storage medium operable to:
19. Outputting the transcoding configuration includes: selecting a target configuration that does not meet the timing requirement; determining a plurality of presets for the target configuration; determining a plurality of timing estimates based on the plurality of presets, the plurality of timing estimates being used to select one of the presets in the plurality of presets to use in the transcoding configuration; 20. The non-transitory computer readable storage medium of claim 18, comprising:
20. An apparatus comprising: one or more computer processors; receiving a file for transcoding, wherein a timing requirement is associated with the transcoding of the file; generating a prediction of a timing estimate based on a set of target configurations and characteristics of the file, where a target configuration in the set of target configurations is associated with a transcoding setting; analyzing the timing estimates and the timing requirements for the set of target configurations to determine a transcoding configuration of a transcoding system; outputting the transcoding configuration for configuring the transcoding system to transcode the file, the file being transcoded using at least a portion of the set of target configurations based on configuring the transcoding system; a computer-readable storage medium comprising instructions for controlling the one or more computer processors to be operable to perform the steps of: An apparatus comprising:
Citation Information
Patent Citations
Media content distribution and playback
JP2021514167A
Adaptive transcoding of profile ladder for videos
JP2022074118A
Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media
JP2022503419A
Method for allocating and scheduling task for maximizing video quality of transcoding server using heterogeneous processors
US20210329279A1