Support video_size output tuple

This commit is contained in:
Karl Kroening 2018-06-02 00:25:47 -07:00
parent 593cd3e790
commit c21e8c103f
2 changed files with 17 additions and 2 deletions

View File

@ -1,10 +1,9 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from .dag import get_outgoing_edges, topo_sort from .dag import get_outgoing_edges, topo_sort
from ._utils import basestring from ._utils import basestring
from builtins import str from builtins import str
from functools import reduce from functools import reduce
from past.builtins import basestring import collections
import copy import copy
import operator import operator
import subprocess import subprocess
@ -123,6 +122,11 @@ def _get_output_args(node, stream_name_map):
fmt = kwargs.pop('format', None) fmt = kwargs.pop('format', None)
if fmt: if fmt:
args += ['-f', fmt] args += ['-f', fmt]
if 'video_size' in kwargs:
video_size = kwargs.pop('video_size')
if not isinstance(video_size, basestring) and isinstance(video_size, collections.Iterable):
video_size = '{}x{}'.format(video_size[0], video_size[1])
args += ['-video_size', video_size]
args += _convert_kwargs_to_cmd_line_args(kwargs) args += _convert_kwargs_to_cmd_line_args(kwargs)
args += [filename] args += [filename]
return args return args

View File

@ -237,6 +237,17 @@ def test_filter_asplit():
] ]
@pytest.mark.parametrize('video_size', [(320, 240), '320x240'])
def test__output__video_size(video_size):
args = (
ffmpeg
.input('in')
.output('out', video_size=video_size)
.get_args()
)
assert args == ['-i', 'in', '-video_size', '320x240', 'out']
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):