14 October 2019 - QC Workflow Update
over 5 years ago by Encoding.com Product Team
Changed QC workflow.
- Added support of advanced_fmp4 and fmp4_hls output formats.
- QC Auto/All merged to QC Auto.
- Added qc_check format to validate your own medias.
- QC processing moved to separate job to minimize it influence on transcoding process.
Available Tests
Test Name | Parameter | Supported Formats |
---|---|---|
### GENERAL VALIDATION TESTS | ||
Duration | <qc_duration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
File size | <qc_file_size> | qc_check, mp4 |
Bitrate | <qc_bitrate> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Bitrate mode | <qc_bitrate_mode> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Closed Captions(608/708) are present and maintained | <qc_captions_presented> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
No short segments | <qc_short_segment> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
### VIDEO VALIDATION TESTS | ||
Video codec | <qc_video_codec> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video bitrate | <qc_video_bitrate> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Frame rate | <qc_frame_rate> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video duration | <qc_video_duration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video codec profile | <qc_video_codec_profile> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video level | <qc_video_level> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Frame size | <qc_frame_size> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Aspect ratio | <qc_aspect_ratio> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video streams count | <qc_video_streams_number> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate DTS | <qc_validate_dts> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate PTS | <qc_validate_pts> | qc_check, advanced_hls, advanced_fmp4, fmp4_hls |
PCR Interval is maintained | <qc_pcr_interval> | qc_check, advanced_hls |
PID Interval is maintained | <qc_pid_interval> | qc_check, advanced_hls |
Check b-frames present | <qc_b_frames_present> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Check b-frames DTS grow | <qc_bframe_dts_grow> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
IDR interval is maintained | <qc_idr_interval> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Each segment starts with IDR | <qc_segments_start_with_idr> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
### AUDIO VALIDATION TESTS | ||
Audio codec | <qc_audio_codec> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio bitrate | <qc_audio_bitrate> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio duration | <qc_audio_duration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio bit depth | <qc_audio_bit_depth> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio sample rate | <qc_audio_sample_rate> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio channels | <qc_audio_channels> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio channel layout | <qc_audio_channel_layout> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio streams number | <qc_audio_streams_number> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
### MANIFEST VALIDATION TESTS | ||
Master manifest has proper bitrate | <qc_bitrate_declaration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Master manifest has proper codec | <qc_codec_declaration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Discontinuity tags are in proper placement | <qc_discontinuity_tags> | qc_check, advanced_hls, advanced_fmp4, fmp4_hls |
Proper DRM URI | <qc_drm_uri> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
HLS version number | <qc_hls_version_number> | qc_check, advanced_hls, advanced_fmp4, fmp4_hls |
CUE-OUT:0 proper placement | <qc_match_breakpoints> | qc_check, advanced_hls, advanced_fmp4, fmp4_hls |
Check Sample AES proper encryption | <qc_proper_sample_aes_encryption_declared> | qc_check, advanced_hls |
Target segment duration | <qc_target_segment_duration> | qc_check, advanced_hls, advanced_fmp4, fmp4_hls |
Declared segment duration is correct | <qc_validate_segment_duration> | qc_check, advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Request Template
Auto
<?xml version="1.0"?>
<query>
<userid><<id>></userid> <!-- required-->
<userkey><<key>></userkey> <!-- required-->
<action>AddMedia</action>
<qc_notify>[QCNotifyURL]</qc_notify>
<source>[SourceFile|SourcePlaylist]</source><!-- REQUIRED -->
<format>
<output>[advanced_hls|advanced_dash|advanced_fmp4|fmp4_hls|mp4]</output><!-- REQUIRED -->
<!-- Format fields -->
<qc>auto</qc>
</format>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "AddMedia",
"qc_notify": "[QCNotifyURL]",
"source": "[SourceFile|SourcePlaylist]",
"format": {
"output": "[advanced_hls|advanced_dash|advanced_fmp4|fmp4_hls|mp4]",
"qc": "auto"
}
}
}
Custom Tests
<?xml version="1.0"?>
<query>
<userid><<id>></userid> <!-- required-->
<userkey><<key>></userkey> <!-- required-->
<action>AddMedia</action>
<qc_notify>[QCNotifyURL]</qc_notify>
<source>[SourceFile|SourcePlaylist]</source><!-- REQUIRED -->
<format>
<output>[advanced_hls|advanced_dash|advanced_fmp4|fmp4_hls|mp4|qc_check]</output><!-- REQUIRED -->
<!-- Format fields -->
<qc>
<!-- Format Validation Tests -->
<qc_test_name_1>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_1>
<qc_test_name_2>
<!-- Tests Params -->
</qc_test_name_2>
<!-- Multiple Tests -->
<qc_test_name_N>
<!-- Tests Params -->
</qc_test_name_N>
</qc>
<!-- <stream /> params available only for advanced_hls output format -->
<stream>
<qc>
<!-- Stream Validation Tests -->
<qc_test_name_1>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_1>
<qc_test_name_2>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_2>
<!-- Multiple Tests -->
<qc_test_name_N>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_N>
</qc>
</stream>
</format>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "AddMedia",
"qc_notify": "[QCNotifyURL]",
"source": "[SourceFile|SourcePlaylist]",
"format": {
"output": "[advanced_hls|advanced_dash|advanced_fmp4|fmp4_hls|mp4|qc_check]",
"qc": {
"qc_test_name_1": {
"severity": "[fatal|warning]"
},
"qc_test_name_2": "",
"qc_test_name_N": ""
},
"stream": {
"qc": {
"qc_test_name_1": {
"severity": "[fatal|warning]"
},
"qc_test_name_2": {
"severity": "[fatal|warning]"
},
"qc_test_name_N": {
"severity": "[fatal|warning]"
}
}
}
}
}
}
QC Check
<?xml version="1.0"?>
<query>
<userid><<id>></userid> <!-- required-->
<userkey><<key>></userkey> <!-- required-->
<action>AddMedia</action>
<qc_notify_format>[xml|json]</qc_notify_format>
<qc_notify>[QCNotifyURL]</qc_notify>
<source>[SourceFile1|SourcePlaylist1]</source><!-- required -->
<source>[SourceFile2|SourcePlaylist2]</source>
<!-- Multiple source files -->
<source>[SourceFileN|SourcePlaylistN]</source>
<format>
<output>qc_check</output><!-- required -->
<source_options>
<qc>
<qc_test_name_1>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_1>
<qc_test_name_2>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_2>
<!-- Multiple Tests -->
<qc_test_name_N>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_N>
</qc>
<stream>
<qc>
<qc_test_name_1>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_1>
<qc_test_name_2>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_2>
<!-- Multiple Tests -->
<qc_test_name_N>
<!-- Tests Params -->
<severity>[fatal|warning]</severity>
</qc_test_name_N>
</qc>
</stream>
</source_options>
</format>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "AddMedia",
"qc_notify_format": "[xml|json]",
"qc_notify": "[QCNotifyURL",
"source": [
"[SourceFile1|SourcePlaylist1]",
"[SourceFile2|SourcePlaylist2]",
"[SourceFileN|SourcePlaylistN]"
],
"format": {
"output": "qc_check",
"source_options": {
"qc": {
"qc_test_name_1": {
"severity": "[fatal|warning]"
},
"qc_test_name_2": {
"severity": "[fatal|warning]"
},
"qc_test_name_N": {
"severity": "[fatal|warning]"
}
},
"stream": [
{
"qc": {
"qc_test_name_1": {
"severity": "[fatal|warning]"
},
"qc_test_name_2": {
"severity": "[fatal|warning]"
},
"qc_test_name_N": {
"severity": "[fatal|warning]"
}
}
}
]
}
}
}
}
QC Auto
Auto Tests List:
Test Name | Formats Available |
---|---|
### QC General Tests | |
Duration | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
File Size | mp4 |
Bitrate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate Closed Captions | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
No Short Segments | advanced_hls, fmp4_hls |
### QC Video Tests | |
Video Codec | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video Bitrate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Frame Rate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video Duration | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video Codec Profile | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video Level | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Frame Size | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Aspect Ratio | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Video Streams Count | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate DTS | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate PTS | advanced_hls, fmp4_hls |
PCR Interval | advanced_hls |
PID Interval | advanced_hls |
Validate B-Frames | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate B-Frames DTS Increase | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Validate IDR Interval | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Segment Starts with IDR | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
### QC Audio Tests | |
Audio Codec | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Bitrate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Duration | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Bit Depth | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Sample Rate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Channels | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
Audio Channel Layout | mp4 |
Audio Stream Validation | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls, mp4 |
### QC Manifest Tests | |
Master Manifest Bitrate | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Master Manifest Codec | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Validate Discontinuity Tags | advanced_hls, fmp4_hls |
Validate DRM URI | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |
Validate HLS Version | advanced_hls, fmp4_hls |
Validate CUE-OUT:0 Placement | advanced_hls, fmp4_hls |
Validate Sample AES Encryption | advanced_hls |
Validate Segment Duration | advanced_hls, fmp4_hls |
Validate Declared Segment Duration | advanced_hls, advanced_dash, advanced_fmp4, fmp4_hls |