Data transmission method and device

By using the bandwidth prediction model on the server side to predict future bandwidth and send it to the player, the problem of inaccurate bandwidth prediction in online streaming media playback is solved, and the experience quality of streaming media playback is improved.

CN119906638APending Publication Date: 2025-04-29HUAWEI TECH CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311403089.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-10-26
Publication Date
2025-04-29

AI Technical Summary

Technical Problem

The prior art is difficult to accurately obtain network bandwidth prediction values ​​in online streaming media playback, which affects the playback effect.

Method used

By using the bandwidth prediction model to predict future bandwidth based on the session link on the server side, the accuracy of bandwidth prediction is improved, and the prediction value is sent to the player.

Benefits of technology

Improves the accuracy of bandwidth prediction, allowing the player to select the appropriate bit rate based on more accurate bandwidth prediction values, thereby improving the experience quality of streaming media playback.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119906638A_ABST
    Figure CN119906638A_ABST
Patent Text Reader

Abstract

The invention discloses a data transmission method and device, and relates to the field of communication. The method is executed by a server, the server is used for sending multimedia data to a player through a session link between the player and the server, and the method comprises the following steps: determining a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period; the first time period is before the second time period; and sending the bandwidth prediction value to the player. The method and the device are used for obtaining the bandwidth prediction value more accurately so as to improve the playing effect of the data.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communications, and in particular to a data transmission method and device. Background Art

[0002] In the data transmission scenario, the current mainstream transmission technology is based on the hypertext transfer protocol (HTTP) to achieve online streaming media playback, which is mainly composed of HTTP adaptive streaming (HAS) technology and adaptive bit rate (ABR) technology. Among them, the device deployed with the ABR algorithm can sense the changes in the network environment or automatically make reasonable bit rate adjustments according to the player status to improve the user's online streaming media viewing experience quality.

[0003] Since the signals that the ABR algorithm relies on mainly include network bandwidth prediction value, player buffer length, playback delay and other information, and for applications with small playback buffer capacity such as live video, network bandwidth prediction value is the most important decision-making basis, based on this, how to accurately obtain network bandwidth prediction value and improve online streaming media playback effect is a problem that needs to be solved at present. Summary of the invention

[0004] The present application provides a data transmission method and device for more accurately obtaining a bandwidth prediction value to improve the data playback effect.

[0005] In order to achieve the above-mentioned purpose, this application adopts the following technical solution.

[0006] In a first aspect, an embodiment of the present application provides a data transmission method, which is executed by a server, and the server is used to send multimedia data to a player through a session link between the player and the server, including: determining a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period; the first time period is before the second time period; and sending the bandwidth prediction value to the player.

[0007] In the above method, since the network data of the session link in the historical time period (i.e., the first time period) belongs to the underlying data generated in the data transmission process of the multimedia data, the server can improve the accuracy of the bandwidth prediction value when performing bandwidth prediction on the session link in a subsequent period of time in the future (i.e., the second time period) based on the network data in the first time period. In this way, after the bandwidth prediction value is subsequently sent to the player, the player can play multimedia data that is more in line with the current state of the player in the second time period directly according to the bandwidth prediction value from the server without having to perform bandwidth prediction itself, thereby effectively improving the data playback effect.

[0008] In one implementation, determining a bandwidth prediction value of a session link in a second time period based on network data of a session link in a first time period includes: acquiring network data of the session link in the first time period; acquiring historical bandwidth measurement values ​​respectively corresponding to M historical data; the historical data is a segment of multimedia data played in the first time period; M is a positive integer; and predicting the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values, and a bandwidth prediction model to obtain a bandwidth prediction value.

[0009] Through the above implementation, the trained bandwidth prediction model can be used to accurately predict the bandwidth of the session link in the second time period based on the network data and M historical bandwidth measurement values.

[0010] In one implementation, historical bandwidth measurement values ​​corresponding to M historical data are obtained, including: obtaining state parameters of a sending buffer of data j in a protocol stack transport layer from a data entry corresponding to a session link; data j is any historical data among the M historical data; j is a positive integer; based on the state parameters, a data packet batch of data j is identified; based on the identified data packet batch, a historical bandwidth measurement value corresponding to data j is determined.

[0011] In the above implementation, since the status parameters of the protocol stack transport layer send buffer (for example, the length of the TCP send buffer, the sending and confirmation time of the data packet, etc.) belong to the underlying data linked in the protocol stack, and these underlying data are generated in the data transmission process (for example, the TCP / QUIC sending process), and since these underlying data cannot be directly obtained by the player, this bandwidth measurement method based on the server send buffer status parameters can effectively improve the accuracy of bandwidth measurement.

[0012] In one implementation, based on the identified data packet batches, determining the historical bandwidth measurement value corresponding to data j includes: based on the batch filtering condition, filtering the identified data packet batches to obtain X data packet batches; the batch filtering condition is used to filter the data packet batches whose data blocks do not reach the size of the current sending window; X is a positive integer; based on the X data packet batches, obtaining the historical bandwidth measurement value corresponding to data j.

[0013] In the above implementation, the server can use batch filtering conditions to filter the identified batches of data packets, thereby effectively reducing measurement noise and improving the accuracy of bandwidth measurement.

[0014] In one implementation, based on X data packet batches, a historical bandwidth measurement value corresponding to data j is obtained, including: determining a confirmation character rate corresponding to data packet batch k based on the number of bytes of data packet batch k and a confirmation packet time difference of data packet batch k; data packet batch k is any data packet batch among the X data packet batches; k is a positive integer; the confirmation packet time difference is a difference between a first moment and a second moment; the first moment is a confirmation character packet arrival moment of the last byte of data packet batch k; the second moment is a confirmation character packet arrival moment of the first byte of data packet batch k; when the confirmation character rates corresponding to the X data packet batches are obtained, the historical bandwidth measurement value corresponding to data j is obtained based on the X confirmation character rates.

[0015] In the above implementation, the server calculates the confirmation character rate based on each data packet batch, which can effectively eliminate idle time slices and thus improve the accuracy of bandwidth measurement.

[0016] In one implementation, based on network data, M historical bandwidth measurement values, and a bandwidth prediction model, predicting the bandwidth of a session link in a second time period to obtain a bandwidth prediction value includes: inputting the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, predicting the bandwidth of the session link in the second time period through the bandwidth prediction model to obtain a first prediction value and a second prediction value; the first prediction value is related to a bandwidth mutation amplitude in the second time period, and the second prediction value is related to a bandwidth instantaneous fluctuation amplitude in the second time period; and determining the bandwidth prediction value according to the first prediction value and the second prediction value.

[0017] In the above implementation, the first prediction value is related to the bandwidth mutation amplitude, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude. This means that the two prediction values ​​obtained by the bandwidth prediction model can detect different fluctuation conditions. When the first prediction value and the second prediction value are subsequently combined to determine the final bandwidth prediction value, accurate prediction of the bandwidth can be achieved.

[0018] In one implementation, sending the bandwidth prediction value to the player includes: sending a Hypertext Transfer Protocol (HTTP) message to the player; and including the bandwidth prediction value in a response header of the HTTP message.

[0019] Through the above implementation, it is possible to transmit bandwidth prediction values ​​using HTTP messages, thereby receiving more accurate bandwidth prediction values ​​to improve the data playback effect.

[0020] In one implementation, if the bandwidth prediction value is determined after receiving a first content playback request sent by the player, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is any segment of multimedia data.

[0021] Through the above implementation, the server does not need to additionally receive a request from the player for predicting the bandwidth. Instead, after receiving the first content playback request for the first data, the server can predict the bandwidth of the session link in the second time period, thereby effectively reducing network overhead.

[0022] In one implementation, the multimedia data is video data or audio data.

[0023] Through the above implementation, it is possible to play video data or audio data using the optimization method of bandwidth feedback, thereby effectively improving the video playback effect or audio playback effect.

[0024] In a second aspect, an embodiment of the present application provides a data transmission method, which is executed by a player, and the player is used to obtain and play multimedia data through a session link between the player and a server, including: receiving a message from a server; the message includes a bandwidth prediction value of the session link in a second time period; based on the bandwidth prediction value and status information of the player, determining a first bit rate of second data in the multimedia data; the second data is data played in the second time period; according to the first bit rate, sending a second content playback request to the server; the second content playback request is used to request second data matching the first bit rate.

[0025] In the above method, the player can receive the bandwidth prediction value from the server. When the server has strong computing power, the bandwidth prediction value received by the player from the server is more accurate than the bandwidth prediction value obtained by the player itself. In this way, when combined with its own status information, a more appropriate bit rate can be determined later, thereby effectively improving the data playback effect.

[0026] In one implementation, the message is a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message.

[0027] Through the above implementation, it is possible to transmit bandwidth prediction values ​​using HTTP messages, thereby receiving more accurate bandwidth prediction values ​​to improve the data playback effect.

[0028] In one implementation, if the message is received after the player sends a first content playback request to the server, the information body of the HTTP message is also used to carry the first data corresponding to the first content playback request; the first data is the previous data played before the second data.

[0029] Through the above implementation, the player does not need to send an additional request to the server for predicting the bandwidth. Instead, when obtaining the first data based on the first content playback request, the player can also receive the bandwidth prediction value of the session link in the second time period returned by the server, which can effectively reduce network overhead.

[0030] In one implementation method, the multimedia data is video data or audio data.

[0031] Through the above implementation, it is possible to play video data or audio data using the optimization method of bandwidth feedback, thereby effectively improving the video playback effect or audio playback effect.

[0032] In a third aspect, an embodiment of the present application provides a data transmission device, which is applied to a server, and the server is used to send multimedia data to a player through a session link between the player and the server, including: a processing unit, which is used to determine a bandwidth prediction value of a session link in a second time period based on network data of the session link in a first time period; the first time period is before the second time period; and a transceiver unit, which is used to send the bandwidth prediction value to the player.

[0033] In one implementation, a processing unit is used to determine a bandwidth prediction value of a session link in a second time period based on network data of the session link in a first time period, and includes: a processing unit, specifically used to obtain network data of the session link in the first time period; a processing unit, specifically used to obtain historical bandwidth measurement values ​​respectively corresponding to M historical data; the historical data is a segment of multimedia data played in the first time period; M is a positive integer; and a processing unit, specifically used to predict the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values, and a bandwidth prediction model to obtain a bandwidth prediction value.

[0034] In one implementation, a processing unit is specifically used to obtain historical bandwidth measurement values ​​corresponding to M historical data, including: a processing unit is specifically used to obtain a state parameter of a sending buffer of data j in a protocol stack transport layer from a data entry corresponding to a session link; data j is any historical data among the M historical data; j is a positive integer; a processing unit is specifically used to identify a data packet batch of data j based on the state parameter; a processing unit is specifically used to determine a historical bandwidth measurement value corresponding to data j based on the identified data packet batch.

[0035] In one implementation, a processing unit is specifically used to determine a historical bandwidth measurement value corresponding to data j based on an identified data packet batch, including: a processing unit is specifically used to filter the identified data packet batch based on a batch filtering condition to obtain X data packet batches; the batch filtering condition is used to filter data packet batches whose data blocks do not reach the size of a current sending window; X is a positive integer; and a processing unit is specifically used to obtain a historical bandwidth measurement value corresponding to data j based on the X data packet batches.

[0036] In one implementation, a processing unit is used to obtain a historical bandwidth measurement value corresponding to data j based on X data packet batches, including: a processing unit is specifically used to determine a confirmation character rate corresponding to data packet batch k based on the number of bytes of data packet batch k and a confirmation packet time difference of data packet batch k; data packet batch k is any one of the X data packet batches; i is a positive integer; the confirmation packet time difference is a difference between a first moment and a second moment; the first moment is a confirmation character packet arrival moment of the last byte of data packet batch k; the second moment is a confirmation character packet arrival moment of the first byte of data packet batch k; the processing unit is specifically used to obtain a historical bandwidth measurement value corresponding to data j based on the X confirmation character rates when obtaining the confirmation character rates corresponding to the X data packet batches respectively.

[0037] In one implementation, a processing unit is used to predict the bandwidth of a session link in a second time period based on network data, M historical bandwidth measurement values, and a bandwidth prediction model to obtain a bandwidth prediction value, including: a processing unit is specifically used to input the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, and predict the bandwidth of the session link in the second time period through the bandwidth prediction model to obtain a first prediction value and a second prediction value; the first prediction value is related to the bandwidth mutation amplitude within the second time period, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude within the second time period; the processing unit is specifically used to determine the bandwidth prediction value according to the first prediction value and the second prediction value.

[0038] In one implementation, the transceiver unit is specifically used to send a bandwidth prediction value to a player, including: a transceiver unit is specifically used to send a Hypertext Transfer Protocol HTTP message to the player; a response header of the HTTP message includes the bandwidth prediction value.

[0039] In one implementation, if the bandwidth prediction value is determined after receiving a first content playback request sent by a player, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is any piece of data in the multimedia data;

[0040] In one implementation, the multimedia data is video data or audio data.

[0041] In a fourth aspect, an embodiment of the present application provides a data transmission device, which is applied to a player, and the player is used to obtain and play multimedia data through a session link between the player and a server, including: a transceiver unit, which is used to receive a message from the server; the message includes a bandwidth prediction value of the session link in a second time period; a processing unit, which is used to determine a first bit rate of second data in the multimedia data based on the bandwidth prediction value and status information of the player; the second data is data played in the second time period; the transceiver unit is also used to send a second content playback request to the server according to the first bit rate; the second content playback request is used to request second data matching the first bit rate.

[0042] In one implementation, the message is a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message.

[0043] In one implementation, if the message is received after the player sends a first content playback request to the server, the information body of the HTTP message is also used to carry the first data corresponding to the first content playback request; the first data is the previous data played before the second data.

[0044] In one implementation, the multimedia data is video data or audio data.

[0045] In a fifth aspect, an embodiment of the present application provides a data transmission device, comprising a memory and a processor, the memory being used to store computer instructions, and the processor being used to call and execute computer instructions from the memory to implement a method as in the first aspect or any one of the implementations of the first aspect, or to implement a method as in the second aspect or any one of the implementations of the second aspect.

[0046] In a sixth aspect, an embodiment of the present application provides a computer-readable storage medium, in which instructions are stored. When the instructions are executed on a processor, a method as in the first aspect or any one of the implementations in the first aspect is implemented, or a method as in the second aspect or any one of the implementations in the second aspect is implemented.

[0047] In the seventh aspect, an embodiment of the present application provides a computer program product, which includes instructions. When the instructions are executed on a processor, the method is implemented as in the first aspect or any one of the implementations in the first aspect, or the method is implemented as in the second aspect or any one of the implementations in the second aspect.

[0048] The technical effects produced by any implementation method in the above-mentioned second to seventh aspects and each aspect can refer to the above-mentioned first aspect and the corresponding implementation method in the first aspect, and the repetitive parts will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS

[0049] Figure 1 A schematic diagram of a network architecture provided in an embodiment of the present application;

[0050] Figure 2 It is a schematic diagram of a framework for bandwidth prediction provided by an embodiment of the present application;

[0051] Figure 3 A method for performing data transmission provided in an embodiment of the present application is shown in FIG. Figure 1 ;

[0052] Figure 4 A method for performing data transmission provided in an embodiment of the present application is shown in FIG. Figure 2 ;

[0053] Figure 5 This is a schematic diagram of bandwidth measurement scenarios at different levels provided by an embodiment of the present application;

[0054] Figure 6 This is a comparison diagram of the actual bandwidth and the effects predicted by various methods provided in the embodiment of the present application;

[0055] Figure 7 This is an interactive schematic diagram of data transmission provided by an embodiment of the present application;

[0056] Figure 8 is a schematic diagram of a method for performing data transmission provided by an embodiment of the present application;

[0057] Fig. 9 This is a schematic diagram of a data transmission device provided in an embodiment of the present application. Figure 1 ;

[0058] Fig.10 A schematic diagram of a data transmission device provided in an embodiment of the present application Figure 2 . DETAILED DESCRIPTION

[0059] The technical solutions in the embodiments of the present application will be described below in conjunction with the accompanying drawings in the embodiments of the present application. Among them, in order to facilitate the clear description of the technical solutions in the embodiments of the present application, in the embodiments of the present application, the words "first", "second" and the like are used to distinguish the same items or similar items with substantially the same functions and effects. It can be understood by those skilled in the art that the words "first", "second" and the like do not limit the quantity and execution order, and the words "first", "second" and the like do not limit necessarily different. At the same time, in the embodiments of the present application, the words "exemplary" or "for example" are used to indicate examples, illustrations or explanations. Any embodiment or design described as "exemplary" or "for example" in the embodiments of the present application should not be interpreted as being more preferred or more advantageous than other embodiments or design solutions. Specifically, the use of words such as "exemplary" or "for example" is intended to present related concepts in a concrete manner for ease of understanding.

[0060] To facilitate understanding of the technical solutions provided by the embodiments of the present application, an introduction to the related technologies is first given:

[0061] In the current technical solution, in order to make the online streaming media playback experience better, it is necessary to solve the problem of ABR algorithm and bandwidth prediction. The traditional solution is often to deploy bandwidth prediction and ABR algorithm on the same end. For example, when the ABR algorithm and bandwidth prediction service are both deployed on the player side, although this deployment method is easy to promote, due to the limited computing resources of the player and the limited recorded network data, it is difficult to introduce complex and high-precision bandwidth prediction, which seriously affects the accuracy of bandwidth prediction, resulting in poor playback effect. For another example, when the ABR algorithm and bandwidth prediction server are both deployed on the server side, this method is not only not conducive to promotion, but also the server needs to obtain the current status information of the player (for example, playback cache, delay information, and smoothness caused by bit rate switching, etc.), but because the player's status information changes too quickly, it takes a long time to feedback to the server, which means that the state of the player received by the server may have changed, resulting in the bit rate selected by the ABR algorithm is not optimal, so as to affect the playback effect.

[0062] In view of the above situation, an embodiment of the present application provides a data transmission method, in which a session link between a server and a player can be used to transmit multimedia data. On the one hand, a bandwidth prediction service is deployed on the server side, that is, based on the network data of the session link in the first time period (historical time period), the bandwidth prediction value of the session link in the second time period (future time period) is determined, and the bandwidth prediction value is sent to the player. On the other hand, an ABR algorithm is deployed on the player, that is, after receiving the bandwidth prediction value from the server, the first bit rate of the second data in the multimedia data can be determined in combination with the bandwidth prediction value and the status information of the player. The second data here refers to a certain segment of the multimedia data played in the second time period.

[0063] This means that the embodiment of the present application can deploy the bandwidth prediction service and the ABR algorithm separately, that is, deploy the bandwidth prediction server on the server and deploy the ABR algorithm on the player. Since the bandwidth prediction value in the implementation of this application is sent to the player by the server. In this way, when the server has strong computing power, a more accurate bandwidth prediction value can be determined to send to the player; in addition, after receiving the bandwidth prediction value from the server, the player can use its own status information and more accurate bandwidth prediction value to determine a more appropriate bit rate, thereby effectively improving the playback effect of the data.

[0064] It is understandable that the server in the embodiment of the present application can mobilize the bandwidth prediction model when predicting the bandwidth of the second time period. Among them, the bandwidth prediction model can be a network model trained for predicting the bandwidth of a certain time period in the future based on the network data of the historical session link and the bandwidth measurement value of each segment of the multimedia data transmitted in the historical session link. This bandwidth prediction method based on the bandwidth prediction model involves the machine learning (ML) direction in the field of artificial intelligence (AI).

[0065] Among them, so-called artificial intelligence is the theory, method, technology and application system that uses digital computers or machines controlled by digital computers to simulate, extend and expand human intelligence, perceive the environment, acquire knowledge and use knowledge to obtain the best results. In other words, artificial intelligence is a comprehensive technology in computer science that attempts to understand the essence of intelligence and produce a new intelligent machine that can respond in a similar way to human intelligence. Artificial intelligence is to study the design principles and implementation methods of various intelligent machines so that machines have the functions of perception, reasoning and decision-making.

[0066] Artificial intelligence technology is a comprehensive discipline that covers a wide range of fields, including both hardware-level and software-level technologies. Basic artificial intelligence technologies generally include sensors, dedicated artificial intelligence chips, cloud computing, distributed storage, big data processing technology, pre-trained model technology, operation / interaction systems, mechatronics, etc. Among them, pre-trained models are also called large models and basic models. After fine-tuning, they can be widely used in downstream tasks in various major directions of artificial intelligence. Artificial intelligence software technology mainly includes computer vision technology, speech processing technology, natural language processing technology, and machine learning / deep learning.

[0067] Machine learning is a multi-disciplinary subject, involving probability theory, statistics, approximation theory, convex analysis, algorithm complexity theory and other disciplines. It specializes in studying how computers simulate or implement human learning behavior to acquire new knowledge or skills and reorganize existing knowledge structures to continuously improve their performance. Machine learning is the core of artificial intelligence and the fundamental way to make computers intelligent. Its applications are spread across all areas of artificial intelligence. Machine learning and deep learning usually include artificial neural networks, belief networks, reinforcement learning, transfer learning, inductive learning, and learning by teaching. The pre-trained model is the latest development of deep learning, which integrates the above technologies.

[0068] The following is an introduction to the network architecture of the data transmission method provided by the embodiment of the present application:

[0069] See also Figure 1 , Figure 1 Schematic diagram of a network architecture provided by an embodiment of the present application. Figure 1 As shown, the network architecture may include a server 100 and a terminal device cluster. The terminal device cluster may include one or more terminal devices, and the number of terminal devices is not limited here. Figure 1 As shown, the terminal device cluster may specifically include terminal device 111, terminal device 112, terminal device 113, ..., terminal device 114. Figure 1 As shown, terminal device 111, terminal device 112, terminal device 113, ..., terminal device 114 can be respectively connected to the server 100 through a network, so that each terminal device can exchange data with the server 100 through the network connection. The network connection here does not limit the connection method, and can be directly or indirectly connected through a wired communication method, directly or indirectly connected through a wireless communication method, or through other methods, which are not limited in this application.

[0070] Each terminal device in the terminal device cluster may include: a smart phone, a tablet computer, a laptop computer, a desktop computer, a smart speaker, a smart watch, a car terminal, a smart TV, and other smart terminals with data processing functions. Figure 1 Each terminal device in the terminal device cluster shown in the figure may be installed with an application client for playing multimedia data. When the application client runs in each terminal device, it may be respectively connected to the above Figure 1 The server 100 shown in the figure performs data interaction. The application client may include a social client, a multimedia client (e.g., a video client), an entertainment client (e.g., a game client), an information stream client, an education client, a live broadcast client, etc. The application client may be an independent client or an embedded sub-client integrated in a client (e.g., a social client, an education client, a multimedia client, etc.), which is not limited here.

[0071] like Figure 1 As shown, the server 100 in the embodiment of the present application can be the server corresponding to the application client. The server 100 can be an independent physical server, or a server cluster or distributed system composed of multiple physical servers, or a cloud server providing cloud computing services. Among them, the embodiment of the present application will not limit the number of servers.

[0072] It should be understood that the server 100 is deployed with a bandwidth prediction server, and when predicting the bandwidth of the future time period, it is necessary to use the underlying data of the session link in the protocol stack. To this end, the server 100 can implement the following functions through the link data management module:

[0073] 1. Collect session link status data from the network protocol stack. The status data may specifically include network data collected at the transport layer and other protocol stack status parameters. The network data here may be the relevant data extracted each time network feedback is received in the Transmission Control Protocol (TCP) or the transport layer protocol based on the User Datagram Protocol (Quick UDP Internet Connections, QUIC) stack, such as round-trip delay, instantaneous throughput, packet loss rate, congestion window value, etc. Other protocol stack status parameters may be status parameters of the send buffer at the transport layer of the protocol stack, such as the length of the TCP send buffer, the sending time and confirmation time of the data packet, etc.

[0074] 2. Manage the extracted state data in memory. For example, maintain state data in memory for each session link established with the server 100, including: creating a new data entry when the session link is established; collecting and updating the corresponding data entry during data transmission; and releasing the data entry when the session link is disconnected.

[0075] 3. Collect and persist the training data required for the bandwidth prediction model.

[0076] Exemplarily, after the server 100 establishes a session link with a player in a terminal device (e.g., terminal device 111), the server 100 can create a data entry corresponding to this session link, and then update the data entry corresponding to the current session link during subsequent data transmission, so that when the bandwidth of the future time period of this session link is predicted, the network data of the current session link and the state parameters of the protocol stack sending buffer can be quickly read from the data entry, thereby improving the bandwidth prediction rate. In addition, since these underlying data are generated during the TCP / QUIC transmission process and cannot be directly obtained by the player, the accuracy of bandwidth measurement and prediction on the player will inevitably be affected compared to that on the server.

[0077] It can be understood that, in actual application, the technical solutions provided in the embodiments of the present application can be applied to video transmission scenarios (for example, on-demand scenarios, video communication scenarios, live broadcast scenarios, etc.), or the technical solutions provided in the embodiments of the present application can be applied to other streaming media transmission scenarios, such as audio transmission scenarios (for example, online music playback scenarios, audio communication scenarios, etc.).

[0078] The data transmission method provided in the embodiment of the present application is introduced below in combination with the following specific scenarios:

[0079] In the video transmission scenario, the multimedia data transmitted through the session link is video data, and the server 100 at this time can be a video streaming server, which is used to send the video data to the player through the session link between the player and the server 100. Among them, the server can determine the bandwidth prediction value of the session link in the future period of time based on the network data of the session link in the historical time period (for example, the round-trip delay, packet loss rate, congestion window value, etc. of the last few video clips). For the convenience of distinction, the embodiment of the present application can refer to the historical time period of the session link as the first time period, and the future time period of the session link as the second time period, that is, the first time period here is before the second time period. Further, the server 100 can send the bandwidth prediction value to the player, so that the player can determine the bit rate of the video data segment played in the second time period based on the bandwidth prediction value and the status information of the player (for example, the length of the play buffer, the play delay, etc.).

[0080] In the audio transmission scenario, the multimedia data transmitted through the session link is audio data, and the server 100 may be an audio streaming server, which is used to send the audio data to the player through the session link between the player and the server 100. Similarly, the server may determine the bandwidth prediction value of the session link in the first time period based on the network data of the session link in the first time period. Further, the server 100 may send the bandwidth prediction value to the player, so that the player determines the bit rate of the audio data segment played in the second time period based on the bandwidth prediction value and the state information of the player.

[0081] It should be noted that the above two scenarios do not limit the scope of application of the data transmission method provided in the embodiment of the present application. The reason why the embodiment of the present application mainly introduces the technical solution by taking the above two scenarios as examples is to combine the implementation process of the technical solution with the actual scenario, so as to facilitate the understanding of the technical solution. In the actual application process, the solution provided in the embodiment of the present application can also be applied to other scenarios. For example, the data transmission method provided in the embodiment of the present application can also be applied to the transmission scheme of other types of multimedia data (for example, a large number of picture sets), which can be not limited in the embodiment of the present application.

[0082] For further information, see Figure 2 , Figure 2 FIG. 1 is a schematic diagram of a framework for bandwidth prediction provided by an embodiment of the present application. Figure 2 As shown, the implementation of the data transmission method provided in the embodiment of the present application requires the cooperation of three components, which may specifically include: a player deployed with an adaptive bit rate service (ie, an ABR algorithm), a server 100, and a bandwidth predictor located on the server 100.

[0083] The player may be a HAS-based player, and a session link for transmitting multimedia data is established between the player and the server 100 .

[0084] Among them, the server 100 can cut the multimedia data to be transmitted into segments of equal length based on the data transmission technology associated with the application scenario (for example, HTTP chunked transfer encoding under the HAS framework), and then further divide each segment into multiple smaller data blocks, which can be independently transmitted and decoded for playback.

[0085] For example, in a video-on-demand scenario, the server 100 may select a duration (e.g., 10 seconds) from a segmentation duration range (e.g., 4 seconds to 10 seconds) associated with the video-on-demand scenario, and segment a certain video data (i.e., multimedia data) with a playback duration of 120 minutes into 12 segments of equal duration, and then segment the corresponding segments according to the number of video frames in each segment to obtain a plurality of data blocks, wherein one data block may contain one frame of video.

[0086] For another example, in a live broadcast scenario, the server 100 may divide the live video data (i.e., multimedia data) into multiple segments of 5 seconds in sequence according to a segmentation time threshold associated with the live broadcast scenario (e.g., 5 seconds), and then divide the current segment according to the number of video frames included in the currently transmitted segment, thereby obtaining multiple data blocks.

[0087] The bandwidth predictor here can predict the bandwidth online for a given session link. The bandwidth predictor can be deployed on the server 100 or on another device independent of the server 100. The deployment method of the bandwidth predictor is not limited here. In addition, the bandwidth predictor can also be used to collect and use the bandwidth data of the historical session links in the server 100 to train and update a network model (i.e., bandwidth prediction model) for predicting the bandwidth in a certain time period in the future. The bandwidth data here can include the network data of the established session link (i.e., the historical session link) and the bandwidth measurement value of each segment of multimedia data transmitted in the historical session link.

[0088] Exemplarily, when the player requests to obtain a certain segment (first data, for example, data i in the multimedia data) in the multimedia data, it can generate a content playback request for the data i (i.e., a first content playback request), and then send the first content playback request to the server 100. In the embodiment of the present application, the content playback request for any segment can be a special HTTP request. For example, the content playback request for data i is special in that it can not only be used to instruct the server 100 to return the currently requested data i to the player, but also be used to instruct the server 100 to obtain the bandwidth prediction value of the session link in the future time period.

[0089] It is understandable that when the server 100 receives the first content playback request, it can send a bandwidth prediction request for the future time period to the bandwidth predictor, wherein the bandwidth prediction request can be an RPC request. Further, when the bandwidth predictor receives the bandwidth prediction request, it can determine the bandwidth prediction value of the session link in the second time period based on the network data of the session link in the first time period (for example, 12:30-1:00) and the bandwidth prediction model. Wherein, the first time period here is before the second time period. For example, if the playback time of each segment of the multimedia data is 5 seconds, and the playback time period corresponding to the data i is 1:00-1:05, then the first time period here can be the corresponding playback time period of the latest segments corresponding to the data i (for example, 12:30-1:00), and the second time period here can be the next time period after the playback time period of the data i (for example, 1:05-1:10). This means that the server 100 can accurately predict the bandwidth prediction value of the future time period through the network data of the historical time period.

[0090] At the same time, the server 100 can also obtain data i matching the playback parameters in the first content playback request, and send a message including the data i and the bandwidth prediction value to the player. Then, the player can quickly and accurately determine the bit rate of the second data (i.e., the first bit rate) by combining the bandwidth prediction value and the player's status information.

[0091] Furthermore, the player also needs to send a content playback request (i.e., a second content playback request) for the second data to the server 100 according to the first bit rate. The second content playback request can be used to request the second data that matches the first bit rate. The second data here refers to the data played in the second time period, that is, the next segment of data played after the data i. If the playback object corresponding to the player has no change operation on the progress of the multimedia data, then the second data here can be the next segment of data of the data i in the multimedia data (for example, data i+1); if the playback object performs a change operation on the progress of the multimedia data (for example, a fast forward operation or a rewind operation), then the second data here can be the data corresponding to the change operation. The change operation here can be a trigger operation performed on the progress of the multimedia data, and the trigger operation can include non-contact operations such as voice and gestures, and can also include contact operations such as clicks, long presses, and screen sliding, which will not be limited here.

[0092] For example, if data i is the 5th segment in the multimedia data, then when the playback object performs a fast-forward operation on the progress of the multimedia data, the second data here may be the data corresponding to the fast-forward operation (for example, the 10th segment in the multimedia data); and when the playback object performs a rewind operation on the progress of the multimedia data, the second data here may be the data corresponding to the rewind operation (for example, the 3rd segment in the multimedia data).

[0093] It can be seen that the embodiment of the present application can deploy the bandwidth prediction service on the server and deploy the ABR algorithm on the player. This deployment method is not only compatible with the existing HAS architecture, but also can introduce a more sophisticated bandwidth prediction method to improve the playback performance. For the player, the player sends a special HTTP request to the server 100, which will enable the player's ABR algorithm to request an external bandwidth prediction value (i.e., the bandwidth prediction value of the session link predicted by the server 100 in the future time period) as the input of the algorithm, thereby saving the player's computing resources and improving the accuracy of the bit rate selection. For the server, the server can expose an HTTP interface to the outside, and after an application accesses this interface, it can obtain the bandwidth predicted by the server for the future time period. This data transmission method not only improves the accuracy of bandwidth prediction, but also because the accuracy of the bandwidth prediction value is improved, it can calculate a more suitable bit rate, thereby effectively improving the playback effect of the data.

[0094] The specific implementation of using bandwidth feedback for data transmission between the server 100 and the player can be found in the following Figure 3-Figure 8 The corresponding embodiment method.

[0095] For further information, see Figure 3 , Figure 3 Schematic diagram of a method for data interaction provided by an embodiment of the present application. Figure 3 As shown, the method can be performed by the server 100 and a player having a session link established therewith, wherein the player here can be the above-mentioned Figure 1 A player in any terminal device shown. The method may at least include S101-S105:

[0096] S101 : The player sends a first content playback request for first data to the server 100 .

[0097] The first data is a segment that the player is requesting to play, and the segment may be any segment in the multimedia data. The multimedia data may be video data or audio data. The first content play request may carry play parameters, and the play parameters may include a segment number of the first data in the multimedia data and a bit rate of the first data (i.e., a second bit rate).

[0098] The terminal interface corresponding to the player may display a playback interface for playing multimedia data. If the player needs to play the first data corresponding to the i-th segment in the multimedia data within a certain time period (for example, 1:00-1:05), the player may generate a first content playback request for the first data based on the segment number of the first data in the multimedia data (for example, i) and the second bit rate of the first data (for example, 360P), and then send the first content playback request to the server 100.

[0099] It can be understood that if the first data is the first segment of multimedia data, the second bit rate can be the default bit rate set by the playback object corresponding to the player (for example, 480P) or the default bit rate configured by the development object corresponding to the player (for example, 480P); if the first data is not the first segment of multimedia data, the second bit rate can be determined by the player based on the bandwidth prediction value from the server 100 (that is, the bandwidth prediction value of the session link during the time period of playing the first data).

[0100] S102: The server 100 determines a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period.

[0101] The second time period is used to play the second data in the multimedia data. Specifically, the server 100 can obtain the network data of the session link in the first time period, and obtain the historical bandwidth measurement values ​​corresponding to the M historical data. The historical data here are the fragments of the multimedia data played in the first time period; M is a positive integer. Then, the server 100 can predict the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values ​​and the bandwidth prediction model to obtain the bandwidth prediction value. The first time period here is before the second time period.

[0102] Among them, the network data here is obtained from the data entry corresponding to the session link based on the link data management module and the link identifier corresponding to the session link; the network data can be the transport layer data collected each time in the TCP or QUIC protocol stack, which may specifically include the round-trip delay, packet loss rate, congestion window value, etc. of the most recent M fragments.

[0103] It can be seen that the two key steps of bandwidth prediction are to measure the historical bandwidth of the recent few segments and predict the future bandwidth. Among them, measuring the historical bandwidth of the recent few segments provides input for the algorithm for predicting future bandwidth. If the historical bandwidth measurement value is not accurate enough, this will seriously affect the prediction success rate of the bandwidth prediction value.

[0104] Take data j among M historical data as an example, where j is used to indicate the fragment number of the data in the multimedia data, and j is a positive integer. The server 100 can obtain the state parameters of the data j sending buffer in the protocol stack transport layer from the data entry corresponding to the session link. Among them, since the state parameters may include the length of the TCP sending buffer, the sending time and confirmation time of the data packet, etc., the server 100 can identify the data packet batch of data j based on the state parameters. Then the server 100 can determine the historical bandwidth measurement value corresponding to data j based on the identified data packet batch.

[0105] A data packet batch refers to a batch consisting of multiple data packets sent continuously within a certain period of time. For example, data j can be divided into two data blocks for transmission, which can specifically include data block K1 and data block K2. Data block K1 can correspond to three data packets (for example, data packet 1, data packet 2, and data packet 3), and data block K2 can correspond to two data packets (for example, data packet 3 and data packet 5). If the status parameters indicate that the confirmation time of data packet 1 is 12:20:15, the confirmation time of data packet 2 is 12:20:22, the confirmation time of data packet 3 is 12:20:23, the confirmation time of data packet 4 is 12:20:24, and the confirmation time of data packet 5 is 12:20:30, since there is an idle time slice between data packet 1 and data packet 2 (for example, 12:20:15-12:20:22), and there is an idle time slice between data packet 4 and data packet 5 (for example, 12:20:24-12:20:30), the server 100 can determine data packet 1 as the first data packet batch, data packet 2, data packet 3 and data packet 4 as the second data packet batch, and data packet 5 as the third data packet batch.

[0106] The method for determining the historical bandwidth measurement value here can refer to the following formulas (1)-(2):

[0107]

[0108] Among them, batch_k here can be used to represent the k-th data packet batch identified in a certain fragment of the multimedia data; k is a positive integer; sizeof(barch_k) can be used to represent the number of bytes corresponding to the k-th data packet batch; ACKintreval_k can be used to represent the confirmation packet time difference of the k-th data packet batch, that is, the difference between the arrival time (i.e., the first time) of the confirmation character packet of the last byte (i.e., Acknowledge character, referred to as ACK confirmation packet) and the arrival time (i.e., the second time) of the confirmation character packet of the first byte; rate_k can be used to represent the confirmation character rate (i.e., ACK rate) corresponding to the k-th data packet batch.

[0109]

[0110] Wherein, n may be used to represent the total number of data packet batches participating in the bandwidth measurement calculation.

[0111] In order to effectively reduce measurement noise and improve the accuracy of bandwidth measurement, the server 100 can also obtain batch filtering conditions to filter the identified data packet batches to obtain X data packet batches. The batch filtering conditions here can be used to filter data packet batches whose data blocks do not reach the size of the current sending window; X is a positive integer less than or equal to Y. Further, the server 100 can obtain the historical bandwidth measurement value corresponding to data j based on the X data packet batches.

[0112] For example, taking any one of the X data packet batches (e.g., data packet batch k) as an example, the server 100 can determine the confirmation character rate corresponding to data packet batch k based on the above formula (1), the number of bytes of data packet batch k, and the confirmation packet time difference of data packet batch k. The confirmation packet time difference can be the difference between the first moment and the second moment; the first moment is the arrival moment of the confirmation character packet of the last byte of data packet batch k; the second moment is the arrival moment of the confirmation character packet of the first byte of data packet batch k. Then, when the confirmation character rates corresponding to the X data packet batches are obtained, the historical bandwidth measurement value corresponding to data j is obtained based on the X confirmation character rates and the above formula (2).

[0113] Optionally, if the number of data packet batches identified by the server 100 is small or the measurement accuracy requirement is not high, the server 100 may also directly determine the identified data packet batches as all data packet batches participating in the bandwidth measurement calculation, that is, there is no need to filter the identified data packet batches, and then the historical bandwidth measurement value corresponding to data j can be determined based on the above formula (1) and formula (2). Exemplarily, if the number Y of identified data packet batches is 7, the server 100 can determine the confirmation character rates corresponding to the 7 data packet batches respectively based on formula (1); and determine the historical bandwidth measurement value corresponding to data j based on the 7 confirmation character rates and the above formula (2).

[0114] For further understanding, please refer to Figure 4 , Figure 4 1 is a schematic diagram of a bandwidth measurement scenario at different levels provided by an embodiment of the present application. The server 100 in the embodiment of the present application can use block encoding in the application layer (for example, HTTP layer) to divide a certain segment of multimedia data into multiple data blocks and send the multimedia data in data blocks. In the embodiment of the present application, the server 100 can generate a bandwidth measurement value for each segment of the multimedia data. Here, the segment data j in the multimedia data can be taken as an example. Figure 4As shown, the number of data blocks divided by data j can be 8 for example, which can specifically include data block K1, data block K2, data block K3, data block K4, data block K5, data block K6, data block K7 and data block K8. Figure 4 The color, line, and size of the data blocks are only used to distinguish different data blocks and have no special meaning.

[0115] It is understandable that one data block can correspond to multiple data packets. In the video transmission scenario, the video segment of data j can be divided into 8 video chunks for transmission, each of which can include a frame of video, and there is idle transmission between chunks. However, due to the limitations of congestion control at the transport layer (e.g., TCP layer), the transmission of data packets is not one-to-one corresponding to data blocks. For example, if data block K1 includes 5 data packets, and the size of data block K1 exceeds the initial transmission window, then the first 4 data packets in the data block K1 may be sent as the first batch, and the remaining data packet may be sent as the second batch with the data packet of data block K2. In other words, the data packets under the same data block are not sent in one batch.

[0116] When the server 100 measures the bandwidth of data j, the server 100 can obtain the state parameters of the data j sending buffer in the protocol stack transport layer from the data entry corresponding to the session link based on the link identifier corresponding to the session link. Since the state parameters may include the length of the TCP sending buffer, the sending time and confirmation time of the data packet, etc., the server 100 can identify the data packet batch of data j based on the state parameters. Figure 4 As shown, the data packet batches identified by the server 100 may include data packet batch B1, data packet batch B2, data packet batch B3, data packet batch B4, data packet batch B5, data packet batch B6 and data packet batch B7. Among them, data packet batch B1 may be used to represent the first batch.

[0117] In order to effectively reduce measurement noise, the server 100 can remove batches with fewer data packets from the identified 7 data packet batches based on the batch filtering condition, and calculate the corresponding ACK rate based on each data packet batch, so as to eliminate the idle time slices for sending. The batch filtering condition here can be used to filter abnormal batches, which refers to data packet batches whose data blocks do not reach the size of the current sending window.

[0118] For example, if the abnormal batch determined by the server 100 includes data packet batch B4 and data packet batch B6, the server 100 can filter the abnormal batch from the identified 7 data packet batches to obtain the remaining data packet batches. The remaining data packet batches can specifically include data packet batch B1, data packet batch B2, data packet batch B3, data packet batch B5 and data packet batch B7.

[0119] Taking data packet batch B1 as an example, the server 100 can determine the arrival time of the confirmation character packet of the last byte of data packet batch B1 as the first time, and determine the arrival time of the confirmation character packet of the first byte of data packet batch B1 as the second time from the state parameters, and then determine the difference between the first time and the second time as the confirmation packet time difference corresponding to the data packet batch B1. Then, the server 100 can determine the confirmation character rate of data packet batch B1 based on the above formula (1), the number of bytes of the data packet batch B1 and the confirmation packet time difference corresponding to the data packet batch B1. Similarly, the server 100 can also determine the confirmation character rate of data packet batch B2, the confirmation character rate of data packet batch B3, the confirmation character rate of data packet batch B5 and the confirmation character rate of data packet batch B7. It will not be described in detail here.

[0120] After obtaining the confirmation character rates corresponding to the five data packet batches, the server 100 can obtain the historical bandwidth measurement value corresponding to data j based on the five confirmation character rates, the number of bytes corresponding to the five data packet batches, and the bandwidth measurement strategy shown in the above formula (2) (for example, calculating the weighted average).

[0121] It can be seen that since the underlying data linked in the protocol stack (i.e., the status parameters of the protocol stack transport layer send buffer, for example, the length of the TCP send buffer, the sending and confirmation time of the data packet, etc.) is generated during the data transmission process (for example, the TCP / QUIC sending process), and these underlying data cannot be directly obtained by the player, determining the historical bandwidth measurement value based on these underlying data on the server 100 can not only improve the accuracy of the bandwidth measurement, but also improve the convenience of the bandwidth measurement.

[0122] It should be understood that when the M historical bandwidth measurement values ​​are obtained, the server 100 can predict the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values ​​and the bandwidth prediction model. The bandwidth prediction model called by the server 100 is a network model trained based on the network data of the historical session link and the bandwidth measurement value of each segment of multimedia data transmitted in the historical session link to predict the bandwidth of a certain time period in the future.

[0123] For further understanding, please refer to Figure 5 , Figure 5 This is a comparison chart of the actual bandwidth and the effects predicted by various methods provided by the embodiment of the present application. Figure 5 As shown, the effect comparison diagram in the embodiment of the present application is a distribution diagram drawn based on different bandwidth prediction methods within a time period of a certain session link (for example, the transmission time of the 590th segment and the 630th segment in the multimedia data), and may specifically include a distribution diagram corresponding to line L1, a distribution diagram corresponding to line L2, a distribution diagram corresponding to line L3, and a distribution diagram corresponding to line L4.

[0124] The distribution diagram corresponding to line L1 can be used to represent the transmission time of the 590th segment and the 630th segment in the multimedia data. Figure 4 The actual bandwidth value measured by the bandwidth measurement method shown; the distribution diagram corresponding to line L2 can be used to represent the bandwidth prediction value determined based on the learning model within the transmission time of the 590th segment and the 630th segment in the multimedia data; the distribution diagram corresponding to line L3 can be used to represent the instantaneous bandwidth prediction value obtained by performing data processing (e.g., sliding window averaging) on ​​the bandwidth measurement value based on a sequence model (e.g., time series model) within the transmission time of the 590th segment and the 630th segment in the multimedia data; the distribution diagram corresponding to line L4 can be used to represent the bandwidth prediction value determined by combining the sequence model and the learning model within the transmission time of the 590th segment and the 630th segment in the multimedia data.

[0125] It should be understood that by comparing the distribution graph corresponding to line L1 with the distribution graph corresponding to line L3, the sequence model can detect instantaneous fluctuations in bandwidth, but has a lag in predicting large changes in bandwidth; and by comparing the distribution graph corresponding to line L1 with the distribution graph corresponding to line L2, the learning-based model can identify large bandwidth mutations, but it is difficult to detect instantaneous bandwidth disturbed by real-time factors. Based on this, in order to improve the accuracy of bandwidth prediction in bit rate adaptive decision-making, the embodiment of the present application can use a hybrid model to predict future bandwidth changes, that is, by combining a learning-based model and a sequence-based model, to be more in line with the actual bandwidth measurement value.

[0126] When predicting the bandwidth in the second time period, the server 100 may input the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, and predict the bandwidth of the session link in the second time period through the bandwidth prediction model to obtain a first prediction value and a second prediction value. The first prediction value is related to the bandwidth mutation amplitude in the second time period, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude in the second time period. Then, the server 100 may determine the bandwidth prediction value according to the first prediction value and the second prediction value.

[0127] Exemplarily, the bandwidth prediction model deployed by the server 100 may include a first prediction model and a second prediction model. The first prediction model here may be a learning model for identifying bandwidth mutations, and the second prediction model may be a sequence model for detecting instantaneous bandwidth fluctuations. When predicting the bandwidth in the second time period, the server 100 may input the M historical bandwidth measurement values ​​together with the network data into the first prediction model, and predict the bandwidth of the session link in the second time period through the first prediction model to obtain a first prediction value; input the M historical bandwidth measurement values ​​into the second prediction model, and predict the bandwidth of the session link in the second time period through the second prediction model to obtain a second prediction value. At this time, the server 100 may determine the bandwidth prediction value based on the first prediction value and the second prediction value.

[0128] Specifically, the specific formula for the server 100 to determine the bandwidth prediction value can refer to the following formula (3):

[0129]

[0130] Here, Pt is a first prediction value obtained by predicting the bandwidth in the second time period based on the first prediction model; l It is a second prediction value obtained after predicting the bandwidth in the second time period based on the second prediction model; THRESHOLD is an evaluation threshold (for example, 0.1) dynamically adjusted according to actual conditions.

[0131] According to the above formula (3), when the server 100 obtains the first prediction value and the second prediction value, it can determine the absolute value of the difference between the first prediction value and the second prediction value, and compare the absolute value with the evaluation threshold to obtain a comparison result. If the comparison result indicates that the absolute value is greater than the evaluation threshold, the first prediction value is determined as the bandwidth prediction value; if the comparison result indicates that the absolute value is less than or equal to the evaluation threshold, the second prediction value is determined as the bandwidth prediction value.

[0132] S103, the server 100 sends a message including a bandwidth prediction value to the player.

[0133] The message here is a Hypertext Transfer Protocol HTTP message; the bandwidth prediction value is carried in the response header of the HTTP message.

[0134] It can be understood that, since the bandwidth prediction value determined by the server in step S102 is determined after receiving the first content playback request for the first data sent by the player, the information body of the HTTP message here is also used to carry the first data corresponding to the first content playback request; the first data is the previous segment of data played before the second data. In other words, the message here can include not only the bandwidth prediction value, but also the first data and the segment number of the second data.

[0135] In other words, the server 100 needs to perform the following steps to obtain the first data while executing step S102. Exemplarily, when the server receives the first content playback request generated by the player for the first data, it needs to obtain the playback parameters carried by the first content playback request; wherein the playback parameters here may include the fragment number of the first data in the multimedia data and the second bit rate of the first data, and further, the server may obtain the data type corresponding to the multimedia data, and determine the first data matching the playback parameters based on the data type.

[0136] If the data type is the first data type for indicating real-time playback, the server may obtain the data content corresponding to the segment number, encode the data content according to the second bit rate, and determine the encoded data content as the first data matching the playback parameters.

[0137] If the data type is a second data type for indicating non-real-time playback, the server can search for N data streams that match the fragment number, and then determine the data stream that matches the second bit rate from the N data streams as the first data that matches the playback parameter. N is a positive integer; a data stream is obtained by encoding the data content corresponding to the fragment encoding according to a bit rate.

[0138] S104: The player determines a first bit rate of second data in the multimedia data based on the bandwidth prediction value and the state information of the player.

[0139] The state information here may include information such as playback buffer length, playback delay, etc. The second data here is a segment of the multimedia data played after the first data determined by the player. Exemplarily, the player may use an ABR algorithm, combined with the state information and the bandwidth prediction value from the server 100, to determine a more appropriate first bit rate.

[0140] Among them, there is a certain mapping relationship between the first bit rate and the bandwidth prediction value. When the player status information remains unchanged, the larger the bandwidth prediction value received by the player from the server, the larger the bit rate selected by the player, and vice versa. For example, if the bandwidth prediction value received by the player (for example, 3800Kbps) belongs to the first bandwidth range, the bit rate determined by the player in combination with its own status information can be a low bit rate (for example, 360P); if the bandwidth prediction value received by the player (for example, 4500Kbps) belongs to the second bandwidth range, the bit rate determined by the player in combination with its own status information can be a medium bit rate (for example, 480P); if the bandwidth prediction value received by the player (for example, 4800Kbps) belongs to the third bandwidth range, the bit rate determined by the player in combination with its own status information can be a high bit rate (for example, 720P).

[0141] S105: The player sends a second content playback request to the server 100 according to the first bit rate.

[0142] Specifically, the player can generate a second content playback request for the second data based on the first bit rate of the second data and the fragment number of the second data in the multimedia data, and then send the second content playback request to the server 100, so that the server 100 refers to the description of the above steps S102-S103, predicts the bandwidth of the session link in the next time period of the second time period, and obtains the second data matching the first bit rate.

[0143] For further understanding, please refer to Figure 6 , Figure 6 Schematic diagram of a data transmission framework provided by an embodiment of the present application. Figure 6 As shown, the data transmission process between the server 100 and the player can be a plurality of cycles of the same period, and one cycle is used to transmit a segment of the multimedia data. Among them, the embodiment of the present application can take the bandwidth prediction for the second time period as an example to describe a decision cycle of bandwidth prediction and bit rate selection.

[0144] When the player requests to play data i in the multimedia data, it can select the data i based on the segment number i of the multimedia data and the bit rate R of the data i. i , generates a first content playback request (for example, HTTP request) for data i, and then sends the first content playback request to the server 100. This means that when the player downloads data i, it can send the segment number i and the bit rate R to the server 100 through the first content playback request. i .

[0145] When receiving the first content playback request, the server 100 may send a bandwidth prediction request (e.g., an RPC request) for a future time period (i.e., a second time period) to the bandwidth predictor, thereby predicting the future bandwidth for the session link corresponding to the first content playback request. The bandwidth prediction request here may include a link identifier of the session link, such as a TCP quadruple (including a source address, a source port, a destination address, and a destination port), a QUIC Connection-ID, etc. The second time period here may be used to play the next segment of data (i.e., the second data) of data i in the multimedia data, for example, a segment numbered i+1 (also referred to as data i+1).

[0146] Exemplarily, the bandwidth predictor may determine the bandwidth prediction value P of the session link in the second time period based on the network data of the session link in the historical time period (i.e., the first time period), the historical bandwidth measurement values ​​corresponding to the M historical data played before the data i in the multimedia data, and the bandwidth prediction model. i+1 . M is a positive integer.

[0147] Of course, when receiving the first content playback request, the server 100 may also, based on the playback parameters (i.e., including the segment number i and the bit rate R) carried in the first content playback request, i ), and the data type corresponding to the multimedia data, to determine the data that matches the playback parameters.

[0148] For example, if the data type is the first data type for indicating real-time playback, the server 100 may obtain the data content corresponding to the segment number i and generate the data content based on the bit rate R i , encode the data content, and determine the encoded data content as data i that matches the playback parameter.

[0149] For another example, if the data type is the second data type for indicating non-real-time playback, the server 100 may search for N data streams matching the segment number i, and then select the data stream with the bit rate R from the N data streams. i The matched data stream is determined as data i that matches the playback parameter. Wherein, N is a positive integer; a data stream is obtained by encoding the data content corresponding to the segment code i according to a bit rate.

[0150] Then, the server 100 may send a message including the data i and the bandwidth prediction value P to the player. i+1 The bandwidth prediction value P i+1 It can be located in the response header of the Hypertext Transfer Protocol HTTP message associated with data i. In addition, the message can also include the bandwidth prediction value P i+1The corresponding segment number (i.e., i+1) is used so that the player can combine the bandwidth prediction value P i+1 and the state information of the player to determine the bit rate of data i+1 (for example, bit rate R i+1 ).

[0151] Further, the player can continue to play the next segment based on the segment number i+1 and the bit rate R of the data i. i+1 , generating a second content play request for data i+1, and sending it to the server 100, so that the server 100 returns the bandwidth prediction value determined for the next time period (i.e., the third time period) of the second time period and the data i+1. The third time period is used to play the next data of the data i+1 in the multimedia data, for example, data i+2.

[0152] The same process is repeated until the server 100 ends the transmission of the multimedia data of the current session link. The end mark here may be a player responding to a pause or close operation performed by its playback object on the multimedia data, or it may be that all segments of the multimedia data have been transmitted to the player, which will not be limited here.

[0153] It can be seen that in the embodiment of the present application, the first bit rate of the second data is determined by the player based on the bandwidth prediction value and the player's own status information, and the bandwidth prediction value of the session link obtained by the player in the second time period is sent by the server, which means that the present application can deploy the bandwidth prediction service and the adaptive bit rate service separately, that is, deploy the bandwidth prediction service on the server, and deploy the adaptive bit rate service (i.e., ABR algorithm) on the player. In the case where the server has strong computing power, the bandwidth prediction value determined by the server based on the network data in the first time period is more accurate. When the server sends the bandwidth prediction value to the player, the player can promptly combine the player's own status information to quickly and accurately calculate a more appropriate first bit rate of the second data, thereby effectively ensuring full utilization of the bandwidth while avoiding freezes to improve the data playback effect.

[0154] The following describes the method provided in the embodiment of the present application from the perspective of a single network device in conjunction with the accompanying drawings.

[0155] See also Figure 7 , Figure 7 A method for performing data transmission provided in an embodiment of the present application is shown in FIG. Figure 1 .like Figure 7As shown, the method can be executed by a server, and the server can be used to send multimedia data to a player through a session link between the player and the server. The multimedia data here can be video data or audio data. The method can at least include S201-S202:

[0156] S201, determining a bandwidth prediction value of a session link in a second time period based on network data of a session link in a first time period.

[0157] The session link here refers to the link established between the server and the player for transmitting multimedia data; the second time period is used to play the second data in the multimedia data, and the second data can be any data in the multimedia data. Specifically, the server can obtain the network data of the session link in the first time period, and obtain the historical bandwidth measurement values ​​corresponding to M historical data. The historical data here are fragments of the multimedia data played in the first time period; M is a positive integer. Then, the server can predict the bandwidth of the session link in the second time period based on the network data, M historical bandwidth measurement values ​​and the bandwidth prediction model to obtain a bandwidth prediction value. The first time period here is before the second time period.

[0158] S202: Send the bandwidth prediction value to the player.

[0159] Specifically, the server sends a Hypertext Transfer Protocol HTTP message to the player; wherein the response header of the HTTP message includes the bandwidth prediction value. It is understandable that the bandwidth prediction value determined by the server in step S201 may be determined actively by the server itself, or after receiving a second content playback request for the first data sent by the player, and the prediction triggering condition of the bandwidth prediction value is not limited here. The first data is any piece of data in the multimedia data, and the first data is a segment played before the second data.

[0160] If the bandwidth prediction value determined by the server in step S201 is actively determined by the server itself, then the server can directly send the bandwidth prediction value to the player.

[0161] Optionally, if the bandwidth prediction value determined by the server executing step S201 is determined after receiving a first content playback request for the first data sent by the player, then the server needs to obtain the first data matching the second bit rate carried by the first content playback request while executing S201. At this time, the information body of the HTTP message is also used to carry the first data corresponding to the first content playback request.

[0162] The specific implementation of S201-S202 can be found in the above Figure 3 The description of S102 - S103 in the corresponding embodiment will not be repeated here.

[0163] For further information, see Figure 8 , Figure 8 A method for performing data transmission provided in an embodiment of the present application is shown in FIG. Figure 2 .like Figure 8 As shown, the method can be executed by a player, and the player is used to obtain multimedia data and play the multimedia data through a session link between the player and the server, wherein the multimedia data here can be video data or audio data. The method can at least include S301-S304:

[0164] S301: Send a first content playback request for first data to a server.

[0165] The player may be the above Figure 1 The player in any terminal device shown in the figure; the server here can be the above Figure 1 The server 100 shown in FIG. 1 is a server 100. The first data is a segment that the player is requesting to play, and the segment can be any segment in the multimedia data. The multimedia data can be video data or audio data. The first content play request can carry play parameters, and the play parameters here can include the segment number of the first data in the multimedia data and the bit rate of the first data (i.e., the second bit rate).

[0166] S302, receiving a message from a server.

[0167] The message may be a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message; in addition, the information body of the HTTP message is also used to carry the first data corresponding to the first content playback request.

[0168] S303: Determine a first bit rate of second data in the multimedia data based on the bandwidth prediction value and the status information of the player.

[0169] The state information here may include information such as playback buffer length, playback delay, etc. Exemplarily, the player may use an ABR algorithm to determine a more appropriate first bit rate in combination with the state information and a bandwidth prediction value from a server. The first bit rate of the second data is used to request that the second data be played in a second time period.

[0170] S304: Send a second content playback request to the server according to the first bit rate.

[0171] The second content play request is used to request the second data matching the first bit rate. Specifically, the player can generate a second content play request for the second data according to the first bit rate of the second data and the fragment number of the second data in the multimedia data, and then send the second content play request to the server, so that the server 100 predicts the bandwidth of the session link in the next time period of the second time period and obtains the second data matching the first bit rate.

[0172] The specific implementation of S301-S304 can be found in the above Figure 3 The description of S101-S105 in the corresponding embodiment will not be repeated here.

[0173] Further, please refer to Table 1, which is an error comparison table determined for different bandwidth prediction methods provided in an embodiment of the present application. Among them, the error comparison table may include three bandwidth prediction methods, namely, the bandwidth prediction method deployed on the server side provided in an embodiment of the present application, the bandwidth prediction method based on sliding window average deployed on the player side, and the bandwidth prediction method based on exponential weighted moving average, as shown in Table 1:

[0174] Table 1

[0175]

[0176] As can be seen from Table 1 above, the bandwidth prediction method deployed on the server side is smaller than the two bandwidth prediction methods deployed on the player side in terms of the three evaluation parameters (i.e., the average error, the median error, and the 75% quantile error). This advantageously illustrates that the bandwidth prediction method provided in the embodiment of the present application can effectively improve the accuracy of bandwidth prediction. Therefore, the data transmission method in the embodiment of the present application, which deploys the bandwidth prediction service on the server and the adaptive bit rate service on the player, can improve the playback effect by improving the accuracy of bandwidth prediction.

[0177] In addition, in an embodiment of the present application, the bandwidth prediction service and the adaptive bit rate service are deployed separately, that is, the bandwidth prediction service is deployed on the server, and the adaptive bit rate service (i.e., the ABR algorithm) is deployed on the player. This deployment method does not require the deployment of a complex algorithm for determining the bit rate on the server. Instead, the player quickly and accurately calculates a more appropriate bit rate based on its own status information, thereby effectively improving the deployability and accuracy of the algorithm. In other words, the embodiment of the present application can not only control the playback effect of the data by allowing the player side to run the adaptive bit rate service (for example, the ABR algorithm), but also deploy a better bandwidth prediction service on the server side on this basis, so that the ABR algorithm has a more accurate input, so that the ABR algorithm will choose a more appropriate bit rate to improve the user's playback experience.

[0178] For further information, see Fig. 9 , Fig. 9 This is a schematic diagram of a data transmission device provided in an embodiment of the present application. Figure 1 .like Fig. 9 As shown, the data transmission device 1 may include at least one of a transceiver unit 901 and a processing unit 902. These units may execute the response functions of each device in the above method embodiment.

[0179] In a possible implementation, the data transmission device 1 can be used to implement Figure 7 The server is used to send multimedia data to the player through the session link between the player and the server.

[0180] Specifically, the processing unit 902 is used to determine the bandwidth prediction value of the session link in the second time period based on the network data of the session link in the first time period; the first time period is before the second time period; the transceiver unit 901 is used to send the bandwidth prediction value to the player.

[0181] In one implementation, the processing unit 902 is used to determine a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period, including: the processing unit 902 is specifically used to obtain the network data of the session link in the first time period; the processing unit 902 is specifically used to obtain historical bandwidth measurement values ​​corresponding to M historical data respectively; the historical data is a segment of the multimedia data played in the first time period; M is a positive integer; the processing unit 902 is specifically used to predict the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values ​​and the bandwidth prediction model to obtain the bandwidth prediction value.

[0182] In one implementation, the processing unit 902 is specifically used to obtain historical bandwidth measurement values ​​corresponding to M historical data, including: the processing unit 902 is specifically used to obtain the state parameters of the data j sending buffer in the protocol stack transport layer from the data entry corresponding to the session link; the data j is any historical data among the M historical data; j is a positive integer; the processing unit 902 is specifically used to identify the data packet batch of the data j based on the state parameters; the processing unit 902 is specifically used to determine the historical bandwidth measurement value corresponding to the data j based on the identified data packet batch.

[0183] In one implementation, the processing unit 902 is specifically used to determine the historical bandwidth measurement value corresponding to the data j based on the identified data packet batches, including: the processing unit 902 is specifically used to filter the identified data packet batches based on the batch filtering condition to obtain X data packet batches; the batch filtering condition is used to filter the data packet batches whose data blocks do not reach the size of the current sending window; X is a positive integer; the processing unit 902 is specifically used to obtain the historical bandwidth measurement value corresponding to the data j based on the X data packet batches.

[0184] In one implementation, the processing unit 902 is configured to obtain a historical bandwidth measurement value corresponding to data j based on X data packet batches, including: the processing unit 902 is specifically configured to determine a confirmation character rate corresponding to data packet batch k based on the number of bytes of data packet batch k and a confirmation packet time difference of data packet batch k; data packet batch k is any one of the X data packet batches; i is a positive integer; the confirmation packet time difference is a difference between a first moment and a second moment; the first moment is a confirmation character packet arrival moment of the last byte of data packet batch k; the second moment is a confirmation character packet arrival moment of the first byte of data packet batch k; the processing unit 902 is specifically configured to obtain a historical bandwidth measurement value corresponding to data j based on the X confirmation character rates when the confirmation character rates corresponding to the X data packet batches are obtained.

[0185] In one implementation, the processing unit 902 is used to predict the bandwidth of the session link in the second time period based on the network data, M historical bandwidth measurement values ​​and the bandwidth prediction model to obtain the bandwidth prediction value, including: the processing unit 902 is specifically used to input the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, and predict the bandwidth of the session link in the second time period through the bandwidth prediction model to obtain a first prediction value and a second prediction value; the first prediction value is related to the bandwidth mutation amplitude within the second time period, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude within the second time period; the processing unit 902 is specifically used to determine the bandwidth prediction value according to the first prediction value and the second prediction value.

[0186] In one implementation, the transceiver unit 901 is specifically used to send a bandwidth prediction value to a player, including: the transceiver unit 901 is specifically used to send a Hypertext Transfer Protocol HTTP message to the player; the response header of the HTTP message includes the bandwidth prediction value.

[0187] In one implementation, if the bandwidth prediction value is determined after receiving a first content playback request sent by the player, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is any segment of multimedia data.

[0188] In one implementation, the multimedia data is video data or audio data.

[0189] The specific implementation of the transceiver unit 901 and the processing unit 902 can be found in the above Figure 7 The description of step S201-step S202 in the corresponding embodiment will not be repeated here. In addition, the description of the beneficial effects of the same method will not be repeated.

[0190] In another possible implementation, the data transmission device 1 can be used to implement Figure 8 The player is used to obtain and play multimedia data through a session link between the player and the server.

[0191] Specifically, the transceiver unit 901 is used to receive a message from a server; the message includes a bandwidth prediction value of the session link in a second time period; the processing unit 902 is used to determine a first bit rate of second data in the multimedia data based on the bandwidth prediction value and status information of the player; the second data is data played in the second time period; the transceiver unit 901 is also used to send a second content playback request to the server according to the first bit rate; the second content playback request is used to request second data matching the first bit rate.

[0192] In one implementation, the message is a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message.

[0193] In one implementation, if the message is received after the player sends a first content playback request to the server, the information body of the HTTP message is also used to carry the first data corresponding to the first content playback request; the first data is the previous data played before the second data.

[0194] In one implementation, the multimedia data is video data or audio data.

[0195] The specific implementation of the transceiver unit 901 and the processing unit 902 can be found in the above Figure 8 The description of steps S301 to S304 in the corresponding embodiment will not be repeated here. In addition, the description of the beneficial effects of the same method will not be repeated.

[0196] For further information, see Fig.10 , Fig.10 This is a schematic diagram of a data transmission device provided in an embodiment of the present application. Figure 2 .like Fig.10 As shown, specifically, the data transmission device 2 can be used to implement Figure 7 The function of the server, or the data transmission device 2 can be used to implement Figure 8 The function of the player.

[0197] Reference Fig.10 The data transmission device 2 includes: a processor 1001, a communication interface 1002 and all or part of the hardware in a memory 1003. The number of the processor 1001 in the data transmission device 2 can be one or more. Fig.10 In the embodiment of the present application, the processor 1001, the communication interface 1002 and the memory 1003 may be connected via a bus system or other means, wherein: Fig.10 The connection via bus system 1004 is taken as an example.

[0198] The processor 1001 may be a central processor unit (CPU), a network processor (NP) or a combination of a CPU and a NP. The processor 1001 may also include a hardware chip. The hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD) or a combination thereof. The PLD may be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL) or any combination thereof.

[0199] The communication interface 1002 is used to receive and send data. Specifically, the communication interface 1002 may include a receiving interface and a sending interface. The receiving interface may be used to receive data, and the sending interface may be used to send data. The number of the communication interface 1002 may be one or more.

[0200] Memory 1003 may include volatile memory, such as random-access memory (RAM); memory 3003 may also include non-volatile memory, such as flash memory, hard disk drive (HDD) or solid-state drive (SSD); memory 1003 may also include a combination of the above types of memory.

[0201] Optionally, the memory 1003 stores an operating system and a program, an executable module or a data structure, or a subset thereof, or an extended set thereof, wherein the program may include various operating instructions for implementing various operations. The operating system may include various system programs for implementing various basic services and processing hardware-based tasks. The processor 1001 may read the program in the memory 1003 to implement the method provided in the embodiment of the present application.

[0202] The memory 1003 may be a storage device in the data transmission device 2 , or may be a storage device independent of the data transmission device 2 .

[0203] The bus system 1004 may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus. The bus system 3004 may be divided into an address bus, a data bus, a control bus, etc. For ease of representation, Fig.10 Only one thick line is used in the diagram, but this does not mean that there is only one bus or only one type of bus.

[0204] In some possible embodiments, the above-mentioned data transmission device can be implemented as a virtualized device. For example, the virtualized device can be a virtual machine (VM) running a program for sending message functions, and the virtual machine is deployed on a hardware device (for example, a physical server). A virtual machine refers to a complete computer system with complete hardware system functions simulated by software and running in a completely isolated environment. The virtual machine can be configured as a data transmission device. For example, the function of the data transmission device can be implemented based on a general physical server in combination with network function virtualization (NFV) technology. Those skilled in the art can virtualize a data transmission device with the above-mentioned functions on a general physical server in combination with NFV technology by reading this application, and will not be repeated here.

[0205] It should be noted that the data transmission device mentioned in the embodiments of the present application may be a terminal device where the player is located, or a server, or a chip used to implement the method of the present application, and the embodiments of the present application do not make specific limitations. When the data transmission device is a chip, the interface circuit in the chip may be used to perform the receiving or sending operation in the data transmission device, and the processor in the chip may be used to perform the processing operation.

[0206] In a specific implementation, the embodiment of the present application further provides a chip, including a processor and an interface circuit, the interface circuit is used to receive instructions and transmit them to the processor; the processor can be used to execute the operations of each data transmission device in the above communication method. The processor is coupled to a memory, and the memory is used to store programs or instructions. When the program or instruction is executed by the processor, the chip implements the method in any of the above method embodiments.

[0207] Optionally, the processor in the chip may be one or more. The processor may be implemented by hardware and / or software. When implemented by hardware, the processor may be a logic circuit, an integrated circuit, etc. When implemented by software, the processor may be a general-purpose processor implemented by reading software code stored in a memory.

[0208] Optionally, the memory in the chip may be one or more. The memory may be integrated with the processor or may be separately provided with the processor, which is not limited in the present application. Exemplarily, the memory may be a non-transient processor, such as a read-only memory ROM, which may be integrated with the processor on the same chip or may be provided on different chips. The present application does not specifically limit the type of memory and the arrangement of the memory and the processor.

[0209] Exemplarily, the chip may be a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a system on chip (SoC), a central processor unit (CPU), a network processor (NP), a digital signal processor (DSP), a microcontroller unit (MCU), a programmable logic device (PLD), or other integrated chips.

[0210] An embodiment of the present application also provides a computer-readable storage medium, including instructions or computer programs, which, when executed on a processor, enable the processor to execute the communication method provided in the above embodiment.

[0211] An embodiment of the present application also provides a computer program product including instructions or a computer program, which, when executed on a processor, enables a data transmission device to execute the message forwarding method provided in the above embodiment.

[0212] The terms "first", "second", "third", "fourth", etc. (if any) in the specification and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence. It should be understood that the data used in this way can be interchangeable where appropriate, so that the embodiments described herein can be implemented in an order other than that illustrated or described herein. In addition, the terms "including" and "having" and any variations thereof are intended to cover non-exclusive inclusions, for example, a process, method, system, product or device that includes a series of steps or units is not necessarily limited to those steps or units that are clearly listed, but may include other steps or units that are not clearly listed or inherent to these processes, methods, products or devices.

[0213] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0214] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of units is only a logical business division. There may be other division methods in actual implementation. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.

[0215] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the embodiments of the present application.

[0216] Those skilled in the art should be aware that in one or more of the above examples, the services described in this application can be implemented with hardware, software, firmware, or any combination thereof. When implemented using software, these services can be stored in a computer-readable medium or transmitted as one or more instructions or codes on a computer-readable medium. Computer-readable media include computer storage media and communication media, wherein communication media include any media that facilitates the transmission of computer programs from one place to another. Storage media can be any available media that a general or special-purpose computer can access.

[0217] The above specific implementation methods further describe in detail the purpose, technical solutions and beneficial effects of the present application. It should be understood that the above are only specific implementation methods of the present application.

[0218] The above embodiments are only used to illustrate the technical solutions of the present application, rather than to limit them. Although the present application has been described in detail with reference to the aforementioned embodiments, a person of ordinary skill in the art should understand that the technical solutions described in the aforementioned embodiments may still be modified, or some of the technical features thereof may be replaced by equivalents. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the scope of the technical solutions of the embodiments of the present application.

Claims

1. A data transmission method, characterized in that: The method is performed by a server, and the server is used to send multimedia data to the player through a session link between the player and the server, including: Determining a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period, wherein the first time period is before the second time period; The bandwidth prediction value is sent to the player.

2. The method according to claim 1, characterized in that: The determining, based on the network data of the session link in the first time period, a bandwidth prediction value of the session link in the second time period includes: Acquire network data of the session link within a first time period; Obtaining historical bandwidth measurement values ​​corresponding to M historical data respectively; the historical data is a segment of the multimedia data played in the first time period; M is a positive integer; Based on the network data, the M historical bandwidth measurement values ​​and the bandwidth prediction model, the bandwidth of the session link in the second time period is predicted to obtain a bandwidth prediction value.

3. The method according to claim 2, characterized in that The obtaining of historical bandwidth measurement values ​​corresponding to the M historical data respectively includes: Obtaining, from the data entry corresponding to the session link, a state parameter of a sending buffer of data j at the transport layer of the protocol stack; the data j is any historical data among the M historical data; j is a positive integer; Based on the state parameter, identifying a batch of data packets of the data j; Based on the identified data packet batch, a historical bandwidth measurement value corresponding to the data j is determined.

4. The method according to claim 3, characterized in that: The determining, based on the identified data packet batch, a historical bandwidth measurement value corresponding to the data j includes: Based on the batch filtering condition, the identified data packet batches are filtered to obtain X data packet batches; the batch filtering condition is used to filter the data packet batches whose data blocks do not reach the size of the current sending window; X is a positive integer; Based on the X data packet batches, a historical bandwidth measurement value corresponding to the data j is obtained.

5. The method according to claim 4, characterized in that The obtaining, based on the X data packet batches, a historical bandwidth measurement value corresponding to the data j includes: Based on the number of bytes of data packet batch k and the confirmation packet time difference of the data packet batch k, determine the confirmation character rate corresponding to the data packet batch k; the data packet batch k is any one of the X data packet batches; k is a positive integer; the confirmation packet time difference is the difference between the first moment and the second moment; the first moment is the arrival moment of the confirmation character packet of the last byte of the data packet batch k; the second moment is the arrival moment of the confirmation character packet of the first byte of the data packet batch k; When the confirmation character rates respectively corresponding to the X data packet batches are obtained, the historical bandwidth measurement value corresponding to the data j is obtained based on the X confirmation character rates.

6. The method according to any one of claims 2 to 5, characterized in that: The step of predicting the bandwidth of the session link in the second time period based on the network data, the M historical bandwidth measurement values, and the bandwidth prediction model to obtain a bandwidth prediction value includes: Input the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, and predict the bandwidth of the session link in the second time period by using the bandwidth prediction model to obtain a first prediction value and a second prediction value; the first prediction value is related to the bandwidth mutation amplitude in the second time period, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude in the second time period; The bandwidth prediction value is determined according to the first prediction value and the second prediction value.

7. The method according to any one of claims 1 to 6, characterized in that: The sending the bandwidth prediction value to the player includes: A Hypertext Transfer Protocol (HTTP) message is sent to the player; a response header of the HTTP message includes the bandwidth prediction value.

8. The method according to claim 7, characterized in that If the bandwidth prediction value is determined after receiving a first content playback request sent by the player, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is any segment of the multimedia data.

9. The method according to any one of claims 1 to 8, characterized in that: The multimedia data is video data or audio data.

10. A data transmission method, characterized in that: The method is performed by a player, and the player is used to obtain multimedia data through a session link between the player and a server and play the multimedia data, including: receiving a message from the server; the message including a bandwidth prediction value of the session link in a second time period; Determine a first bit rate of second data in the multimedia data based on the bandwidth prediction value and the state information of the player; the second data is data played in the second time period; According to the first bit rate, a second content playback request is sent to the server; the second content playback request is used to request the second data matching the first bit rate.

11. The method according to claim 10, characterized in that The message is a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message.

12. The method according to claim 11, characterized in that If the message is received after the player sends a first content playback request to the server, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is the previous data played before the second data.

13. The method according to any one of claims 10 to 12, characterized in that: The multimedia data is video data or audio data.

14. A data transmission device, characterized in that: Applied to a server, the server is used to send multimedia data to the player through a session link between the player and the server, comprising: a processing unit, configured to determine a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period, wherein the first time period is before the second time period; A transceiver unit is used to send the bandwidth prediction value to the player.

15. The data transmission device according to claim 14, characterized in that: The processing unit is used to determine a bandwidth prediction value of the session link in a second time period based on network data of the session link in a first time period, including: The processing unit is specifically configured to obtain network data of the session link within a first time period; The processing unit is specifically used to obtain historical bandwidth measurement values ​​corresponding to M historical data respectively; the historical data is a segment of the multimedia data played in the first time period; M is a positive integer; The processing unit is specifically configured to predict the bandwidth of the session link in a second time period based on the network data, the M historical bandwidth measurement values, and a bandwidth prediction model to obtain a bandwidth prediction value.

16. The data transmission device according to claim 15, characterized in that: The processing unit is specifically used to obtain historical bandwidth measurement values ​​corresponding to M historical data, including: The processing unit is specifically used to obtain the state parameter of the data j sending buffer in the protocol stack transport layer from the data entry corresponding to the session link; the data j is any historical data among the M historical data; j is a positive integer; The processing unit is specifically configured to identify a data packet batch of the data j based on the state parameter; The processing unit is specifically configured to determine a historical bandwidth measurement value corresponding to the data j based on the identified data packet batch.

17. The data transmission device according to claim 16, characterized in that: The processing unit is specifically configured to determine the historical bandwidth measurement value corresponding to the data j based on the identified data packet batch, including: The processing unit is specifically used to filter the identified data packet batches based on the batch filtering condition to obtain X data packet batches; the batch filtering condition is used to filter the data packet batches whose data blocks do not reach the size of the current sending window; X is a positive integer; The processing unit is specifically configured to obtain a historical bandwidth measurement value corresponding to the data j based on the X data packet batches.

18. The data transmission device according to claim 16, characterized in that: The processing unit is configured to obtain a historical bandwidth measurement value corresponding to the data j based on the X data packet batches, including: The processing unit is specifically used to determine the confirmation character rate corresponding to the data packet batch k based on the number of bytes of the data packet batch k and the confirmation packet time difference of the data packet batch k; the data packet batch k is any one of the X data packet batches; i is a positive integer; the confirmation packet time difference is the difference between a first moment and a second moment; the first moment is the arrival moment of the confirmation character packet of the last byte of the data packet batch k; the second moment is the arrival moment of the confirmation character packet of the first byte of the data packet batch k; The processing unit is specifically configured to obtain a historical bandwidth measurement value corresponding to the data j based on the X confirmation character rates when the confirmation character rates respectively corresponding to the X data packet batches are obtained.

19. The data transmission device according to any one of claims 15 to 18, characterized in that: The processing unit is configured to predict the bandwidth of the session link in a second time period based on the network data, the M historical bandwidth measurement values, and the bandwidth prediction model to obtain a bandwidth prediction value, including: The processing unit is specifically configured to input the network data and the M historical bandwidth measurement values ​​into the bandwidth prediction model, and predict the bandwidth of the session link in the second time period by using the bandwidth prediction model to obtain a first prediction value and a second prediction value; the first prediction value is related to the bandwidth mutation amplitude in the second time period, and the second prediction value is related to the bandwidth instantaneous fluctuation amplitude in the second time period; The processing unit is specifically configured to determine the bandwidth prediction value according to the first prediction value and the second prediction value.

20. The data transmission device according to any one of claims 14 to 19, characterized in that: The transceiver unit is specifically used to send the bandwidth prediction value to the player, including: The transceiver unit is specifically used to send a Hypertext Transfer Protocol (HTTP) message to the player; the response header of the HTTP message includes the bandwidth prediction value.

21. The data transmission device according to claim 20, characterized in that: If the bandwidth prediction value is determined after receiving a first content playback request sent by the player, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is any segment of the multimedia data.

22. The data transmission device according to any one of claims 14 to 21, characterized in that: The multimedia data is video data or audio data.

23. A data transmission device, characterized in that: Applied to a player, the player is used to obtain multimedia data through a session link between the player and a server and play the multimedia data, including: A transceiver unit, configured to receive a message from the server; the message including a bandwidth prediction value of the session link in a second time period; A processing unit, configured to determine a first bit rate of second data in the multimedia data based on the bandwidth prediction value and the state information of the player; the second data is data played in the second time period; The transceiver unit is further configured to send a second content playback request to the server according to the first bit rate; the second content playback request is used to request the second data matching the first bit rate.

24. The data transmission device according to claim 23, characterized in that: The message is a Hypertext Transfer Protocol (HTTP) message; the bandwidth prediction value is carried in a response header of the HTTP message.

25. The data transmission device according to claim 24, characterized in that: If the message is received after the player sends a first content playback request to the server, the information body of the HTTP message is also used to carry first data corresponding to the first content playback request; the first data is the previous data played before the second data.

26. The data transmission device according to any one of claims 23 to 25, characterized in that: The multimedia data is video data or audio data.

27. A data transmission device, characterized in that: It comprises a memory and a processor, wherein the memory is used to store computer instructions, and the processor is used to call and execute the computer instructions from the memory to implement the method as claimed in any one of claims 1 to 9, or to implement the method as claimed in any one of claims 10 to 13.

28. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores instructions, and when the instructions are executed on a processor, the method according to any one of claims 1 to 9 is implemented, or the method according to any one of claims 10 to 13 is implemented.

29. A computer program product, characterized in that The computer program product comprises instructions, which, when executed on a processor, are used to implement the method according to any one of claims 1 to 9, or to implement the method according to any one of claims 10 to 13.