Skip to main content

Setting Up Content ID

This is a guide for how to set up Content ID services through our third party partner, ACR Cloud. If you're unfamiliar with the concept of Content ID or unsure if it applies to your app, check out the Content ID page in our docs.

We partner with a third party service called ACR Cloud for Content ID services. If your app warrants Content ID, you'll first be required to make an account with ACR Cloud, and install their audio fingerprinting SDK in your app. Fingerprinting via the SDK is free, and all costs associated with with track identification requests will be billed directly to your ACR Cloud account. You can find more information about ACR Cloud's pricing here (login required).

Step 1. Select Audio & Video Recognition

After you log into the ACR Cloud Console, you'll arrive on a page with all ACR Cloud Products to configure. Select "Audio & Video Recognition."

Step 2. Create a Project

Using the side navigation, click on Projects > Audio & Video Recognition. Give the project a name that matches your app. Then be careful to select these exact settings:

  • Audio Source: Recorded Audio
  • Audio Engine: Audio Fingerprinting & Cover Song (Humming) Identification
  • Buckets: ACRCloud Music
  • 3rd Party ID Integration: ISRC

Step 3. Submit ACRCloud API Keys in Clips Studio

Next, go into the API page of Clips Studio, scroll down below your Production API Keys for the Feed Clips API, and you'll find a form field called "ACRCloud Keys." Copy/Paste the Access Key and Secret Key that appear on the Projects page in the ACR Cloud Console for your app.

This way, we'll be able to properly forward audio fingerprints to your ACR Cloud account and ensure you'll be directly billed for usage of the ACR Cloud API.

Step 4. Generate Audio Fingerprints of the UGC Content

In order to check your content for unlicensed music, you need to first generate an audio fingerprint. This can be done via one of ACR Cloud's SDKs, which you can find on their SDK Reference page.

Once you choose and install the correct SDK for your codebase, you need to instrument fingerprint creation in your application. Here's how to implement this process:

Installing the SDK

We'll use the Python SDK as an example. For other platforms, refer to the ACR Cloud SDK documentation for installation instructions.

pip install pyacrcloud

Creating Audio Fingerprints

The fingerprinting process involves extracting audio features from your video files. Here's a Python example:

import acrcloud_extr_tool
import base64

def create_audio_fingerprint(audio_file_path):
"""
Create an audio fingerprint from a video/audio file

Args:
audio_file_path: Path to the audio or video file

Returns:
Base64-encoded fingerprint data
"""
# Fingerprint parameters
start_time_seconds = 0 # Start from beginning
audio_len_seconds = 12 # Sample length (12 seconds is standard)
is_db_fingerprint = False # Create recognition fingerprint

# Optional filtering settings
opt = {
'filter_energy_min': 0,
'silence_energy_threshold': 100,
'silence_rate_threshold': 1
}

# Create the fingerprint
fingerprint_data = acrcloud_extr_tool.create_fingerprint_by_file(
audio_file_path,
start_time_seconds,
audio_len_seconds,
is_db_fingerprint,
opt
)

# Convert binary data to base64 for transmission
fingerprint_base64 = base64.b64encode(fingerprint_data).decode('utf-8')

return fingerprint_base64

Processing Video Files

For video files, you need to first extract the audio from the video before creating a fingerprint.

Key Implementation Considerations

  • File Formats: ACR Cloud supports common audioformats (MP3, WAV, etc.)
  • Memory Management: For large files, consider processing in chunks or streaming
  • Error Handling: Always handle cases where fingerprinting fails (corrupted files, unsupported formats, etc.)

Integration with Your Upload Flow

Determine when to integrate fingerprint creation into your upload process:

  1. Pre-upload: Generate fingerprints during file selection/preview
  2. During upload: Generate fingerprints while files are uploading
  3. Post-upload: Generate fingerprints after successful upload to your servers

The fingerprint data should then be sent to the Feed Clips API along with your media submission for Content ID checking.

Step 5. Send the Fingerprint to the Feed Clips API

Once you've generated an audio fingerprint from the user's content, you need to send it to the Clips API for Content ID checking. The API will analyze the fingerprint and tell you whether the detected audio content is licensed for use in your app.

Audio Fingerprint Content ID Check

To check if audio content detected in a user's video is licensed for use in your app, send the base64-encoded fingerprint to our Content ID endpoint.

POST /audio-fingerprint

Request Body:

{
"clientId": "YOUR_CLIENT_ID",
"fingerprint": "base64-encoded-fingerprint-data",
"timestamp": "2024-09-24T10:30:00Z"
}

Response:

{
"canPlay": "TRUE", // Whether the audio can be played (true if not recognized or has rights, false if recognized but no rights)
"clipId": "[1]" //The clip ID for the track if it's in our catalog and has rights (only present when canPlay is true)
}

Step 6. UX Considerations

How you handle Content ID rejections will directly impact the user experience. By implementing some best practices, you can ensure the user experience is smooth and as painless as possible.

Best practices during upload

Proactively provide guidance during recording or upload to reduce the risk of rejection:

  • Encourage users to record in quiet spaces.
  • Recommend using headphones to avoid capturing background audio.
  • Remind users not to sync music to media before uploading.

When unlicensed audio is detected

  • Provide clear messaging: Show a message such as: “We’ve detected background music in your video that isn’t available for use. Please remove the audio or record again.”
  • Offer options: Depending on your implementation, you could either
    1. block the upload and provide retry guidance.
    2. strip the audio automatically and allow the user to continue with Feed Clips music.
  • Do not allow users to bypass or ignore a content ID rejection
  • Encourage next steps: Provide an easy path forward so users don’t feel stuck.

Step 7. Test

Finally, it's time to test. We'll work with you during onboarding to ensure the entire process is working as expected in your app's development environment. When the implementation is approved, you'll be ready to go live.