typed-ffmpeg-compatible 2.1.0a0__tar.gz → 2.2.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/PKG-INFO +3 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/README.md +2 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/pyproject.toml +1 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/global_args.py +3 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_input.py +3 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_output.py +5 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/output_args.py +3 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/filters.py +327 -134
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/audio.py +677 -80
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/video.py +1088 -184
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/LICENSE +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/base.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/serialize.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/compile.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/context.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/factory.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/runnable.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/nodes.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/utils.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/validate.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/exceptions.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/probe.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/py.typed +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/av.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/types.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/escaping.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/operator.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/run.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/snapshot.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/typing.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/view.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: typed-ffmpeg-compatible
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.2.0
|
4
4
|
Summary: Modern Python FFmpeg wrappers offer comprehensive support for complex filters, complete with detailed typing and documentation.
|
5
5
|
Home-page: https://livingbio.github.io/typed-ffmpeg/
|
6
6
|
License: MIT
|
@@ -84,6 +84,8 @@ pip install typed-ffmpeg
|
|
84
84
|
|
85
85
|
Note: FFmpeg must be installed on your system.
|
86
86
|
|
87
|
+
Note: If you need to install `ffmpeg-python` at the same time, use `pip install typed-ffmpeg-compatible` to prevent conflicts with the module name.
|
88
|
+
|
87
89
|
### Visualization Support
|
88
90
|
|
89
91
|
To enable graph visualization features:
|
@@ -54,6 +54,8 @@ pip install typed-ffmpeg
|
|
54
54
|
|
55
55
|
Note: FFmpeg must be installed on your system.
|
56
56
|
|
57
|
+
Note: If you need to install `ffmpeg-python` at the same time, use `pip install typed-ffmpeg-compatible` to prevent conflicts with the module name.
|
58
|
+
|
57
59
|
### Visualization Support
|
58
60
|
|
59
61
|
To enable graph visualization features:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "typed-ffmpeg-compatible"
|
3
|
-
version = "2.
|
3
|
+
version = "2.2.0"
|
4
4
|
description = "Modern Python FFmpeg wrappers offer comprehensive support for complex filters, complete with detailed typing and documentation."
|
5
5
|
authors = ["lucemia <lucemia@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -63,6 +63,7 @@ class GlobalArgs(ABC):
|
|
63
63
|
adrift_threshold: Func = None,
|
64
64
|
qphist: Func = None,
|
65
65
|
vsync: Func = None,
|
66
|
+
extra_options: dict[str, Any] = None,
|
66
67
|
**kwargs: Any,
|
67
68
|
) -> GlobalStream:
|
68
69
|
"""
|
@@ -114,6 +115,7 @@ class GlobalArgs(ABC):
|
|
114
115
|
adrift_threshold: deprecated, does nothing
|
115
116
|
qphist: deprecated, does nothing
|
116
117
|
vsync: set video sync method globally; deprecated, use -fps_mode
|
118
|
+
extra_options: Additional options
|
117
119
|
**kwargs: Additional options
|
118
120
|
|
119
121
|
Returns:
|
@@ -173,6 +175,7 @@ class GlobalArgs(ABC):
|
|
173
175
|
}.items()
|
174
176
|
if v is not None
|
175
177
|
}
|
178
|
+
| (extra_options or {})
|
176
179
|
| kwargs
|
177
180
|
),
|
178
181
|
).stream()
|
{typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_input.py
RENAMED
@@ -64,6 +64,7 @@ def input(
|
|
64
64
|
dcodec: String = None,
|
65
65
|
dn: Boolean = None,
|
66
66
|
top: Int = None,
|
67
|
+
extra_options: dict[str, Any] = None,
|
67
68
|
**kwargs: Any
|
68
69
|
) -> AVStream:
|
69
70
|
"""
|
@@ -123,6 +124,7 @@ def input(
|
|
123
124
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
124
125
|
dn: disable data
|
125
126
|
top: deprecated, use the setfield video filter
|
127
|
+
extra_options: ffmpeg's input file options
|
126
128
|
**kwargs: ffmpeg's input file options
|
127
129
|
|
128
130
|
Returns:
|
@@ -194,4 +196,4 @@ def input(
|
|
194
196
|
if v is not None
|
195
197
|
}
|
196
198
|
|
197
|
-
return InputNode(filename=str(filename), kwargs=tuple((options | kwargs).items())).stream()
|
199
|
+
return InputNode(filename=str(filename), kwargs=tuple((options | (extra_options or {}) | kwargs).items())).stream()
|
{typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_output.py
RENAMED
@@ -105,6 +105,7 @@ def output(
|
|
105
105
|
dcodec: String = None,
|
106
106
|
dn: Boolean = None,
|
107
107
|
top: Int = None,
|
108
|
+
extra_options: dict[str, Any] = None,
|
108
109
|
**kwargs: Any
|
109
110
|
) -> OutputStream:
|
110
111
|
"""
|
@@ -208,6 +209,7 @@ def output(
|
|
208
209
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
209
210
|
dn: disable data
|
210
211
|
top: deprecated, use the setfield video filter
|
212
|
+
extra_options: the arguments for the output
|
211
213
|
**kwargs: the arguments for the output
|
212
214
|
|
213
215
|
Returns:
|
@@ -315,4 +317,6 @@ def output(
|
|
315
317
|
if v is not None
|
316
318
|
}
|
317
319
|
|
318
|
-
return OutputNode(
|
320
|
+
return OutputNode(
|
321
|
+
inputs=streams, filename=str(filename), kwargs=tuple((options | (extra_options or {}) | kwargs).items())
|
322
|
+
).stream()
|
@@ -114,6 +114,7 @@ class OutputArgs(ABC):
|
|
114
114
|
dcodec: String = None,
|
115
115
|
dn: Boolean = None,
|
116
116
|
top: Int = None,
|
117
|
+
extra_options: dict[str, Any] = None,
|
117
118
|
**kwargs: Any,
|
118
119
|
) -> OutputStream:
|
119
120
|
"""
|
@@ -217,6 +218,7 @@ class OutputArgs(ABC):
|
|
217
218
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
218
219
|
dn: disable data
|
219
220
|
top: deprecated, use the setfield video filter
|
221
|
+
extra_options: the arguments for the output
|
220
222
|
**kwargs: the arguments for the output
|
221
223
|
|
222
224
|
Returns:
|
@@ -324,4 +326,4 @@ class OutputArgs(ABC):
|
|
324
326
|
if v is not None
|
325
327
|
}
|
326
328
|
|
327
|
-
return self._output_node(*streams, filename=filename, **options, **kwargs).stream()
|
329
|
+
return self._output_node(*streams, filename=filename, **options, **(extra_options or {}), **kwargs).stream()
|