typed-ffmpeg-compatible 2.1.0a0__tar.gz → 2.4.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.4.0}/PKG-INFO +3 -2
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/README.md +2 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/pyproject.toml +1 -1
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/global_runnable/global_args.py +3 -3
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/_input.py +3 -3
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/_output.py +5 -3
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/output_args.py +3 -3
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/filters.py +317 -255
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/streams/audio.py +715 -312
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/streams/video.py +1158 -663
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/LICENSE +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/base.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/common/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/common/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/common/serialize.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/compile.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/context.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/factory.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/global_runnable/runnable.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/nodes.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/utils.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/validate.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/exceptions.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/probe.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/py.typed +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/streams/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/streams/av.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/types.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/escaping.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/lazy_eval/operator.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/lazy_eval/schema.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/run.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/snapshot.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/utils/typing.py +0 -0
- {typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.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.4.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
|
@@ -17,7 +17,6 @@ Classifier: Programming Language :: Python :: 3
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.10
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
20
|
-
Classifier: Programming Language :: Python :: 3.13
|
21
20
|
Classifier: Topic :: Multimedia :: Sound/Audio
|
22
21
|
Classifier: Topic :: Multimedia :: Video
|
23
22
|
Classifier: Topic :: Software Development :: Libraries
|
@@ -84,6 +83,8 @@ pip install typed-ffmpeg
|
|
84
83
|
|
85
84
|
Note: FFmpeg must be installed on your system.
|
86
85
|
|
86
|
+
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.
|
87
|
+
|
87
88
|
### Visualization Support
|
88
89
|
|
89
90
|
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.4.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,7 +63,7 @@ class GlobalArgs(ABC):
|
|
63
63
|
adrift_threshold: Func = None,
|
64
64
|
qphist: Func = None,
|
65
65
|
vsync: Func = None,
|
66
|
-
|
66
|
+
extra_options: dict[str, Any] = None,
|
67
67
|
) -> GlobalStream:
|
68
68
|
"""
|
69
69
|
Set global options.
|
@@ -114,7 +114,7 @@ class GlobalArgs(ABC):
|
|
114
114
|
adrift_threshold: deprecated, does nothing
|
115
115
|
qphist: deprecated, does nothing
|
116
116
|
vsync: set video sync method globally; deprecated, use -fps_mode
|
117
|
-
|
117
|
+
extra_options: Additional options
|
118
118
|
|
119
119
|
Returns:
|
120
120
|
GlobalStream: GlobalStream instance
|
@@ -173,6 +173,6 @@ class GlobalArgs(ABC):
|
|
173
173
|
}.items()
|
174
174
|
if v is not None
|
175
175
|
}
|
176
|
-
|
|
176
|
+
| (extra_options or {})
|
177
177
|
),
|
178
178
|
).stream()
|
{typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/_input.py
RENAMED
@@ -64,7 +64,7 @@ def input(
|
|
64
64
|
dcodec: String = None,
|
65
65
|
dn: Boolean = None,
|
66
66
|
top: Int = None,
|
67
|
-
|
67
|
+
extra_options: dict[str, Any] = None,
|
68
68
|
) -> AVStream:
|
69
69
|
"""
|
70
70
|
Input file URL (ffmpeg ``-i`` option)
|
@@ -123,7 +123,7 @@ def input(
|
|
123
123
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
124
124
|
dn: disable data
|
125
125
|
top: deprecated, use the setfield video filter
|
126
|
-
|
126
|
+
extra_options: ffmpeg's input file options
|
127
127
|
|
128
128
|
Returns:
|
129
129
|
Input stream
|
@@ -194,4 +194,4 @@ def input(
|
|
194
194
|
if v is not None
|
195
195
|
}
|
196
196
|
|
197
|
-
return InputNode(filename=str(filename), kwargs=tuple((options |
|
197
|
+
return InputNode(filename=str(filename), kwargs=tuple((options | (extra_options or {})).items())).stream()
|
{typed_ffmpeg_compatible-2.1.0a0 → typed_ffmpeg_compatible-2.4.0}/src/typed_ffmpeg/dag/io/_output.py
RENAMED
@@ -105,7 +105,7 @@ def output(
|
|
105
105
|
dcodec: String = None,
|
106
106
|
dn: Boolean = None,
|
107
107
|
top: Int = None,
|
108
|
-
|
108
|
+
extra_options: dict[str, Any] = None,
|
109
109
|
) -> OutputStream:
|
110
110
|
"""
|
111
111
|
Output file URL
|
@@ -208,7 +208,7 @@ def output(
|
|
208
208
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
209
209
|
dn: disable data
|
210
210
|
top: deprecated, use the setfield video filter
|
211
|
-
|
211
|
+
extra_options: the arguments for the output
|
212
212
|
|
213
213
|
Returns:
|
214
214
|
the output stream
|
@@ -315,4 +315,6 @@ def output(
|
|
315
315
|
if v is not None
|
316
316
|
}
|
317
317
|
|
318
|
-
return OutputNode(
|
318
|
+
return OutputNode(
|
319
|
+
inputs=streams, filename=str(filename), kwargs=tuple((options | (extra_options or {})).items())
|
320
|
+
).stream()
|
@@ -114,7 +114,7 @@ class OutputArgs(ABC):
|
|
114
114
|
dcodec: String = None,
|
115
115
|
dn: Boolean = None,
|
116
116
|
top: Int = None,
|
117
|
-
|
117
|
+
extra_options: dict[str, Any] = None,
|
118
118
|
) -> OutputStream:
|
119
119
|
"""
|
120
120
|
Output file URL
|
@@ -217,7 +217,7 @@ class OutputArgs(ABC):
|
|
217
217
|
dcodec: alias for -c:d (select encoder/decoder for data streams)
|
218
218
|
dn: disable data
|
219
219
|
top: deprecated, use the setfield video filter
|
220
|
-
|
220
|
+
extra_options: the arguments for the output
|
221
221
|
|
222
222
|
Returns:
|
223
223
|
the output stream
|
@@ -324,4 +324,4 @@ class OutputArgs(ABC):
|
|
324
324
|
if v is not None
|
325
325
|
}
|
326
326
|
|
327
|
-
return self._output_node(*streams, filename=filename, **options, **
|
327
|
+
return self._output_node(*streams, filename=filename, **options, **(extra_options or {})).stream()
|