Class: Dictionary
Defined in: src/lib/dictionary.ts:48
Key-value dictionary for FFmpeg options and metadata.
Stores string key-value pairs used throughout FFmpeg for options, metadata, and configuration. Provides methods for setting, getting, and manipulating dictionary entries. Used extensively for codec options, format options, and metadata handling.
Direct mapping to FFmpeg's AVDictionary.
Example
import { Dictionary, FFmpegError } from 'node-av';
import { AV_DICT_IGNORE_SUFFIX } from 'node-av/constants';
// Create from object
const dict = Dictionary.fromObject({
'title': 'My Video',
'artist': 'Me',
'year': '2024'
});
// Set individual values
const dict2 = new Dictionary();
dict2.alloc();
let ret = dict2.set('preset', 'fast');
FFmpegError.throwIfError(ret, 'set');
// Parse from string
ret = dict2.parseString('key1=value1:key2=value2', '=', ':');
FFmpegError.throwIfError(ret, 'parseString');
// Get all entries
const entries = dict2.getAll();
console.log(entries); // { key1: 'value1', key2: 'value2' }
See
- AVDictionary - FFmpeg Doxygen
- CodecContext For codec options
- FormatContext For format options
Implements
Disposable
NativeWrapper
<NativeDictionary
>
Constructors
Constructor
new Dictionary():
Dictionary
Defined in: src/lib/dictionary.ts:51
Returns
Dictionary
Methods
[dispose]()
[dispose]():
void
Defined in: src/lib/dictionary.ts:382
Dispose of the dictionary.
Implements the Disposable interface for automatic cleanup. Equivalent to calling free().
Returns
void
Example
{
using dict = new Dictionary();
dict.alloc();
dict.set('key', 'value');
// Use dict...
} // Automatically freed when leaving scope
Implementation of
Disposable.[dispose]
alloc()
alloc():
void
Defined in: src/lib/dictionary.ts:125
Allocate a dictionary.
Allocates memory for the dictionary structure. Must be called before using the dictionary.
Direct mapping to av_dict_alloc().
Returns
void
Throws
If allocation fails (ENOMEM)
Example
const dict = new Dictionary();
dict.alloc();
// Dictionary is now ready for use
See
free To deallocate
copy()
copy(
dst
,flags
):number
Defined in: src/lib/dictionary.ts:174
Copy entries to another dictionary.
Copies all entries from this dictionary to the destination.
Direct mapping to av_dict_copy().
Parameters
dst
Dictionary
Destination dictionary
flags
AVDictFlag
= AVFLAG_NONE
Copy flags
Returns
number
0 on success, negative AVERROR on error:
- AVERROR_ENOMEM: Memory allocation failure
Example
import { FFmpegError } from 'node-av';
const dst = new Dictionary();
dst.alloc();
const ret = src.copy(dst);
FFmpegError.throwIfError(ret, 'copy');
count()
count():
number
Defined in: src/lib/dictionary.ts:261
Count dictionary entries.
Returns the number of key-value pairs in the dictionary.
Direct mapping to av_dict_count().
Returns
number
Number of entries
Example
const count = dict.count();
console.log(`Dictionary has ${count} entries`);
free()
free():
void
Defined in: src/lib/dictionary.ts:146
Free the dictionary.
Releases all memory associated with the dictionary. The dictionary becomes invalid after calling this.
Direct mapping to av_dict_free().
Returns
void
Example
dict.free();
// Dictionary is now invalid
See
- alloc To allocate
- Symbol.dispose For automatic cleanup
get()
get(
key
,flags
):null
|string
Defined in: src/lib/dictionary.ts:242
Get a dictionary entry.
Retrieves the value for a given key.
Direct mapping to av_dict_get().
Parameters
key
string
Entry key to look up
flags
AVDictFlag
= AVFLAG_NONE
Search flags (e.g., AV_DICT_IGNORE_SUFFIX)
Returns
null
| string
Entry value, or null if not found
Example
const value = dict.get('bitrate');
if (value) {
console.log(`Bitrate: ${value}`);
}
// Case-insensitive search
import { AV_DICT_MATCH_CASE } from 'node-av/constants';
const title = dict.get('Title', AV_DICT_MATCH_CASE);
See
getAll()
getAll():
Record
<string
,string
>
Defined in: src/lib/dictionary.ts:282
Get all dictionary entries.
Returns all key-value pairs as a JavaScript object.
Returns
Record
<string
, string
>
Object with all entries
Example
const entries = dict.getAll();
for (const [key, value] of Object.entries(entries)) {
console.log(`${key}: ${value}`);
}
See
get To get individual entries
getNative()
getNative():
NativeDictionary
Defined in: src/lib/dictionary.ts:362
Internal
Get the underlying native Dictionary object.
Returns
The native Dictionary binding object
Implementation of
getString()
getString(
keyValSep
,pairsSep
):null
|string
Defined in: src/lib/dictionary.ts:351
Convert dictionary to string.
Serializes all entries to a formatted string.
Direct mapping to av_dict_get_string().
Parameters
keyValSep
string
Separator between key and value
pairsSep
string
Separator between pairs
Returns
null
| string
Formatted string, or null on error
Example
// Serialize to colon-separated format
const str = dict.getString('=', ':');
console.log(str); // "key1=val1:key2=val2"
// Serialize to comma-separated format
const csv = dict.getString('=', ',');
console.log(csv); // "key1=val1,key2=val2"
See
parseString To parse from string
parseString()
parseString(
str
,keyValSep
,pairsSep
,flags
):number
Defined in: src/lib/dictionary.ts:321
Parse entries from a string.
Parses key-value pairs from a formatted string and adds them to the dictionary.
Direct mapping to av_dict_parse_string().
Parameters
str
string
String to parse
keyValSep
string
Separator between key and value
pairsSep
string
Separator between pairs
flags
AVDictFlag
= AVFLAG_NONE
Parse flags
Returns
number
0 on success, negative AVERROR on error:
- AVERROR_EINVAL: Invalid format
- AVERROR_ENOMEM: Memory allocation failure
Example
import { FFmpegError } from 'node-av';
// Parse colon-separated pairs
let ret = dict.parseString('key1=val1:key2=val2', '=', ':');
FFmpegError.throwIfError(ret, 'parseString');
// Parse comma-separated pairs
ret = dict.parseString('width=1920,height=1080', '=', ',');
FFmpegError.throwIfError(ret, 'parseString');
See
getString To serialize to string
set()
set(
key
,value
,flags
):number
Defined in: src/lib/dictionary.ts:210
Set a dictionary entry.
Sets or updates a key-value pair in the dictionary.
Direct mapping to av_dict_set().
Parameters
key
string
Entry key
value
string
Entry value
flags
AVDictFlag
= AVFLAG_NONE
Set flags (e.g., AV_DICT_DONT_OVERWRITE)
Returns
number
0 on success, negative AVERROR on error:
- AVERROR_ENOMEM: Memory allocation failure
Example
import { FFmpegError } from 'node-av';
import { AV_DICT_DONT_OVERWRITE } from 'node-av/constants';
// Set or update entry
let ret = dict.set('bitrate', '128k');
FFmpegError.throwIfError(ret, 'set');
// Set only if not exists
ret = dict.set('preset', 'fast', AV_DICT_DONT_OVERWRITE);
FFmpegError.throwIfError(ret, 'set');
See
get To retrieve values
fromNative()
static
fromNative(native
):Dictionary
Defined in: src/lib/dictionary.ts:100
Internal
Create dictionary from native instance.
Parameters
native
Native dictionary instance
Returns
Dictionary
Dictionary wrapper
fromObject()
static
fromObject(obj
,flags
):Dictionary
Defined in: src/lib/dictionary.ts:83
Create dictionary from JavaScript object.
Convenience method to create a dictionary from a plain object.
Parameters
obj
Record
<string
, string
| number
>
Object with string key-value pairs
flags
AVDictFlag
= AVFLAG_NONE
Flags for setting entries
Returns
Dictionary
New dictionary with entries from object
Example
const metadata = Dictionary.fromObject({
'title': 'My Song',
'album': 'My Album',
'date': '2024',
'track': '1/10'
});
// Use for codec options
const options = Dictionary.fromObject({
'preset': 'medium',
'crf': 23,
'profile': 'high'
});