qctools

QCTools (Quality Control Tools for Video Preservation) is a free and open source software tool that helps users analyze and understand their digitized video files through use of audiovisual analytics and filtering. QCTools is funded by the National Endowment for the Humanities and the Knight Foundation, and is developed by the Bay Area Video Coalition.

View the Project on GitHub bavc/qctools

Getting Started with QCTools

What is QCTools

QCTools (Quality Control Tools for Video Preservation) is a free and open source software tool that helps users analyze and understand their digitized video files through use of audiovisual analytics and filtering to help users detect corruptions or compromises in the results of analog video digitization or in born-digital video. The goal of the project is to cut down the time it takes to perform high-quality video preservation and direct time towards preservation issues that are solvable - for example, identifying tapes that would benefit from a second transfer, saving not only the precious time of preservationists and institutional resources, but giving collections a necessary advantage in the bigger race against time to preserve their significant cultural artifacts. QCTools incorporates archival standards and best practices for reformatting and capturing metadata that enables the long-term preservation of and access to the original artifact, the digital object, and the associated catalog record.

Who can benefit from using QCTools (and how)?

Potential users of the quality control tools include specialists and non-specialists:

What video formats does QCTools accept?

QCTools accepts a variety of video formats, including *.avi, *.mkv, *.mov, and *.mp4, as well as a diverse selection of codecs. Uncompressed video formats are ideal for the most accurate interpretation of the video. QCTools relies on FFmpeg’s libavcodec and libformat libraries to analyze and playback video which allows QCTools to support a wide variety of digital audiovisual formats.

What do the Graphs measure?

The following provides an overview of QCTools graph functionality. For more detailed descriptions, please see the help documentation on Filter Descriptions or the documentation on FFmpeg’s signalstats filter.

Y Channel Filters (Y, YDiff)

The Y Channel carries brightness information (also called luma). Black and white moving image files will contain only Y data whereas a colorized video with have both Y, and U/V. If you are analyzing a black and white video, then, you should see no U/V data. If you do, this may indicate that your video has color noise. These filters are ideal for determining if your video is overly bright, or dark. The Diff filters simply measure the visual difference in value between the Y values of two consecutive pixels.

U/V Channel Filters (U, V, UDiff, VDiff)

These 2 channels together carry color information (or chroma); dramatic activity in these graphs could indicate that your video has color abnormalities. A normal reading indicating consistent color values would show graph values the around the central value of 128.

Saturation

This graph detects the measure of vibrancy or brightness of color. Overly saturated (too bright) or under-saturated (too washed-out) are not ideal. Saturation levels that are too high may exceed broadcast range, extremely high levels are mathematically illegal as they can not be converted back to RGB without creating an invalid value, such values are generally indicative of tape damage.

Hue

The Hue graphs plot the average color value for the frame. Do the blues, reds, etc., of your video look as you expect they should? This graph filter will help you detect areas of your video which may have strange color representation.

Temporal Outliers

This filter looks at a collection of pixels that reside near to one another; in video with no errors, you would expect for these pixels to have roughly a similar value. If there are large differences between a pixel and it’s neighbors, this may be an indication of a dropout or other error. This graph filter is especially good at detecting white speckling artifacts such as tape creases, tape tracking issues, or skew problems.

Vertical Repetitions (VREP)

This graph filter works by looking for rows of similar or duplicate pixels. Often, if there is signal interruption or loss, your deck or Time Base Corrector, in an effort to fill in the gaps, will duplicate existing rows of pixel data. The VREP filter will alert you to this repetitive data, which often manifests as vertical lines across your picture. This filter is useful with analog source content only.

Broadcast Range (BRNG)

This filter detects pixels which lie outside of broadcast range or those deemed to have unacceptable values as per established broadcasting standards. Also see Broadcast Standards.

Mean Square Error per Field (MSeF)

This detects the visual difference between the two fields of video. The bigger the difference, the more it indicates a potential problem (head clogs, deck issues). See FFmpeg’s documentation on thePSNR filter for more information.

Peak Signal to Noise Ratio per Field (PSNRf)

This filter is similar to Mean Square Error per Field but uses the Peak Signal to Noise Ratio (PSNR) algorithm. See FFmpeg’s documentation on thePSNR filter for more information.

Structural SImilarity Metric per Field (SSIMf)

This filter is similar to PSNRf and MSEf but uses the Structural SImilarity Metric (SSIM) algorithm. See FFmpeg’s documentation on theSSIM filter for more information.

What Graphs should I chose?

The graphs detect a wide array of errors and as you become more familiar with the tool and your video collection, you will likely opt for different graph filters depending on the errors you suspect or anticipate. There are some multipurpose options, however, that may be especially helpful to start with in order to get a high-level sense of where, and what type of errors are present. The YUV and Diffs (Y values, U values, V values, YDiff, YDiffX) are beneficial for detecting light/dark and color issues. The TOUT (Temporal Outliers) filter is targeted to detecting white noise such as white speckle pattern you may find in damaged VHS tape. These graph filters are ideal to start with as a new user.

What is FFmpeg?

FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. QCTools utilizes FFmpeg to decode video for analysis. The playback filters use FFmpeg’s libavfilter in order to process the decoded audiovisual data for different types of displays. More at FFmpeg.org.

How can I integrate the QCTools export feature into my workflow?

QCTools currently supports a frame-by-frame analysis/export in XML format (based on the FFprobe metadata standard. Please also see the ‘Data Format’ tab). These files can be integrated into your preservation metadata.

Since the QCTool’s analysis filter, signalstats, is now part of FFmpeg and QCTool’s reporting format is based on FFmpeg’s ffprobe metadata schema, QCTools data reports may be fully generated using a recent version of FFmpeg. This may be preferable for handling the analysis of large amounts of audiovisual files, so that FFmpeg creates many QCTools reports through FFmpeg which can then later be assessed more closely within the QCTools application. See the Data Format section of the help documentation for more information.

What about my audio?

Starting in QCTools version 0.7, QCTools has some audio support. This includes plotting EBU R128 loudness measurements over time and providing several audio visualization playback tools (audio vectorscope, audio waveforms, etc) in the player window.

What is this error called?

You may be able to find the answer in the A/V Artifact Atlas, which is closely associated with QCTools. The AV Artifact Atlas is for use in the identification and definition of the technical issues and anomalies that can afflict audio and video signals.

Are there additional resources that may be useful to me?

The Glossary of Video Terms is helpful for a general primer on common terms.

The AV Artifact Atlas is an especially good resource to find examples of video errors, with accompanying descriptions and visual references.

How can I provide feedback?

Feedback such as requests for clarifications, suggestions for enhancements, or reports of bugs is important for the project. If you find an issue with QCTools, find something unclear, or have an idea please visit the issue tracker at QCTool’s github account and click New issue. Once here please name your issue and fill out a description. Once submitted the issue will be in the public issue tracker and the development team can respond to it or associate improvements to it.