A video transmission method, apparatus, device, and storage medium

By performing diversion processing, video encoding, cross-channel allocation and redundant encoding on the first video stream, video transmission is transmitted using at least two network channels, and the problem of delay or loss of video transmission during network fluctuations in the prior art is solved, thereby achieving efficient and reliable video transmission.

CN116405716BActive Publication Date: 2025-05-27DOUYIN VISION CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310416371.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-04-18
Publication Date
2025-05-27
Estimated Expiration
2043-04-18

AI Technical Summary

Technical Problem

The existing video transmission methods can easily lead to delay or loss of data packets when the network fluctuates, resulting in a long time-consuming video transmission and unsuccessful transmission when the network quality is poor, which cannot effectively ensure the success rate of video transmission.

Method used

By performing the shunt processing on the first video stream, the second video stream corresponding to each target network channel is determined, and each second video stream is video coded, and then cross-channel allocation and redundant encoding are performed to generate a target redundant data stream corresponding to each target network channel, and the corresponding third video stream and target redundant data stream are transmitted through each target network channel.

Benefits of technology

Using at least two network channels to transmit videos improves the success rate of video transmission, and without increasing network bandwidth costs, retransmission is avoided and the efficiency of video transmission is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116405716B_ABST
    Figure CN116405716B_ABST
Patent Text Reader

Abstract

An embodiment of the present disclosure provides a video transmission method, apparatus, device, and storage medium. The method includes: obtaining a first video stream and at least two target network channels; performing a shunt process on the first video stream to determine a second video stream corresponding to each target network channel; performing video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding; performing cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel; and transmitting the corresponding third video stream and target redundant data stream through each target network channel. Through the technical solution of the embodiment of the present disclosure, video can be transmitted using at least two network channels, and the success rate of video transmission can be effectively improved without increasing the network bandwidth cost.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure relate to Internet technologies, and in particular, to a video transmission method, apparatus, device, and storage medium. Background Art

[0002] With the rapid development of Internet technologies, the video transmission process is affected by network fluctuations. For example, there may be packet transmission delays or losses. Currently, usually after a packet is lost, the lost packet is retransmitted. However, this method results in a long video transmission time, and there may still be a situation where the transmission is unsuccessful when the network quality is poor, and the success rate of video transmission cannot be effectively guaranteed. Summary of the Invention

[0003] The present disclosure provides a video transmission method, apparatus, device, and storage medium to transmit a video using at least two network channels and effectively improve the success rate of video transmission without increasing the network bandwidth cost.

[0004] In a first aspect, embodiments of the present disclosure provide a video transmission method, including:

[0005] Obtaining a first video stream and at least two target network channels;

[0006] Performing a splitting process on the first video stream to determine a second video stream corresponding to each target network channel;

[0007] Performing video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding;

[0008] Performing cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel;

[0009] Transmitting the corresponding third video stream and target redundant data stream through each target network channel.

[0010] In a second aspect, embodiments of the present disclosure further provide a video transmission apparatus, including:

[0011] An information acquisition module, configured to obtain a first video stream and at least two target network channels;

[0012] A splitting process module, configured to perform a splitting process on the first video stream to determine a second video stream corresponding to each target network channel;

[0013] A video stream encoding module, configured to perform video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding;

[0014] A redundant data stream determination module, configured to perform cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel;

[0015] A video stream transmission module, configured to transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0016] In a third aspect, an embodiment of the present disclosure further provides an electronic device, where the electronic device includes:

[0017] One or more processors;

[0018] A storage device, configured to store one or more programs,

[0019] When the one or more programs are executed by the one or more processors, the one or more processors are caused to implement the video transmission method according to any one of the embodiments of the present disclosure.

[0020] In a fourth aspect, an embodiment of the present disclosure further provides a storage medium containing computer-executable instructions, where the computer-executable instructions are used to execute the video transmission method according to any one of the embodiments of the present disclosure when executed by a computer processor.

[0021] In the embodiments of the present disclosure, by performing splitting processing on the first video stream, the second video stream corresponding to each target network channel is determined, and the data volume of the split second video stream is smaller than that of the first video stream. Video encoding is performed on each second video stream to determine the third video stream corresponding to each target network channel after encoding, and cross-channel allocation and redundant encoding are performed on each third video stream to determine the target redundant data stream corresponding to each target network channel. The corresponding third video stream and target redundant data stream are transmitted through each target network channel, so as to simultaneously transmit video data using at least two target network channels, and the video data transmitted by each target network channel is a part of the first video stream and the target redundant data stream allocated across channels. Therefore, the network bandwidth cost is not increased, and when the network quality of one network channel is poor, the video stream can also be restored using the redundant data stream sent by other network channels, thereby effectively improving the success rate of video transmission and also improving the video transmission efficiency without retransmission. BRIEF DESCRIPTION OF THE DRAWINGS

[0022] In combination with the accompanying drawings and with reference to the following specific embodiments, the above and other features, advantages, and aspects of the embodiments of the present disclosure will become more obvious. Throughout the accompanying drawings, the same or similar reference numerals represent the same or similar elements. It should be understood that the drawings are schematic, and the original elements and elements are not necessarily drawn to scale.

[0023] Figure 1It is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure;

[0024] Figure 2 It is an encoding example of a video stream involved in an embodiment of the present disclosure;

[0025] Figure 3 It is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure;

[0026] Figure 4 It is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure;

[0027] Figure 5 It is an example of the working process of a sending end involved in an embodiment of the present disclosure;

[0028] Figure 6 It is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure;

[0029] Figure 7 It is an example of the working process of a receiving end involved in an embodiment of the present disclosure;

[0030] Figure 8 It is an example of a target video stream determined by a receiving end involved in an embodiment of the present disclosure;

[0031] Figure 9 It is a schematic structural diagram of a video transmission device provided by an embodiment of the present disclosure;

[0032] Figure 10 It is a schematic structural diagram of an electronic device provided by an embodiment of the present disclosure. Detailed implementation manners

[0033] Hereinafter, embodiments of the present disclosure will be described in more detail with reference to the accompanying drawings. Although some embodiments of the present disclosure are shown in the drawings, it should be understood that the present disclosure can be implemented in various forms and should not be construed as limited to the embodiments set forth herein. On the contrary, these embodiments are provided to more thoroughly and completely understand the present disclosure. It should be understood that the accompanying drawings and embodiments of the present disclosure are only for exemplary purposes and are not used to limit the protection scope of the present disclosure.

[0034] It should be understood that the steps described in the method embodiments of the present disclosure can be executed in different orders and / or in parallel. In addition, the method embodiments may include additional steps and / or omit the steps shown. The scope of the present disclosure is not limited in this regard.

[0035] As used herein, the term "including" and its variations are open-ended, i.e., "including but not limited to". The term "based on" means "at least partially based on". The term "one embodiment" means "at least one embodiment"; the term "another embodiment" means "at least one additional embodiment"; the term "some embodiments" means "at least some embodiments". The relevant definitions of other terms will be given in the following description.

[0036] It should be noted that the concepts such as "first", "second", etc. mentioned in this disclosure are only used to distinguish different devices, modules or units, and are not used to limit the order or interdependence of the functions performed by these devices, modules or units.

[0037] It should be noted that the modification of "one" and "a plurality of" mentioned in this disclosure is illustrative rather than restrictive. Those skilled in the art should understand that unless clearly specified otherwise in the context, it should be understood as "one or more".

[0038] The names of the messages or information exchanged between multiple devices in the embodiments of this disclosure are only for illustrative purposes and are not used to limit the scope of these messages or information.

[0039] It can be understood that before using the technical solutions disclosed in the embodiments of this disclosure, the types, usage scopes, usage scenarios, etc. of the personal information involved in this disclosure should be informed to users and the authorization of users should be obtained in an appropriate manner in accordance with relevant laws and regulations.

[0040] Figure 1 FIG. is a schematic flowchart of a video transmission method provided by an embodiment of this disclosure. The embodiments of this disclosure are applicable to the situation of encoding and transmitting a generated video stream, and can be particularly applicable to transmission scenarios that require low latency, such as video-on-demand scenarios, video live broadcast scenarios, or video download scenarios, etc. This method can be executed by a video transmission device, and this device can be implemented in the form of software and / or hardware. Optionally, it can be implemented by an electronic device, and this electronic device can be a sending end for transmitting video.

[0041] As Figure 1 shown, the video transmission method specifically includes the following steps:

[0042] S110. Obtain a first video stream and at least two target network channels.

[0043] Among them, the first video stream may refer to the original video stream generated by a video source. The first video stream is composed of multiple video frames. The target network channels may be network transmission channels for transmitting video data. The number of target network channels is at least two, so as to transmit video data simultaneously using at least two target network channels. For example, there are two network channels in both the Wifi network and the 4G network.

[0044] Specifically, the sending end may obtain the pre-generated first video stream, or may also obtain the first video stream generated in real time by the video source, so as to perform real-time transmission on the first video stream generated in real time. Based on the currently used transmission network, at least two target network channels are obtained. For example, each network channel included in the currently used transmission network may be used as a target network channel, so as to perform video transmission using all network channels in this transmission network.

[0045] S120. Perform a splitting process on the first video stream to determine the second video stream corresponding to each target network channel.

[0046] Among them, the second video stream may include some video frames in the first video stream. The target network channels and the second video streams are in one-to-one correspondence.

[0047] Specifically, the sending end may perform a splitting process on the first video stream based on a preset splitting method and the video frame rate corresponding to the first video stream. For example, each video frame in the first video stream may be polled and divided into each target network channel to obtain the second video stream corresponding to each target network channel. It should be noted that all the second video streams corresponding to all the target network channels may also be merged into the first video stream.

[0048] Exemplarily, S120 may include: determining the target frame rate corresponding to each target network channel based on the video frame rate corresponding to the first video stream; and performing a polling allocation of video frames on the first video stream based on the target frame rate to determine the second video stream corresponding to each target network channel.

[0049] Among them, the video frame rate corresponding to the first video stream is the original video frame rate. The target frame rate corresponding to each target network channel refers to the video frame rate of the second video stream corresponding to each target network channel. Since the second video stream is a sub-stream of the first video stream, the target frame rate corresponding to each target network channel is less than the video frame rate corresponding to the first video stream.

[0050] Specifically, the corresponding target frame rate of each target network channel can be set the same or different based on service requirements, and each target frame rate is less than the video frame rate corresponding to the first video stream. For example, the video frame rate corresponding to the first video stream can be divided by the number of target network channels, and the obtained division result can be used as the target frame rate corresponding to each target network channel, so as to evenly split the first video stream. According to the target frame rate corresponding to each target network channel and the allocation order of the target network channels, each video frame in the first video stream is polled and allocated to each target network channel to obtain the second video stream corresponding to each target network channel.

[0051] For example, if the first video stream is {video frame F1, video frame F2, video frame F3, video frame F4, video frame F5, video frame F6, video frame F7, video frame F8...}, there are two target network channels, and the target frame rate corresponding to each target network channel is half of the video frame rate corresponding to the first video stream, then after polling and allocation, the second video stream corresponding to target network channel 1 is {video frame F1, video frame F3, video frame F5, video frame F7...}, and the second video stream corresponding to target network channel 2 is {video frame F2, video frame F4, video frame F6, video frame F8...}.

[0052] S130. Perform video encoding on the second video stream corresponding to each target network channel to determine the third video stream corresponding to each target network channel after encoding.

[0053] Among them, the third video stream can refer to the video coding stream after encoding the second video stream. The third video stream consists of multiple coded frames. For example, the coded frames can include key frames (i.e., I frames), forward prediction coded frames (i.e., P frames), or bidirectional prediction coded frames (i.e., B frames). Among them, when decoding an I frame, only the information of the key frame itself is needed, and there is no need to refer to other video frames. The interval between two I frames is relatively long. When decoding a P frame, the information of the video frame before the current frame needs to be referred to for decoding. If the referred video frame is lost, it will cause a mosaic phenomenon. When decoding a B frame, the video frames before and after the current frame need to be referred to for decoding. If the referred video frames are lost, it will also cause a mosaic phenomenon.

[0054] Specifically, a video encoder can be set in each target network channel, and the encoding parameters in each video encoder can be configured. For each target network channel, the sender can input the second video stream corresponding to the target network channel into the corresponding video encoder, and the video encoder performs video encoding based on the configured encoding parameters and outputs the encoded third video stream, so as to obtain the third video stream corresponding to the target network channel. By encoding the second video streams corresponding to each target network channel independently, the independently encoded third video streams are obtained, enabling the subsequent receiver to also decode the received third video streams independently.

[0055] For example, Figure 2 a coding example of the video stream is given. As Figure 2 shown, independent encoding is performed in the order of the video frames in the second video stream corresponding to target network channel 1, which is {video frame F1, video frame F3, video frame F5, video frame F7...}. For example, when encoding video frame F3, it is only encoded based on video frame F1 and not based on video frame F2 in target network channel 2, thus achieving independent encoding of the second video stream.

[0056] S140. Perform cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel.

[0057] Among them, cross-channel allocation can refer to allocating the third video stream corresponding to each target network channel to other target network channels, that is, the third video stream obtained by each target network channel allocation is not the third video stream originally corresponding to itself. For example, if the third video stream corresponding to target network channel 1 is video stream 1 and the third video stream corresponding to target network channel 2 is video stream 2, then after cross-channel allocation, target network channel 1 corresponds to video stream 2 and target network channel 2 corresponds to video stream 1.

[0058] Among them, redundant encoding can be encoding the allocated third video stream using redundant techniques. The redundant encoding method can be, but is not limited to, the forward error correction coding method (Forward Error Correction, FEC). The target redundant data stream can refer to the redundant protection data of the allocated third video stream, so that the corresponding third video stream can be recovered based on the target redundant data stream.

[0059] Specifically, the sending end may first perform cross-channel allocation on the third video stream corresponding to each target network channel, and then perform redundant encoding on each allocated third video stream to obtain the target redundant data stream corresponding to each target network channel. Alternatively, it may first perform redundant encoding on the third video stream corresponding to each target network channel to obtain the original redundant data stream corresponding to each target network channel, and then perform cross-channel allocation on each original redundant data stream to obtain the target redundant data stream corresponding to each target network channel. This embodiment does not limit the order of cross-channel allocation and redundant encoding.

[0060] For example, as Figure 2 shown, after encoding the second video stream corresponding to target network channel 1, the obtained third video stream is {encoded frame F1, encoded frame F3, encoded frame F5, encoded frame F7...}. Correspondingly, the third video stream corresponding to target network channel 2 is {encoded frame F2, encoded frame F4, encoded frame F6, encoded frame F8...}. After cross-channel allocation, the third video stream corresponding to target network channel 1 is: {encoded frame F2, encoded frame F4, encoded frame F6, encoded frame F8...}, and redundant encoding is performed on each encoded frame in this third video stream to obtain the target redundant data stream corresponding to target network channel 1 as: {redundantly encoded frame P2, redundantly encoded frame P4, redundantly encoded frame P6, redundantly encoded frame P8...}. Similarly, the target redundant data stream corresponding to target network channel 2 is: {redundantly encoded frame P1, redundantly encoded frame P3, redundantly encoded frame P5, redundantly encoded frame P7...}.

[0061] S150. Transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0062] Specifically, the sending end and the receiving end are connected through each target network channel. The sending end can transmit the third video stream and the target redundant data stream corresponding to each target network channel to the receiving end through each target network channel. For example, as Figure 2As shown, the corresponding third video stream {encoded frames F1, F3, F5, F7...} and the target redundant data stream {redundant encoded frames P2, P4, P6, P8...} are transmitted through the target network channel 1. The corresponding third video stream {encoded frames F2, F4, F6, F8...} and the target redundant data stream {redundant encoded frames P1, P3, P5, P7...} are transmitted through the target network channel 2. By sending the third video stream {encoded frames F1, F3, F5, F7...} and the original redundant data stream corresponding to the third video stream {redundant encoded frames P1, P3, P5, P7...} using different target network channels, when a problem occurs in one target network channel, such as the loss of the third video stream, the original redundant data stream corresponding to the third video stream transmitted through the other target network channel can be used to quickly recover the third video stream, and this cross-path transmission does not occupy the network bandwidth of the weak network channel, thus improving the success rate of video transmission.

[0063] It should be noted that if the first video stream and the corresponding redundant data stream are directly transmitted, the bandwidth cost will increase. Through shunting and cross-path transmission, the success rate of video transmission can be improved without increasing the bandwidth cost.

[0064] Exemplarily, the corresponding third video stream and the target redundant data stream can be synchronously transmitted through each target network channel, so that the third video stream and the original redundant data stream corresponding to the third video stream can be received simultaneously through different target network channels, and then the third video stream can be timely recovered based on the original redundant data stream corresponding to the third video stream, thus ensuring low latency.

[0065] The technical solution of the embodiment of the present disclosure shunts the first video stream to determine the second video stream corresponding to each target network channel, and the data volume of the shunted second video stream is smaller than that of the first video stream. Each second video stream is video-encoded to determine the third video stream corresponding to each target network channel after encoding, and each third video stream is cross-channel allocated and redundantly encoded to determine the target redundant data stream corresponding to each target network channel. The corresponding third video stream and the target redundant data stream are transmitted through each target network channel, so as to simultaneously transmit video data using at least two target network channels, and the video data transmitted through each target network channel is a part of the first video stream and the target redundant data stream allocated across channels, thus not increasing the network bandwidth cost, and when the network quality of one network channel is poor, the redundant data stream sent by other network channels can be used to recover the video stream, thus effectively improving the success rate of video transmission and also improving the video transmission efficiency without retransmission.

[0066] Based on the above technical solution, "obtaining at least two target network channels" in S110 may include: obtaining the network delay duration corresponding to each candidate network channel; determining the maximum delay time difference between two network channels based on the video frame rate corresponding to the first video stream; and determining the target network channels from multiple candidate network channels based on the network delay duration and the maximum delay time difference.

[0067] Among them, a candidate network channel refers to a network channel that can be used to transmit data. For example, each network channel included in the currently used transmission network can be used as a candidate network channel. The network delay duration may refer to the delay duration of data transmission by the candidate network channel. The maximum delay time difference may refer to the maximum allowable delay time difference between two network channels. The target network channel may refer to an available network channel that ensures low latency.

[0068] Specifically, the sending end can detect and obtain the network delay duration of each candidate network channel. Determine the interval duration between two adjacent frames based on the video frame rate corresponding to the first video stream, and the 2 times of this interval duration can be determined as the maximum allowable delay information to ensure low latency. The network delay time difference between every two candidate network channels can be determined based on the network delay duration of each candidate network channel, that is, the difference between the network delay durations corresponding to two candidate network channels. Compare the network delay time difference between every two candidate network channels with the maximum delay time difference, and determine the target network channels from all candidate network channels. The network delay time difference between any two determined target network channels is less than or equal to the maximum delay time difference, so as to ensure low latency of video transmission. Or, the two candidate network channels with the smallest network delay time difference can also be determined as the target network channels, so as to use the two optimal target network channels for ultra-low latency transmission.

[0069] Figure 3 It is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure. Based on the above-mentioned disclosed embodiments, the step of "determining the target frame rate corresponding to each target network channel based on the video frame rate corresponding to the first video stream" is optimized. The explanations of the same or corresponding terms as those in the above-mentioned disclosed embodiments are not repeated here.

[0070] As Figure 3 shown, the video transmission method specifically includes the following steps:

[0071] S210. Obtain the first video stream and at least two target network channels.

[0072] S220. Obtain the available bandwidth information corresponding to each target network channel.

[0073] Specifically, the sending end can detect and obtain the available bandwidth information corresponding to each target network channel. The available bandwidth information can be used to characterize the amount of data that can be transmitted per second by the target network channel.

[0074] S230. Determine the target frame rate corresponding to each target network channel based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream.

[0075] Among them, the preset minimum frame rate can be the minimum frame rate determined in advance based on the smoothness requirement. The target frame rate corresponding to each target network channel is greater than or equal to the preset minimum frame rate to ensure the smoothness experience when displaying a low-frame-rate video. The video frame rate corresponding to the first video stream is the highest frame rate corresponding to each target network channel. The target frame rate corresponding to each target network channel is less than the video frame rate corresponding to the first video stream.

[0076] Specifically, the sending end can determine the available frame rate range based on the preset minimum frame rate and the video frame rate corresponding to the first video stream, and select an optimal frame rate with the highest image quality within the available frame rate range as the corresponding target frame rate based on the available bandwidth information corresponding to each target network channel.

[0077] Exemplarily, S230 may include: determining the range of single-frame sizes allowed to be transmitted for each target network channel based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream; determining the maximum single-frame size allowed to be transmitted for each target network channel based on the range of single-frame sizes, and determining the target frame rate corresponding to each target network channel based on the maximum single-frame size and the available bandwidth information.

[0078] Among them, the single-frame size can refer to the data volume size of a single video frame. The range of single-frame sizes can consist of the minimum single-frame size and the maximum single-frame size. The minimum single-frame size can refer to the minimum data volume of a single video frame. The maximum single-frame size can refer to the maximum data volume of a single video frame. The single-frame size can be used to characterize the image quality of the video frame. For example, the larger the single-frame size, the higher the image quality of the video frame.

[0079] Specifically, the maximum value of the single-frame size allowed to be transmitted for each target network channel can be determined based on the available bandwidth information corresponding to each target network channel and the preset minimum frame rate. The minimum value of the single-frame size allowed to be transmitted for each target network channel can be determined based on the available bandwidth information corresponding to each target network channel and the video frame rate of the first video stream, so as to obtain the range of the single-frame size allowed to be transmitted for each target network channel. By comparing the ranges of the single-frame sizes allowed to be transmitted for each target network channel, the maximum single-frame size that is allowed to be transmitted for each target network channel is determined, that is, the maximum single-frame size common to all target network channels. Divide the available bandwidth information corresponding to each target network channel by the maximum single-frame size, and the obtained division result is used as the target frame rate corresponding to each target network channel. By using the available bandwidth information corresponding to each target network channel, the optimal frame rate allocation result under the highest image quality can be determined, thereby ensuring the image quality of transmitting the video using multiple target network channels.

[0080] Exemplarily, based on the available bandwidth information, the preset minimum frame rate, and the video frame rate of the first video stream, determining the range of the single-frame size allowed to be transmitted for each target network channel may include:

[0081] Divide the current available bandwidth information corresponding to the current target network channel by the preset minimum frame rate to obtain the maximum value of the single-frame size allowed to be transmitted for the current target network channel; divide the current available bandwidth information corresponding to the current target network channel by the video frame rate of the first video stream to obtain the minimum value of the single-frame size allowed to be transmitted for the current target network channel.

[0082] Specifically, each target network channel can be used as the current target network channel, and the range of the single-frame size allowed to be transmitted for each target network channel can be determined through the above steps.

[0083] S240. Based on the target frame rate, perform polling allocation of video frames for the first video stream to determine the second video stream corresponding to each target network channel.

[0084] Specifically, based on the target frame rate corresponding to each target network channel, perform polling allocation on each video frame in the first video stream to obtain the second video stream with the target frame rate corresponding to each target network channel.

[0085] For example, if there are two target network channels, the target frame rate corresponding to target network channel 1 can be divided by the target frame rate corresponding to target network channel 2 to obtain a frame rate multiple, and each video frame in the first video stream can be evenly and pollingly distributed according to this frame rate multiple. For example, if the frame rate multiple is 2 and the first video stream is {video frame F1, video frame F2, video frame F3, video frame F4, video frame F5, video frame F6, video frame F7, video frame F8...}, after polling distribution, the second video stream corresponding to target network channel 1 is {video frame F1, video frame F2, video frame F4, video frame F5, video frame F7, video frame F8...}, and the second video stream corresponding to target network channel 2 is {video frame F3, video frame F6...}.

[0086] S250. Perform video encoding on the second video stream corresponding to each target network channel to determine the third video stream corresponding to each target network channel after encoding.

[0087] Specifically, the sender can configure the frame rate parameter and bit rate parameter in the video encoder based on the target frame rate and available bandwidth corresponding to each target network channel, so that the video encoder in each target network channel encodes according to the configured frame rate and bit rate. To ensure consistent image quality in all target network channels, the video encoder in each target network channel can be configured with the same quantization parameter QP (Quantization Parameter) and group of pictures GOP (GroupOf Pictures) size.

[0088] It should be noted that the sender can periodically and continuously detect the available bandwidth information and network latency information in each target network channel. If the test results change significantly from the current stage, re-target the network bandwidth based on the currently measured network latency information, and re-determine the target frame rate corresponding to each target network channel based on the currently measured available bandwidth information, and update the encoding parameters in the video encoder to make it more in line with the current network situation, further ensuring the success rate of video transmission and image quality.

[0089] S260. Perform cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel.

[0090] S270. Transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0091] The technical solution of the embodiments of the present disclosure can determine the target frame rate that adapts to the available bandwidth and has the highest image quality based on the available bandwidth information, preset minimum frame rate, and video frame rate corresponding to the first video stream corresponding to each target network channel, further improving the success rate of video transmission and video display effect.

[0092] Figure 4 The flowchart shows a video transmission method provided by an embodiment of the present disclosure. Based on the above-mentioned disclosed embodiments, the step of "performing cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel" is optimized. The explanations of the same or corresponding terms in the above-mentioned disclosed embodiments are not repeated here.

[0093] As Figure 4 shown, the video transmission method specifically includes the following steps:

[0094] S310. Obtain a first video stream and at least two target network channels.

[0095] S320. Perform a splitting process on the first video stream to determine the second video stream corresponding to each target network channel.

[0096] S330. Perform video encoding on the second video stream corresponding to each target network channel to determine the third video stream corresponding to each target network channel after encoding.

[0097] S340. Determine the allocated network channel corresponding to the current target network channel, where the allocated network channel is other target network channels except the current target network channel.

[0098] Specifically, each target network channel can be used as the current target network channel, and by executing steps S340-350, the target redundant data stream corresponding to each target network channel can be determined. For example, a cross-channel transmission allocation relationship can be established in advance based on the actual scenario and service requirements, so that the allocated network channel corresponding to the current target network channel can be determined based on the pre-established cross-channel transmission allocation relationship. For example, if there are two target network channels and the cross-channel transmission allocation relationship is: target network channel 1 corresponds to target network channel 2, and target network channel 2 corresponds to target network channel 1, then when the current target network channel is target network channel 1, the corresponding allocated network channel is target network channel 2, thus realizing cross-channel allocation.

[0099] For another example, if there are at least three target network channels, the assigned network channel corresponding to the current target network channel may refer to all other target network channels except the current target network channel, so that the redundant data of the third video streams corresponding to all other target network channels can be transmitted through the current target network channel. Or, the assigned network channel corresponding to the current target network channel may refer to one other target network channel except the current target network channel, so that only the redundant data stream of the third video stream corresponding to one other target network channel is transmitted through the current target network channel, thereby saving network bandwidth. For this case, it is necessary to ensure that there is another target network channel for transmitting the redundant data stream of the third video stream corresponding to each target network channel, so as to ensure that the redundant data stream of each third video stream will be transmitted across paths. For example, if there are three target network channels, the cross-channel transmission assignment relationship is: target network channel 1 corresponds to target network channel 2, target network channel 2 corresponds to target network channel 3, and target network channel 3 corresponds to target network channel 1. When the current target network channel is target network channel 2, the corresponding assigned network channel is target network channel 3, thus realizing single cross-channel assignment and further saving network bandwidth.

[0100] S350. Perform redundant encoding on the third video stream corresponding to the assigned network channel to obtain the target redundant data stream corresponding to the current target network channel.

[0101] Specifically, the I-frame redundancy ratio and the P-frame redundancy ratio can be set in advance based on the content importance, and based on the I-frame redundancy ratio and the P-frame redundancy ratio, redundant encoding is performed on the third video stream corresponding to the assigned network channel, such as FEC encoding, and the obtained redundant data stream is used as the target redundant data stream corresponding to the current target network channel. For example, the I-frame redundancy ratio is set to 10%, and the P-frame redundancy ratio is set to 5%, so that 10% redundant data can be generated for all I-frames in the third video stream corresponding to the assigned network channel, and 5% redundant data can be generated for the P-frames. If the amount of redundant data of a P-frame is less than one packet (such as 1024 KB), multiple consecutive P-frames can be combined to generate redundant data, so as to provide stronger protection for the more important I-frames.

[0102] S360. Transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0103] Exemplarily, Figure 5 An example of the working process of a sender is given, such as Figure 5As shown, the sending end corresponds to two target network channels, and each target network channel corresponds to a video encoder and a redundant encoder. After the first video stream is split at the sending end, the obtained second video stream 1 and second video stream 2 are respectively input into video encoder 1 and video encoder 2 for video encoding, obtaining third video stream 1 and third video stream 2. The third video stream 1 is input into the redundant encoder 2 corresponding to the target network channel 2 for redundant encoding, obtaining the original redundant data stream corresponding to the third video stream 1, that is, the target redundant data stream 1. Similarly, the third video stream 2 is input into the redundant encoder 1 corresponding to the target network channel 1 for redundant encoding, obtaining the original redundant data stream corresponding to the third video stream 2, that is, the target redundant data stream 1. The third video stream 1 and the target redundant data stream 2 are transmitted through the target network channel 1, and the third video stream 2 and the target redundant data stream 1 are transmitted through the target network channel 2, so that the third video stream and the corresponding original redundant data stream can be transmitted through different network channels. Furthermore, when there is a problem with the third video stream transmitted through a certain target network channel, the redundant data stream transmitted through another target network path can be directly used to quickly recover the third video stream, thereby improving the success rate and efficiency of data transmission.

[0104] In the technical solution of this embodiment of the present disclosure, by determining the allocated network channel corresponding to the current target network channel, where the allocated network channel is other target network channels except the current target network channel, and performing redundant encoding on the third video stream corresponding to the allocated network channel, the target redundant data stream corresponding to the current target network channel is obtained, so that the third video stream and the corresponding original redundant data stream can be transmitted through different network channels, thereby effectively improving the success rate and efficiency of data transmission.

[0105] On the basis of the above technical solution, S350 may include: obtaining the current packet loss rate corresponding to the current target network channel; determining the redundant data ratio corresponding to a single video frame based on the current packet loss rate; and performing redundant encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio to obtain the target redundant data stream corresponding to the current target network channel.

[0106] Specifically, the sending end can detect and obtain the current packet loss rate corresponding to the current target network channel, and can determine the current packet loss rate as the redundant data ratio corresponding to a single video frame. Based on this redundant data ratio, redundant encoding can be performed on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream at this redundant data ratio. For example, forward error correction encoding can be performed on the third video stream corresponding to the allocated network channel based on the redundant data ratio, and the obtained encoded data stream is used as the target redundant data stream corresponding to the current target network channel.

[0107] Exemplarily, if the data volume of the target redundant data stream is greater than the remaining available bandwidth corresponding to the current target network channel, the redundant data ratio corresponding to the remaining available bandwidth can be determined, and redundant encoding can be performed based on this redundant data ratio, so that the data volume of the target redundant data stream after redundant encoding is equal to the remaining available bandwidth corresponding to the current target network channel, thereby dynamically adapting to the current network bandwidth and further ensuring the success rate of the transmission of the target redundant data stream.

[0108] Figure 6 FIG. 4 is a schematic flowchart of a video transmission method provided by an embodiment of the present disclosure. Based on the above-described disclosed embodiments, the embodiment of the present disclosure details the process of determining a target video stream by a receiving end based on video streams and redundant data streams received through each target network channel. The explanations of the same or corresponding terms in the above-described disclosed embodiments are not repeated here.

[0109] As Figure 6 shown, the video transmission method specifically includes the following steps:

[0110] S410. The sending end obtains a first video stream and at least two target network channels.

[0111] S420. The sending end performs a splitting process on the first video stream to determine a second video stream corresponding to each target network channel.

[0112] S430. The sending end performs video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding.

[0113] S440. The sending end performs cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel.

[0114] S450. The sending end transmits the corresponding third video stream and target redundant data stream through each target network channel.

[0115] S460. The receiving end performs reverse cross-channel allocation on the redundant data stream received through each target network channel to determine an original redundant data stream corresponding to each target network channel.

[0116] Among them, the video stream received through each target network channel may be a complete third video stream or a partial third video stream sent by each target network channel. The redundant data stream received through each target network channel may be a complete target redundant data stream or a partial target redundant data stream sent by each target network channel. The original redundant data stream corresponding to the target network channel may refer to the redundant data stream of the video stream itself sent by the target network channel.

[0117] Specifically, a cross-channel reception allocation relationship can be established in advance. The cross-channel reception allocation relationships are opposite corresponding relationships. The receiving end can, based on the pre-established cross-channel reception allocation relationship, perform reverse cross-channel allocation on the redundant data streams received through each target network channel to obtain the original redundant data streams corresponding to each target network channel. For example, if the cross-channel transmission allocation relationship is: target network channel 1 corresponds to target network channel 2, target network channel 2 corresponds to target network channel 3, and target network channel 3 corresponds to target network channel 1, the corresponding cross-channel reception allocation relationship is: target network channel 1 corresponds to target network channel 3, target network channel 2 corresponds to target network channel 1, and target network channel 3 corresponds to target network channel 2. Based on this cross-channel reception allocation relationship, the redundant data stream received by target network channel 1 can be determined as the original redundant data stream corresponding to target network channel 3. The redundant data stream received by target network channel 2 can be determined as the original redundant data stream corresponding to target network channel 1. The redundant data stream received by target network channel 3 can be determined as the original redundant data stream corresponding to target network channel 2.

[0118] For example, Figure 7 An example of the working process of the receiving end is given. Figure 7 The receiving process in Figure 5 corresponds to the sending process in Figure 7 In

[0119] S470. The receiving end restores and decodes the video stream and the corresponding original redundant data stream received through each target network channel to determine the target video stream.

[0120] Among them, the target video stream may refer to the video stream finally received by the receiving end. The target video stream can be the first video stream, or a low-frame-rate first video stream, such as the second video stream.

[0121] Specifically, as Figure 7 shown, the receiving end restores and decodes the video stream 1 and the corresponding original redundant data stream 1 received through the target network channel to obtain the second video stream 1 corresponding to the target network channel 1. Similarly, the second video stream 2 corresponding to the target network channel 2 is obtained, and the first video stream 1 and the second video stream 2 can be merged according to a preset merging method matching the preset splitting method to obtain the first video stream, that is, the target video stream, and the target video stream can be displayed on the receiving end, thus ensuring the success rate of video transmission.

[0122] Exemplarily, S470 may include: determining a restored third video stream based on the video streams received through each target network channel and the corresponding original redundant data streams, and decoding the third video stream to obtain a second video stream corresponding to each target network channel; performing a merging process on the second video streams corresponding to each target network channel to determine a first video stream, and using the first video stream as the target video stream.

[0123] Specifically, Figure 8 An example of the target video stream determined by the receiving end is given. For Figure 8 the first receiving scenario, if the receiving end successfully receives a complete third video stream through each target network channel, there is no need for restoration. Directly decode each third video stream to obtain the corresponding second video stream, and merge all the second video streams to obtain the original first video stream, so that a high-frame-rate original video stream can be obtained, as shown by the direction of the dashed arrow in Figure 8 . For Figure 8 the second receiving scenario, if the receiving end does not successfully receive a complete third video stream through each target network channel, the third video stream can be restored based on the received partial third video streams and the corresponding original redundant data streams, and the restored third video stream is decoded to obtain the corresponding second video stream, and then merged to obtain the original first video stream, so that a high-frame-rate original video stream can also be obtained, as shown by the direction of the solid arrow in Figure 8 .

[0124] Exemplarily, S470 may further include: if only partial target network channels are restored and decoded to obtain the corresponding second video streams based on the video streams received through each target network channel and the corresponding original redundant data streams, determining the target video stream based on the decoded second video streams.

[0125] Specifically, if the corresponding third video streams cannot be restored due to poor network quality of some target network channels, the target video stream can be determined based on the second video streams restored and decoded by other target network channels. For example, for Figure 8 the third receiving scenario, the third video stream corresponding to target network channel 1 cannot be restored, and only the third video stream corresponding to target network channel 2 is restored. At this time, the second video stream obtained by directly decoding the third video stream restored by target network channel 2 can be used as the target video stream, so that a low-frame-rate original video stream can be obtained even when the network quality is poor, thereby avoiding video stuttering and ensuring smoothness.

[0126] For another example, if there are at least two target network channels that recover and decode the corresponding second video streams, then based on the frame rate corresponding to each recovered and decoded second video stream, the second video stream with the highest frame rate is taken as the target video stream. Alternatively, all the recovered and decoded second video streams can be merged, and the merged video stream is taken as the target video stream, so as to further increase the frame rate of the displayed video stream, ensure the smoothness of video display, and thus improve the user viewing experience.

[0127] In the technical solution of the embodiment of the present disclosure, the receiving end performs reverse cross-channel allocation on the redundant data streams received through each target network channel, determines the original redundant data stream corresponding to each target network channel, and recovers and decodes the video stream received through each target network channel and the corresponding original redundant data stream to determine the target video stream, so that recovery and decoding can be performed quickly, ensuring the success rate of video transmission.

[0128] Figure 9 It is a schematic structural diagram of a video transmission device provided by an embodiment of the present disclosure. As Figure 9 shown, the device specifically includes: an information acquisition module 510, a shunt processing module 520, a video stream encoding module 530, a redundant data stream determination module 540, and a video stream transmission module 550.

[0129] Among them, the information acquisition module 510 is used to acquire the first video stream and at least two target network channels; the shunt processing module 520 is used to perform shunt processing on the first video stream to determine the second video stream corresponding to each target network channel; the video stream encoding module 530 is used to perform video encoding on the second video stream corresponding to each target network channel to determine the third video stream corresponding to each target network channel after encoding; the redundant data stream determination module 540 is used to perform cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel; the video stream transmission module 550 is used to transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0130] In the technical solution of the embodiment of the present disclosure, by performing shunt processing on the first video stream, the second video stream corresponding to each target network channel is determined, and the data volume of the shunted second video stream is smaller than that of the first video stream. Video encoding is performed on each second video stream to determine the third video stream corresponding to each target network channel after encoding, and cross-channel allocation and redundant encoding are performed on each third video stream to determine the target redundant data stream corresponding to each target network channel. The corresponding third video stream and target redundant data stream are transmitted through each target network channel, so as to transmit video data simultaneously using at least two target network channels, and the video data transmitted by each target network channel is a part of the first video stream and the target redundant data stream allocated across channels, thus not increasing the network bandwidth cost, and when the network quality of one network channel is poor, the video stream can also be restored using the redundant data stream sent by other network channels, thereby effectively improving the success rate of video transmission and also improving the efficiency of video transmission without retransmission.

[0131] Based on the above technical solution, the information acquisition module 510 is specifically configured to:

[0132] Obtain the network delay duration corresponding to each candidate network channel; determine the maximum delay time difference between two network channels based on the video frame rate corresponding to the first video stream; and determine the target network channel from multiple candidate network channels based on the network delay duration and the maximum delay time difference.

[0133] Based on the above technical solutions, the shunt processing module 520 includes:

[0134] A target frame rate determination sub-module, configured to determine the target frame rate corresponding to each target network channel based on the video frame rate corresponding to the first video stream;

[0135] A second video stream determination sub-module, configured to perform polling allocation of video frames on the first video stream based on the target frame rate to determine the second video stream corresponding to each target network channel.

[0136] Based on the above technical solutions, the target frame rate determination sub-module includes:

[0137] An available bandwidth information acquisition unit, configured to acquire the available bandwidth information corresponding to each target network channel;

[0138] A target frame rate determination unit, configured to determine the target frame rate corresponding to each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream.

[0139] Based on the above technical solutions, the target frame rate determination unit includes:

[0140] A single-frame size range determination subunit, configured to determine a single-frame size range allowed to be transmitted by each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream;

[0141] A target frame rate determination subunit, configured to determine a maximum single-frame size allowed to be transmitted by each target network channel based on the single-frame size range, and determine a target frame rate corresponding to each target network channel based on the maximum single-frame size and the available bandwidth information.

[0142] Based on the above technical solutions, the single-frame size range determination subunit is specifically configured to:

[0143] Divide the current available bandwidth information corresponding to the current target network channel by the preset minimum frame rate to obtain the maximum single-frame size allowed to be transmitted by the current target network channel; divide the current available bandwidth information corresponding to the current target network channel by the video frame rate corresponding to the first video stream to obtain the minimum single-frame size allowed to be transmitted by the current target network channel.

[0144] Based on the above technical solutions, the redundant data stream determination module 540 includes:

[0145] An allocated network channel determination sub-module, configured to determine an allocated network channel corresponding to the current target network channel, where the allocated network channel is other target network channels except the current target network channel;

[0146] A redundant data stream determination sub-module, configured to perform redundant encoding on the third video stream corresponding to the allocated network channel to obtain a target redundant data stream corresponding to the current target network channel.

[0147] Based on the above technical solutions, the redundant data stream determination sub-module includes:

[0148] A current packet loss rate acquisition unit, configured to acquire a current packet loss rate corresponding to the current target network channel;

[0149] A redundant data ratio determination unit, configured to determine a redundant data ratio corresponding to a single video frame based on the current packet loss rate;

[0150] A redundant data stream determination unit, configured to perform redundant encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio to obtain a target redundant data stream corresponding to the current target network channel.

[0151] Based on the above technical solutions, the redundant data stream determination unit is specifically configured to:

[0152] Based on the redundancy data ratio, perform forward error correction coding on the third video stream corresponding to the allocated network channel, and use the obtained coded data stream as the target redundancy data stream corresponding to the current target network channel.

[0153] Based on the above technical solutions, the device further includes:

[0154] An original redundancy data stream determination module, configured to perform reverse cross-channel allocation on the redundancy data streams received through each target network channel to determine the original redundancy data stream corresponding to each target network channel;

[0155] A target video stream determination module, configured to recover and decode the video streams and the corresponding original redundancy data streams received through each target network channel to determine the target video stream.

[0156] Based on the above technical solutions, the target video stream determination module is specifically configured to:

[0157] Based on the video streams and the corresponding original redundancy data streams received through each target network channel, determine the recovered third video stream, decode the third video stream to obtain the second video stream corresponding to each target network channel; perform a merging process on the second video streams corresponding to each target network channel to determine the first video stream, and use the first video stream as the target video stream.

[0158] Based on the above technical solutions, the target video stream determination module is further specifically configured to:

[0159] If, based on the video streams and the corresponding original redundancy data streams received through each target network channel, only some of the target network channels recover and decode the corresponding second video streams, then determine the target video stream based on the decoded second video streams.

[0160] The video transmission device provided by the embodiments of the present disclosure can execute the video transmission method provided by any embodiment of the present disclosure, and has the corresponding functional modules and beneficial effects for executing the video transmission method.

[0161] It should be noted that the various units and modules included in the above device are only divided according to functional logic, but are not limited to the above division, as long as the corresponding functions can be realized; in addition, the specific names of the functional units are only for the convenience of mutual distinction and do not limit the protection scope of the embodiments of the present disclosure.

[0162] Figure 10 It is a schematic structural diagram of an electronic device provided by the embodiments of the present disclosure. Refer to the following Figure 10 , which shows an electronic device suitable for implementing the embodiments of the present disclosure (for example Figure 10Schematic structural diagram of the terminal device or server) 500 therein. The terminal device in the embodiments of the present disclosure may include, but is not limited to, mobile terminals such as mobile phones, laptop computers, digital broadcast receivers, PDAs (Personal Digital Assistants), PADs (Tablet Computers), PMPs (Portable Multimedia Players), in-vehicle terminals (such as in-vehicle navigation terminals), etc., and fixed terminals such as digital TVs, desktop computers, etc. Figure 10 The electronic device shown is merely an example and should not impose any limitations on the functions and scope of use of the embodiments of the present disclosure.

[0163] As Figure 10 shown, the electronic device 500 may include a processing device (such as a central processing unit, a graphics processing unit, etc.) 501, which may perform various appropriate actions and processes according to a program stored in the read-only memory (ROM) 502 or a program loaded from the storage device 508 into the random access memory (RAM) 503. In the RAM 503, various programs and data required for the operation of the electronic device 500 are also stored. The processing device 501, the ROM 502, and the RAM 503 are connected to each other through a bus 504. The editing / output (I / O) interface 505 is also connected to the bus 504.

[0164] Generally, the following devices may be connected to the I / O interface 505: an input device 506 including, for example, a touch screen, a touchpad, a keyboard, a mouse, a camera, a microphone, an accelerometer, a gyroscope, etc.; an output device 507 including, for example, a liquid crystal display (LCD), a speaker, a vibrator, etc.; a storage device 508 including, for example, a magnetic tape, a hard disk, etc.; and a communication device 509. The communication device 509 may allow the electronic device 500 to communicate with other devices wirelessly or wiredly to exchange data. Although Figure 10 the electronic device 500 with various devices is shown, it should be understood that it is not required to implement or have all the shown devices. Instead, more or fewer devices may be implemented or had.

[0165] Specifically, according to the embodiments of the present disclosure, the processes described above with reference to the flowcharts may be implemented as computer software programs. For example, the embodiments of the present disclosure include a computer program product, which includes a computer program carried on a non-transitory computer-readable medium, and the computer program includes program codes for performing the methods shown in the flowcharts. In such an embodiment, the computer program may be downloaded and installed from the network through the communication device 509, or installed from the storage device 508, or installed from the ROM 502. When the computer program is executed by the processing device 501, the above-mentioned functions defined in the methods of the embodiments of the present disclosure are executed.

[0166] The names of the messages or information exchanged between multiple devices in the embodiments of the present disclosure are for illustrative purposes only and are not intended to limit the scope of these messages or information.

[0167] The electronic device provided in the embodiments of the present disclosure and the video transmission method provided in the above embodiments belong to the same inventive concept. Technical details not described in detail in this embodiment can be referred to in the above embodiments, and this embodiment has the same beneficial effects as the above embodiments.

[0168] The embodiments of the present disclosure provide a computer storage medium, on which a computer program is stored, and when the program is executed by a processor, it implements the video transmission method provided in the above embodiments.

[0169] It should be noted that the computer-readable medium in the present disclosure may be a computer-readable signal medium, a computer-readable storage medium, or any combination of the two. The computer-readable storage medium may be, for example, but not limited to, an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the above. More specific examples of the computer-readable storage medium may include, but are not limited to: an electrical connection with one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the above. In the present disclosure, the computer-readable storage medium may be any tangible medium that contains or stores a program, and the program can be used by or in combination with an instruction execution system, apparatus, or device. In the present disclosure, the computer-readable signal medium may include a data signal propagated in a baseband or as part of a carrier wave, in which computer-readable program code is carried. Such a propagated data signal may take various forms, including but not limited to electromagnetic signals, optical signals, or any suitable combination of the above. The computer-readable signal medium may also be any computer-readable medium other than the computer-readable storage medium, and the computer-readable signal medium can send, propagate, or transmit a program for use by or in combination with an instruction execution system, apparatus, or device. The program code contained on the computer-readable medium can be transmitted by any suitable medium, including but not limited to: wires, optical cables, RF (radio frequency), etc., or any suitable combination of the above.

[0170] In some embodiments, the client and the server can communicate using any currently known or future-developed network protocol such as HTTP (HyperText Transfer Protocol), and can be interconnected with digital data communication in any form or medium (e.g., a communication network). Examples of communication networks include local area networks ("LANs"), wide area networks ("WANs"), the Internet (e.g., the Internet), and end-to-end networks (e.g., ad hoc end-to-end networks), as well as any currently known or future-developed networks.

[0171] The above computer-readable medium can be included in the above electronic device; or can exist separately without being assembled into the electronic device.

[0172] The above computer-readable medium carries one or more programs, which, when executed by the electronic device, cause the electronic device to: obtain a first video stream and at least two target network channels; perform a splitting process on the first video stream to determine a second video stream corresponding to each target network channel; perform video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding; perform cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel; and transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0173] Computer program code for performing the operations of the present disclosure can be written in one or more programming languages or combinations thereof. The programming languages include, but are not limited to, object-oriented programming languages such as Java, Smalltalk, C++, and also include conventional procedural programming languages such as the "C" language or similar programming languages. The program code can be executed entirely on the user's computer, partially on the user's computer, executed as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the case of a remote computer, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computer (e.g., by using an Internet service provider to connect through the Internet).

[0174] The flowcharts and block diagrams in the accompanying drawings illustrate the possible architectures, functions, and operations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagram may represent a module, a segment of a program, or a portion of code that contains one or more executable instructions for implementing a specified logical function. It should also be noted that in some alternative implementations, the functions noted in the blocks may occur in a different order than noted in the accompanying drawings. For example, two consecutive blocks shown may actually be executed substantially in parallel, or they may sometimes be executed in the reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, can be implemented by a dedicated hardware-based system that performs the specified functions or operations, or can be implemented by a combination of dedicated hardware and computer instructions.

[0175] The units described in the embodiments of the present disclosure can be implemented in software or in hardware. Among them, the name of the unit does not constitute a limitation on the unit itself in some cases. For example, the first acquisition unit can also be described as "the unit for acquiring at least two Internet protocol addresses".

[0176] The functions described above in this article can be performed at least in part by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that can be used include: field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on a chip (SOCs), complex programmable logic devices (CPLDs), and so on.

[0177] In the context of the present disclosure, a machine-readable medium can be a tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. A machine-readable medium can be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium can include, but is not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any suitable combination of the foregoing. More specific examples of a machine-readable storage medium would include an electrical connection based on one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0178] According to one or more embodiments of the present disclosure, [Example 1] provides a video transmission method, including:

[0179] Obtain a first video stream and at least two target network channels;

[0180] Perform a splitting process on the first video stream to determine a second video stream corresponding to each target network channel;

[0181] Perform video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding;

[0182] Perform cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel;

[0183] Transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0184] According to one or more embodiments of the present disclosure, [Example 2] provides a video transmission method, further including:

[0185] Optionally, obtaining at least two target network channels includes:

[0186] Obtain the network delay duration corresponding to each candidate network channel;

[0187] Based on the video frame rate corresponding to the first video stream, determine the maximum delay time difference between two network channels;

[0188] Based on the network delay duration and the maximum delay time difference, determine the target network channels from multiple candidate network channels.

[0189] According to one or more embodiments of the present disclosure, [Example 3] provides a video transmission method, further including:

[0190] Optionally, the performing a splitting process on the first video stream to determine a second video stream corresponding to each target network channel includes:

[0191] Based on the video frame rate corresponding to the first video stream, determine the target frame rate corresponding to each target network channel;

[0192] Based on the target frame rate, perform polling allocation of video frames on the first video stream to determine a second video stream corresponding to each target network channel.

[0193] According to one or more embodiments of the present disclosure, [Example 4] provides a video transmission method, further including:

[0194] Optionally, the based on the video frame rate corresponding to the first video stream, determining the target frame rate corresponding to each target network channel includes:

[0195] Obtain the available bandwidth information corresponding to each target network channel;

[0196] Based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream, determine the target frame rate corresponding to each target network channel.

[0197] According to one or more embodiments of the present disclosure, [Example Five] provides a video transmission method, further including:

[0198] Optionally, the determining the target frame rate corresponding to each target network channel based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream includes:

[0199] Based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream, determine the range of single-frame sizes allowed to be transmitted for each target network channel;

[0200] Based on the range of single-frame sizes, determine the maximum single-frame size allowed to be transmitted for each target network channel, and based on the maximum single-frame size and the available bandwidth information, determine the target frame rate corresponding to each target network channel.

[0201] According to one or more embodiments of the present disclosure, [Example Six] provides a video transmission method, further including:

[0202] Optionally, the determining the range of single-frame sizes allowed to be transmitted for each target network channel based on the available bandwidth information, the preset minimum frame rate, and the video frame rate corresponding to the first video stream includes:

[0203] Divide the current available bandwidth information corresponding to the current target network channel by the preset minimum frame rate to obtain the maximum single-frame size allowed to be transmitted for the current target network channel;

[0204] Divide the current available bandwidth information corresponding to the current target network channel by the video frame rate corresponding to the first video stream to obtain the minimum single-frame size allowed to be transmitted for the current target network channel.

[0205] According to one or more embodiments of the present disclosure, [Example Seven] provides a video transmission method, further including:

[0206] Optionally, the performing cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel includes:

[0207] Determine the allocated network channel corresponding to the current target network channel, where the allocated network channel is other target network channels except the current target network channel;

[0208] Perform redundant encoding on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream corresponding to the current target network channel.

[0209] According to one or more embodiments of the present disclosure, [Example Eight] provides a video transmission method, further including:

[0210] Optionally, the performing redundant encoding on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream corresponding to the current target network channel includes:

[0211] Obtain the current packet loss rate corresponding to the current target network channel;

[0212] Based on the current packet loss rate, determine the redundant data ratio corresponding to a single video frame;

[0213] Based on the redundant data ratio, perform redundant encoding on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream corresponding to the current target network channel.

[0214] According to one or more embodiments of the present disclosure, [Example Nine] provides a video transmission method, further including:

[0215] Optionally, the performing redundant encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio to obtain the target redundant data stream corresponding to the current target network channel includes:

[0216] Based on the redundant data ratio, perform forward error correction encoding on the third video stream corresponding to the allocated network channel, and use the obtained encoded data stream as the target redundant data stream corresponding to the current target network channel.

[0217] According to one or more embodiments of the present disclosure, [Example Ten] provides a video transmission method, further including:

[0218] Optionally, after transmitting the corresponding third video stream and target redundant data stream through each target network channel, further including:

[0219] Perform reverse cross-channel allocation on the redundant data streams received through each target network channel to determine the original redundant data stream corresponding to each target network channel;

[0220] Perform recovery and decoding on the video stream and the corresponding original redundant data stream received through each target network channel to determine the target video stream.

[0221] According to one or more embodiments of the present disclosure, [Example Eleven] provides a video transmission method, further including:

[0222] Optionally, the restoring and decoding the video stream received through each target network channel and the corresponding original redundant data stream to determine the target video stream includes:

[0223] Based on the video stream received through each target network channel and the corresponding original redundant data stream, determining the restored third video stream, and decoding the third video stream to obtain the second video stream corresponding to each target network channel;

[0224] Performing a merging process on the second video stream corresponding to each target network channel to determine the first video stream, and using the first video stream as the target video stream.

[0225] According to one or more embodiments of the present disclosure, [Example Twelve] provides a video transmission method, further including:

[0226] Optionally, the restoring and decoding the video stream received through each target network channel and the corresponding original redundant data stream to determine the target video stream further includes:

[0227] If, based on the video stream received through each target network channel and the corresponding original redundant data stream, only some of the target network channels restore and decode the corresponding second video stream, then determining the target video stream based on the decoded second video stream.

[0228] According to one or more embodiments of the present disclosure, [Example Thirteen] provides a video transmission device, including:

[0229] An information acquisition module, configured to acquire a first video stream and at least two target network channels;

[0230] A shunt processing module, configured to perform a shunt process on the first video stream to determine the second video stream corresponding to each target network channel;

[0231] A video stream encoding module, configured to perform video encoding on the second video stream corresponding to each target network channel to determine the third video stream corresponding to each target network channel after encoding;

[0232] A redundant data stream determination module, configured to perform cross-channel allocation and redundant encoding on each third video stream to determine the target redundant data stream corresponding to each target network channel;

[0233] A video stream transmission module, configured to transmit the corresponding third video stream and target redundant data stream through each target network channel.

[0234] The above description is only a preferred embodiment of the present disclosure and an explanation of the applied technical principles. Those skilled in the art should understand that the scope of disclosure involved in the present disclosure is not limited to the technical solutions formed by the specific combination of the above technical features, but should also cover other technical solutions formed by any combination of the above technical features or their equivalent features without departing from the above disclosure concept. For example, the technical solutions formed by mutually replacing the above features with the technical features (but not limited to) having similar functions disclosed in the present disclosure.

[0235] In addition, although the operations are depicted in a particular order, this should not be construed as requiring that the operations be performed in the particular order shown or in sequential order. In certain environments, multitasking and parallel processing may be advantageous. Similarly, although a number of specific implementation details are included in the above discussion, these should not be construed as limiting the scope of the present disclosure. Certain features described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, the various features described in the context of a single embodiment may also be implemented separately or in any suitable sub-combination in multiple embodiments.

[0236] Although the subject matter has been described in language specific to structural features and / or methodological act logical acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are merely example forms for implementing the claims.

Claims

1. A video transmission method, characterized in that, comprising: obtaining a first video stream and at least two target network channels; performing a splitting process on the first video stream to determine a second video stream corresponding to each target network channel; performing video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding; performing cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel; transmitting the corresponding third video stream and target redundant data stream through each target network channel.

2. The video transmission method according to claim 1, characterized in that, obtaining at least two target network channels includes: obtaining the network delay duration corresponding to each candidate network channel; determining the maximum delay time difference between two network channels based on the video frame rate corresponding to the first video stream; determining target network channels from multiple candidate network channels based on the network delay duration and the maximum delay time difference.

3. The video transmission method according to claim 1, characterized in that, performing the splitting process on the first video stream to determine a second video stream corresponding to each target network channel includes: determining the target frame rate corresponding to each target network channel based on the video frame rate corresponding to the first video stream; performing polling allocation of video frames on the first video stream based on the target frame rate to determine a second video stream corresponding to each target network channel.

4. The video transmission method according to claim 3, characterized in that, determining the target frame rate corresponding to each target network channel based on the video frame rate corresponding to the first video stream includes: obtaining the available bandwidth information corresponding to each target network channel; determining the target frame rate corresponding to each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream.

5. The video transmission method according to claim 4, characterized in that, determining the target frame rate corresponding to each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream includes: determining the range of single-frame sizes allowed to be transmitted by each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream; determining the maximum single-frame size allowed to be transmitted by each target network channel based on the range of single-frame sizes, and determining the target frame rate corresponding to each target network channel based on the maximum single-frame size and the available bandwidth information.

6. The video transmission method according to claim 5, characterized in that, determining the range of single-frame sizes allowed to be transmitted by each target network channel based on the available bandwidth information, a preset minimum frame rate, and the video frame rate corresponding to the first video stream includes: dividing the current available bandwidth information corresponding to the current target network channel by the preset minimum frame rate to obtain the maximum single-frame size allowed to be transmitted by the current target network channel; Divide the current available bandwidth information corresponding to the current target network channel by the video frame rate corresponding to the first video stream to obtain the minimum single-frame size allowed to be transmitted by the current target network channel.

7. The video transmission method according to claim 1, wherein, the cross-channel allocation and redundant encoding of each third video stream to determine the target redundant data stream corresponding to each target network channel includes: determine the allocated network channel corresponding to the current target network channel, where the allocated network channel is other target network channels except the current target network channel; perform redundant encoding on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream corresponding to the current target network channel.

8. The video transmission method according to claim 7, wherein, the performing redundant encoding on the third video stream corresponding to the allocated network channel to obtain the target redundant data stream corresponding to the current target network channel includes: obtain the current packet loss rate corresponding to the current target network channel; determine the redundant data ratio corresponding to a single video frame based on the current packet loss rate; perform redundant encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio to obtain the target redundant data stream corresponding to the current target network channel.

9. The video transmission method according to claim 8, wherein, the performing redundant encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio to obtain the target redundant data stream corresponding to the current target network channel includes: perform forward error correction encoding on the third video stream corresponding to the allocated network channel based on the redundant data ratio, and use the obtained encoded data stream as the target redundant data stream corresponding to the current target network channel.

10. The video transmission method according to any one of claims 1-9, wherein, after transmitting the corresponding third video stream and target redundant data stream through each target network channel, it further includes: perform reverse cross-channel allocation on the redundant data streams received through each target network channel to determine the original redundant data stream corresponding to each target network channel; perform recovery and decoding on the video stream and the corresponding original redundant data stream received through each target network channel to determine the target video stream.

11. The video transmission method according to claim 10, wherein, the performing recovery and decoding on the video stream and the corresponding original redundant data stream received through each target network channel to determine the target video stream includes: determine the recovered third video stream based on the video stream and the corresponding original redundant data stream received through each target network channel, and decode the third video stream to obtain the second video stream corresponding to each target network channel; perform merging processing on the second video streams corresponding to each target network channel to determine the first video stream, and use the first video stream as the target video stream.

12. The video transmission method according to claim 10, wherein, Restoring and decoding the video stream and the corresponding original redundant data stream received through each target network channel to determine the target video stream further includes: If, based on the video stream and the corresponding original redundant data stream received through each target network channel, only some of the target network channels restore and decode the corresponding second video stream, then determine the target video stream based on the decoded second video stream.

13. A video transmission device Characterized in that It includes: An information acquisition module for acquiring a first video stream and at least two target network channels; A shunt processing module for performing shunt processing on the first video stream to determine a second video stream corresponding to each target network channel; A video stream encoding module for performing video encoding on the second video stream corresponding to each target network channel to determine a third video stream corresponding to each target network channel after encoding; A redundant data stream determination module for performing cross-channel allocation and redundant encoding on each third video stream to determine a target redundant data stream corresponding to each target network channel; A video stream transmission module for transmitting the corresponding third video stream and target redundant data stream through each target network channel.

14. An electronic device Characterized in that The electronic device includes: One or more processors; A storage device for storing one or more programs, When the one or more programs are executed by the one or more processors, the one or more processors implement the video transmission method according to any one of claims 1-12.

15. A storage medium containing computer-executable instructions Characterized in that The computer-executable instructions are used to execute the video transmission method according to any one of claims 1-12 when executed by a computer processor.

Citation Information

Patent Citations

  • Live broadcasting instruction method, client and system

    CN104954633A

  • Real-time video transmission system and method based on multi-channel parallel transmission technology

    CN108322708A