mirror of
https://github.com/kkroening/ffmpeg-python.git
synced 2025-04-06 04:15:44 +08:00
Merge pull request #46 from Depaulicious/asplit_filter
Add `asplit` filter
This commit is contained in:
commit
a029d7aacc
@ -52,6 +52,11 @@ def split(stream):
|
|||||||
return FilterNode(stream, split.__name__)
|
return FilterNode(stream, split.__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@filter_operator()
|
||||||
|
def asplit(stream):
|
||||||
|
return FilterNode(stream, asplit.__name__)
|
||||||
|
|
||||||
|
|
||||||
@filter_operator()
|
@filter_operator()
|
||||||
def setpts(stream, expr):
|
def setpts(stream, expr):
|
||||||
"""Change the PTS (presentation timestamp) of the input frames.
|
"""Change the PTS (presentation timestamp) of the input frames.
|
||||||
|
@ -152,7 +152,7 @@ class FilterNode(Node):
|
|||||||
def _get_filter(self, outgoing_edges):
|
def _get_filter(self, outgoing_edges):
|
||||||
args = self.args
|
args = self.args
|
||||||
kwargs = self.kwargs
|
kwargs = self.kwargs
|
||||||
if self.name == 'split':
|
if self.name in ('split', 'asplit'):
|
||||||
args = [len(outgoing_edges)]
|
args = [len(outgoing_edges)]
|
||||||
|
|
||||||
out_args = [escape_chars(x, '\\\'=:') for x in args]
|
out_args = [escape_chars(x, '\\\'=:') for x in args]
|
||||||
|
@ -147,6 +147,41 @@ def test_get_args_complex_filter():
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def _get_complex_filter_asplit_example():
|
||||||
|
split = (ffmpeg
|
||||||
|
.input(TEST_INPUT_FILE1)
|
||||||
|
.vflip()
|
||||||
|
.asplit()
|
||||||
|
)
|
||||||
|
split0 = split[0]
|
||||||
|
split1 = split[1]
|
||||||
|
|
||||||
|
return (ffmpeg
|
||||||
|
.concat(
|
||||||
|
split0.filter_("atrim", start=10, end=20),
|
||||||
|
split1.filter_("atrim", start=30, end=40),
|
||||||
|
)
|
||||||
|
.output(TEST_OUTPUT_FILE1)
|
||||||
|
.overwrite_output()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_filter_asplit():
|
||||||
|
out = _get_complex_filter_asplit_example()
|
||||||
|
args = out.get_args()
|
||||||
|
assert args == [
|
||||||
|
'-i',
|
||||||
|
TEST_INPUT_FILE1,
|
||||||
|
'-filter_complex',
|
||||||
|
'[0]vflip[s0];[s0]asplit=2[s1][s2];[s1]atrim=end=20:start=10[s3];[s2]atrim=end=40:start=30[s4];[s3]'
|
||||||
|
'[s4]concat=n=2[s5]',
|
||||||
|
'-map',
|
||||||
|
'[s5]',
|
||||||
|
TEST_OUTPUT_FILE1,
|
||||||
|
'-y'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def test_filter_normal_arg_escape():
|
def test_filter_normal_arg_escape():
|
||||||
"""Test string escaping of normal filter args (e.g. ``font`` param of ``drawtext`` filter)."""
|
"""Test string escaping of normal filter args (e.g. ``font`` param of ``drawtext`` filter)."""
|
||||||
def _get_drawtext_font_repr(font):
|
def _get_drawtext_font_repr(font):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user