-
Notifications
You must be signed in to change notification settings - Fork 198
Audio Services
The SoundFingerprinting
library decodes audio samples (or video frames) from the underlying media file as the first step in the processing pipeline. It has to extract AudioSamples
for audio fingerprints (or Frames
for video fingerprints).
The decoding is done by instances of the following interfaces that you can specify in the UsingServices
method overload during fingerprint creation or querying:
-
IAudioService
- used for audio fingerprinting.SoundFingerprintingAudioService
FFmpegAudioService
NAudioService
BassAudioService
-
IVideoService
- used for video fingerprinting.FFmpegAudioService
-
IMediaService
- used for both audio and video fingerprinting.FFmpegAudioService
If neither of these implementations meets your requirements (i.e., none of the classes can decode file formats specific to your use case), you can implement your own class and use it in the processing pipeline.
-
SoundFingerprintingAudioService
comes bundled with the core SoundFingerprinting library. It supports only WAV files at the input. This implementation is known to alias the audio signal during downsampling. You can use this implementation only in testing environments. It is supported in any OS and is MIT-licensed. -
FFmpegAudioService
comes bundled with SoundFingerprinting.Emy package.FFmpegAudioService
is also the only currently supported service that can be used to read video files, providing the ability to fingerprint video frames and audio samples. Best suited for the production environment due to speed and accuracy. It provides ways to read audio from any format that is supported by FFmpeg (that is almost any known format). It is also able to extract audio tracks directly from video files. To useFFmpegAudioService
you need to have it installed on the machine that fingerprints the files:- Windows - download FFmpeg libraries for x64 platform. Place the files alongside your executable in the following folder:
FFmpeg\bin\x64
. The recommended version is ffmpeg-6.0-full_build-shared. - Debian 12 -
apt-get install ffmpeg
(only supported withSoundFingerprinting.Emy
v9.x) - Debian 11 -
apt-get install ffmpeg
(only supported withSoundFingerprinting.Emy
v8.x) - Alpine -
apk add ffmpeg
(verify withffmpeg --version
which version is installed). - MacOS -
brew install ffmpeg@6
- Install ffmpeg@6 for
SoundFingerprinting.Emy
v10.x - Install ffmpeg@5 for
SoundFingerprinting.Emy
v9.x - Install ffmpeg@4 for
SoundFingerprinting.Emy
v8.x
- Install ffmpeg@6 for
SoundFingerprinting.Emy is free for non-commercial use. Please contact sergiu@emysound.com for details. Please follow the below version matrix.
- Windows - download FFmpeg libraries for x64 platform. Place the files alongside your executable in the following folder:
SoundFingerprinting | SoundFingerprinting.Emy | FFmpeg |
---|---|---|
8.x | 8.x | 4.x |
9.x | 9.x | 5.x |
10.x | 10.x | 6.x |
N/A | N/A | 7.x |
-
Deprecated
NAudioService
suitable for the Windows environment only. Available via SoundFingerprinting.Audio.NAudio NuGet package. Provides support for .mp3 audio file processing. MIT licensed. -
Deprecated
BassAudioService
available for Windows and Unix environment via SoundFingerprinting.Audio.Bass NuGet package. Supports multiple audio formats (.wav, .ogg, .mp3, .flac). Bass is free for non-comercial use. Installation details can be found here.