Getting Started
Analyze audio files for EBU R128 compliance with the open source tool Audio QC running as a job in Eyevinn Open Source Cloud. Available as an open web service to check audio loudness and quality without having to host your own infrastructure for it.
Prerequisites
- If you have not already done so, sign up for an OSC account.
- NodeJS installed on your local computer.
- A storage bucket for storing and writing the result. Create and manage storage buckets with the open web service Minio.
Store access credentials as secrets
Create secrets for the access credentials to the storage server, for example accesskeyid and secretaccesskey. Read the guide on how to work with secrets for instructions on how to create a secret and refer to it.
Examples
Here are some examples of use cases that can be solved with Audio QC and how we with the Open Source Cloud CLI can create an Audio QC job. Before running any of the examples you need to set your personal access token in the environment variable OSC_ACCESS_TOKEN.
% export OSC_ACCESS_TOKEN=<your-personal-access-token>
You find your personal access token in the Open Source Cloud web console (Settings/API).
Basic audio compliance check
Analyze a video file for EBU R128 audio compliance and generate a JSON report:
% npx -y @osaas/cli create eyevinn-audio-qc audiocheck1 \
-o s3AccessKeyId="{{secrets.accesskeyid}}" \
-o s3SecretAccessKey="{{secrets.secretaccesskey}}" \
-o s3EndpointUrl="https://eyevinnlab-birme.minio-minio.auto.prod.osaas.io" \
-o cmdLineArgs="analyze s3://input/video.mp4 --json --s3-bucket output --s3-key reports/audiocheck1/compliance.json"
This analyzes the audio in video.mp4 from the input bucket and uploads the compliance report to the output bucket.
Analyze with verbose output and specific audio stream
Check compliance for a specific audio stream with detailed verbose output:
% npx -y @osaas/cli create eyevinn-audio-qc audiocheck2 \
-o s3AccessKeyId="{{secrets.accesskeyid}}" \
-o s3SecretAccessKey="{{secrets.secretaccesskey}}" \
-o s3EndpointUrl="https://eyevinnlab-birme.minio-minio.auto.prod.osaas.io" \
-o cmdLineArgs="analyze s3://input/multichannel.mov --audio-stream 1 --verbose --json --s3-bucket output --s3-key reports/audiocheck2/detailed.json"
This analyzes the second audio stream (index 1) with verbose logging and saves the detailed report.
Broadcast content compliance check
Analyze broadcast content using specific EBU R128 broadcast standards:
% npx -y @osaas/cli create eyevinn-audio-qc audiocheck3 \
-o s3AccessKeyId="{{secrets.accesskeyid}}" \
-o s3SecretAccessKey="{{secrets.secretaccesskey}}" \
-o s3EndpointUrl="https://eyevinnlab-birme.minio-minio.auto.prod.osaas.io" \
-o cmdLineArgs="analyze s3://input/broadcast.mxf --broadcast --json --s3-bucket output --s3-key reports/audiocheck3/broadcast-compliance.json"
This checks broadcast-specific compliance requirements for the MXF file.
Analyze streaming content from HTTP URL
Check compliance for content available via HTTP streaming:
% npx -y @osaas/cli create eyevinn-audio-qc audiocheck4 \
-o cmdLineArgs="analyze https://vod.demo.osaas.io/osc-reel-9dd16/index.m3u8 --json"
This analyzes audio from an HLS stream and outputs the compliance report to stdout (no S3 upload).
Music content analysis
Analyze music content with different loudness targets:
% npx -y @osaas/cli create eyevinn-audio-qc audiocheck5 \
-o s3AccessKeyId="{{secrets.accesskeyid}}" \
-o s3SecretAccessKey="{{secrets.secretaccesskey}}" \
-o s3EndpointUrl="https://eyevinnlab-birme.minio-minio.auto.prod.osaas.io" \
-o cmdLineArgs="analyze s3://input/music.wav --music --json --s3-bucket output --s3-key reports/audiocheck5/music-analysis.json"
This uses music-specific compliance standards for the audio analysis.
Understanding the Compliance Report
The Audio QC service generates detailed JSON reports containing:
- Integrated Loudness: LUFS measurement over the entire program
- Loudness Range: LU measurement of loudness variation
- True Peak: Maximum peak level in dBTP
- Compliance Status: Boolean indicating if content meets EBU R128 standards
- Violations: Specific details about any compliance issues
Troubleshooting
- Ensure that the secrets you are referring to exist as you get no immediate feedback if that is wrong today.
- Verify that the input file format is supported (MP4, MOV, MXF, WAV, etc.).
- Check that S3 bucket permissions allow write access for report uploads.
- For HTTP streaming URLs, ensure the content is publicly accessible.
Support
Join our Slack workspace for real-time support and to connect with other users.