# FFmpeg Processing Plugin


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Imports

## Configuration

------------------------------------------------------------------------

### FFmpegPluginConfig

``` python

def FFmpegPluginConfig(
    output_dir:Optional=None, default_audio_format:str='mp3', default_audio_bitrate:str='192k',
    prefer_stream_copy:bool=True
)->None:

```

*Configuration for the FFmpeg processing plugin.*

``` python
schema = dataclass_to_jsonschema(FFmpegPluginConfig)
assert "properties" in schema
assert "default_audio_format" in schema["properties"]
assert schema["properties"]["default_audio_format"]["default"] == "mp3"
print(f"Config schema: {list(schema['properties'].keys())}")
```

    Config schema: ['output_dir', 'default_audio_format', 'default_audio_bitrate', 'prefer_stream_copy']

## Plugin Class

------------------------------------------------------------------------

### FFmpegProcessingPlugin

``` python

def FFmpegProcessingPlugin(
    
):

```

*FFmpeg-based media processing plugin.*

``` python
plugin = FFmpegProcessingPlugin()
assert plugin.name == get_plugin_metadata()["name"]
assert plugin.version == get_plugin_metadata()["version"]
assert plugin.supported_media_types == ["audio", "video"]
assert plugin.is_available() == FFMPEG_AVAILABLE
print(f"Plugin: {plugin.name} v{plugin.version}")
print(f"FFmpeg available: {plugin.is_available()}")
```

    Plugin: ffmpeg v1.0.0
    FFmpeg available: True

``` python
plugin.initialize({})
assert plugin.config is not None
assert plugin.config.default_audio_format == "mp3"
assert plugin.config.prefer_stream_copy is True
assert plugin.storage is not None
print(f"Config: format={plugin.config.default_audio_format}, bitrate={plugin.config.default_audio_bitrate}")
print(f"Current config: {plugin.get_current_config()}")
```

    Config: format=mp3, bitrate=192k
    Current config: {'output_dir': None, 'default_audio_format': 'mp3', 'default_audio_bitrate': '192k', 'prefer_stream_copy': True}

``` python
plugin.initialize({"default_audio_format": "wav", "default_audio_bitrate": "320k"})
assert plugin.config.default_audio_format == "wav"
assert plugin.config.default_audio_bitrate == "320k"
print(f"Custom config: {plugin.get_current_config()}")
```

    Custom config: {'output_dir': None, 'default_audio_format': 'wav', 'default_audio_bitrate': '320k', 'prefer_stream_copy': True}

``` python
schema = plugin.get_config_schema()
assert "properties" in schema
props = schema["properties"]
assert "output_dir" in props
assert "default_audio_format" in props
assert "default_audio_bitrate" in props
assert "prefer_stream_copy" in props
print(f"Schema properties: {list(props.keys())}")
```

    Schema properties: ['output_dir', 'default_audio_format', 'default_audio_bitrate', 'prefer_stream_copy']

``` python
plugin.cleanup()
```
