What do Netflix use to create videos?

If you have ever wondered what tools, protocols and encryption Netflix use a quick peak into one of their mp4′s shows that they use a lot of the usual tools in their workflow. Note that this sample was derived from the Chrome browser and there are likely different variations for different devices.

For the first chunk / preview
1. The container is an mp4 for avc1
2. The video is packaged using GPAC aka MP4Box (GPAC0.5.1-DEV-rev4944M)
3. Video is H.264 and audio aac
4. H.264 is encoded using x264, settings
x264 – core 118 r234 d84818a – H.264/MPEG-4 AVC codec – Copyleft 2003-2011 – http://www.videolan.org/x264.html – options: cabac=1 ref=3 deblock=1:0:0 analyse=0×1:0×111 me=umh subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=2 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=0 chroma_qp_offset=-2 threads=12 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=2 b_pyramid=0 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=2pass mbtree=1 bitrate=600 ratetol=1.0 qcomp=0.50 qpmin=6 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 aq=1:1.00

For other chunks
1. mp4/dash
2. Netflix encryption – NetflixPstrm
3. Created with Netflix Media Library Version 80.0.158
4. AAC-LC audio
mp4a – MP4 Audio Description) at 8 (87 bytes)
| | | | | | | Channels: 2
| | | | | | | Sample Size: 16
| | | | | | | Sample Rate: 24000.0
| | | | | | | (esds – Extended Sample Description) at 28 (51 bytes)
| | | | | | | | Audio Type: 64
| | | | | | | | Buffer Size: 579
| | | | | | | | Bitrate: 65587
| | | | | | | | Max Bitrate: 107720
| | | | | | | | Audio Specifc Config:
| | | | | | | | Audio Object Type: 2 – AAC LC (Low Complexity)
| | | | | | | | Sampling Frequency: 24000
| | | | | | | | Channel Config: 2 channels – Left, Right
| | | | | | | | SBR Present: 0
5. A DASH index / SIDX box
6. AVC video
(avcC – AVC Configuration) at 78 (56 bytes)
| | | | | | | | Version: 1
| | | | | | | | Profile: 77 (Main)
| | | | | | | | Profile Compatibility: 64 (Main)
| | | | | | | | Level: 3.0
| | | | | | | | NAL Unit Length: 4
| | | | | | | | Sequence Set Count: 1
| | | | | | | | NAL unit type: 7
| | | | | | | | Profile: 77 (Main)
| | | | | | | | Level: 3.0
| | | | | | | | SPS ID: 0
| | | | | | | | Max Frame Num: 16
| | | | | | | | Max Ref Frames: 3
| | | | | | | | Chroma Format: 1 (4:2:0)
| | | | | | | | Bit Depth: 8 (luma), 8 (chroma)
| | | | | | | | Macroblock Width: 32 (512 pixels luma, 256 pixels chroma)
| | | | | | | | Map Unit Height: 24 (384 pixels luma, 192 pixels chroma)
| | | | | | | | VUI parameters present: 1
| | | | | | | | Sample Aspect Ratio: 4:3
| | | | | | | | Timing Info: num_units_in_tick=1001, time_scale=48000, fixed_frame_rate_flag=1
| | | | | | | | NAL/HRD present! (
7. Common Encryption for PlayReady, Widevine and a custom system not registered on the DASH list, assume this is Netflix specific encryption
| pssh – Protection System Specific Header at 372 (702 bytes)
| | System ID: 9A04F079-9840-4286-AB92-E65BE0885F95
| | Version: 0
| | Data Size: 670
| | Header: ��16AESCTRAAAAANQDUfcAAAAAAAAAAA==OgsMEY/8lsI=true
| pssh – Protection System Specific Header at 1074 (52 bytes)
| | System ID: EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
| | Version: 0
| | Data Size: 20
| | Header:��Q
| pssh – Protection System Specific Header at 1126 (76 bytes)
| | System ID: 29701FE4-3CC7-4A34-8C5B-AE90C7439A47
| | Version: 0
| | Data Size: 44
| | Header: ��Q�r����ԗ���P\i���
EH%M�<�^

Encryption is using an IV size of 8 which is best for cross platform compatibility
The KeyID looks quite short: