14 October 2019 - QC Workflow Update
almost 7 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 |
|---|---|---|
| ||
| 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 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 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 |
| ||
| 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 |
|---|---|
| |
| 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 |
| |
| 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 |
| |
| 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 |
| |
| 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 |