"H.265
The following is the introduction of Baidu Encyclopedia for H.265: H.265 is the new video coding standard established after ITU-T Vceg following H.264. The H.265 standard surrounds the existing video coding standard H.264, reserves the original technologies, and improves some related technologies. New technology uses advanced technology to improve the relationship between code stream, coding quality, delay and algorithm complexity, reaching optimization settings. Specific research contents include: increasing compression efficiency, improving robustness and error recovery capabilities, reducing real-time delays, reducing channel acquisition time and random access delay, reducing complexity, etc. H.264 Due to the algorithm optimization, it can achieve digital image transfer at a speed of less than 1 Mbps; H.265 can achieve 720P (resolution 1280720) ordinary high-definition video can be transmitted by the transmission speed of 1 to 2 Mbps (resolution 1280720) Transfer.
Compared to H.264 has brought a lot of quality improvement, the relevant contrast can access the differences in the difference between H.265 and H.264. In summary, H.265, HEVC as the current very hot video compression method, with respect to the H.264 well known, can bring close to 50% width savings.
related information
Video player architecture
A typical modern player can be divided into three parts: UI, multimedia engine and decoder, architecture model as shown below:
Hard solution support
With the more and more popular of 4K videos, Apple's latest operating system version (Mac Hight Sierra and iOS 11) ushered in HEVC (efficient video coding, also known as H.265). [6]. Compared with the current H.264 video compression standard, its video compression ratio can increase by 50%. With H.265, the video stream media transmission effect is better when the video quality is constant. At the same rate, the quality can bring nearly twice as much as possible. The following figure is a picture of the same resolution (400kpbs 1080p) of the same synonym, with H.265 encoding on the left, and the H.264 encoding is encoded. Generally, the operating system performs the decoding of H.265 encoded video by means of hardware (graphics card), and the benefit is that the hard solution is low, and the decoding speed is fast. However, the hardware decoding support of H.265 encoding in the browser is not popular. Testing is only supported in customized Chromium [7] and EDGE 14 browsers, you can pass this page to test the playback of the browser to the on-demand video encoded by H.265. The picture below is a screenshot of the H.265 video played in Chromium 64: It is necessary to note that hardware decoding requires a user's graphics card to support H.265 CODEC. The currently supported graphics card supported by H.265, mainly includes: Intel HD graphic 4400/4600/5000 / 5500/6000/620, Iris Graphics 5100/5200/6100, NVIDIA GeForce GTX 745, GTX 750, GTX 750 Ti, GTX 850M, GTX 860M, GeForce 830M, 840M, GeForce GTX 970, GTX 980, GTX 970M, GTX 980M GeForce GTX Titan X, GeForce GTX 980 TI, GeForce GTX 750 SE, GTX 950, GTX 960, GeForce GTX 1070, GTX 1080, Geforce GTX 1060, NVIDIA Titan XP, Geforce GTX 1050, GTX 1050 TI.
Web soft solution
In addition to hard-decoding schemes, software decoding is also a valid choice. Since the H.265 video decoding is a CPU intensive task for performance requirements, the performance of the decoder implemented by the web-side scripting language is difficult to meet the requirements. . Based on this, we can compile the C language to the SWC library through the FLASCC [11] compiler, and then call the SWC library with Action Script in the Flash player.
Another approach is based on HTML5, that is, compiling the high-performance decoder of Jinshan Yun, the high-performance decoder of Jinshan Cloud, is present in binary, and the WASM file contains a virtual instruction (similar assembly instruction) that contains the platform-independent. This is also a solution adopted by many mobile platforms.
Related HTML5 technology
The following figure is the background technology of the main modules and dependencies of the player core. Among them, Audio Mse Controller depends on the Media Source Extension API, Stream Loader depends on the stream standard, and H.265 Decoder depends on WebAssembly technology, and each module is divided in different threads, depending on the Web Workers.
Media Source Extensions (Abbreviation MSE):
Provides a function of achieving no plug-in and web-based streaming. With the MSE API (mainly: Media Source, Source Buffer, the media stream can be created via JavaScript and can play via HTMLMEDIAEEMENT element (including: Video and Audio elements). IE11 (Win8 +) and other modern browsers are supported.
Streams
The standard provides an API to create and operate stream data, specifically, including ReadableStream, WritableStream, and TransformStream. This allows us to increase data without having to cache all data into memory. We can use the FETCH API to get video data, and the Body returned is an READABLESTREAM object. The object represents a data source, which maintains a queue to record the underlying data source that has not been read. The CHUNK data in the internal queue can be read through the GetReader () interface of ReadableStream.
Web workers
Let the single-threaded JavaScript have multi-threaded programming capabilities, so that the video player kernel can separate the tasks such as demultiplex, decoding, rendering, UI operation listening, in different threads, and handles computational intensive tasks and interface display, etc. . Inter-worry communication is made through MessageChannel. IE10 + and other modern browsers are supported.
WEBASSEMBLY
It is the web-side bytecode technology, which defines a general, compact, loaded fast-loaded two-way format to compile the target, can play universal hardware performance to be more close to the speed of native applications. Software decoding the video encoded by H.265 in the browser is a very challenging task, and scripting languages such as JavaScript cannot be competent. Therefore, the high-performance decoding library written in the C / C ++ language can be compiled into a bytecode, and then run through the JavaScript call. This technology can be used in a newer version of Chrome, Firefox, Safari, and Edge browser (such as Chrome57 +, Firefox 52+).
H.265 vs H.264
The difference between H.265 and H.264 can access the differences in H.265 and H.264.
The H.265 / HEVC encoding architecture is similar to the architecture of H.264 / AVC, mainly including: intra prediction, inter-intermediction, Transform, Quantization, Go to block filters, entropy codes and other modules.
In the HEVC encoding architecture, the overall is divided into three basic units, namely Coding Unit, Cu, Predict Units, and Transform Unit (TU). Compared to H.264 / AVC, H.265 / HEVC provides more different tools to reduce the yield, in the coding unit, each macroblock / mb size in H.264 is fixed 16x16 Pixels, and the coding unit of H.265 can choose from the smallest 8x8 to the maximum 64x64.
At the same time, the intra prediction mode of H.265 supports 33 directions (H.264 only supports only 8), and provides better motion compensation processing and vector prediction methods. Repeated quality comparison tests have shown that under the same image quality, video size encoded by H.265 will be reduced by approximately 39-44% compared to H.264. This data will also have corresponding changes due to differences in quality control measurement.
Support
iOS
At present, according to Apple's official website, the support of HEVC can be explained by the following sentence: iOS 11 and Macos High Sierra Introduces Support for these New, Industry-Standard Media Formats. That is to say, the following equipment is supported.
iPhone 7 Or iPhone 7 Plus or Lateripad (6th Generation) iPad Pro (10.5 Inch) iPad Pro 12.9-Inch (2nd Generation)
Android
Browser
Currently, the browser is not very friendly for H.265:
Actual combat
At present, HEVC's popularity is not so fast, but we can still try to play H265 video in the web.
Judgment whether to support play
To determine if the platform supports video of H.265 format, it can be judged by the mimeType value of H265: type = "VIDEO / MP4; CODECS = HEVC". E.g:
Var supporthevc = function (video) {
IF (typeof video.canplaytype == 'function') {
Var playable = elem.canplaytype ('Video / MP4; CODECS = "" HEVC "");
IF ((PlayAble.tolowerCase () == 'Maybe') || (PlayAble.tolowerCase () == 'probably')) {
Return True;
}
}
Return False;
}
123456789
If you cannot play the video using H.265, use H.264 to play, so we can set a variety of formats via SOURCE: