mirror of
https://github.com/kkroening/ffmpeg-python.git
synced 2025-08-10 13:10:03 +08:00
Merge 2f8b42ecbc8bb412a6003b4b99b8c87a6b64dad0 into 0612a44f91316640cd67ec39359fa6b3c085357a
This commit is contained in:
commit
ffc6660c3c
@ -132,7 +132,7 @@ etc.). Some keyword-arguments are handled specially, as shown below.</p>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>video_bitrate</strong> – parameter for <code class="docutils literal notranslate"><span class="pre">-b:v</span></code>, e.g. <code class="docutils literal notranslate"><span class="pre">video_bitrate=1000</span></code>.</p></li>
|
||||
<li><p><strong>audio_bitrate</strong> – parameter for <code class="docutils literal notranslate"><span class="pre">-b:a</span></code>, e.g. <code class="docutils literal notranslate"><span class="pre">audio_bitrate=200</span></code>.</p></li>
|
||||
<li><p><strong>format</strong> – alias for <code class="docutils literal notranslate"><span class="pre">-f</span></code> parameter, e.g. <code class="docutils literal notranslate"><span class="pre">format='mp4'</span></code>
|
||||
<li><p><strong>format</strong> – alias for <code class="docutils literal notranslate"><span class="pre">-f</span></code> parameter, e.g. <code class="docutils literal notranslate"><span class="pre">fmt='mp4'</span></code>
|
||||
(equivalent to <code class="docutils literal notranslate"><span class="pre">f='mp4'</span></code>).</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -235,7 +235,7 @@ used with <code class="docutils literal notranslate"><span class="pre">pipe:</sp
|
||||
<p>Run and stream input:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">process</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">ffmpeg</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="s1">'</span><span class="si">{}</span><span class="s1">x</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">fmt</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="s1">'</span><span class="si">{}</span><span class="s1">x</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">out_filename</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'yuv420p'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">overwrite_output</span><span class="p">()</span>
|
||||
<span class="o">.</span><span class="n">run_async</span><span class="p">(</span><span class="n">pipe_stdin</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
@ -247,7 +247,7 @@ used with <code class="docutils literal notranslate"><span class="pre">pipe:</sp
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">process</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">ffmpeg</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="n">in_filename</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="s1">'pipe'</span><span class="p">:,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="s1">'pipe'</span><span class="p">:,</span> <span class="nb">fmt</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">run_async</span><span class="p">(</span><span class="n">pipe_stdout</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">pipe_stderr</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">out</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="n">process</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
|
||||
@ -257,13 +257,13 @@ used with <code class="docutils literal notranslate"><span class="pre">pipe:</sp
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">process1</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">ffmpeg</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="n">in_filename</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">fmt</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">run_async</span><span class="p">(</span><span class="n">pipe_stdout</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">process2</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">ffmpeg</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="s1">'</span><span class="si">{}</span><span class="s1">x</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
|
||||
<span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s1">'pipe:'</span><span class="p">,</span> <span class="nb">fmt</span><span class="o">=</span><span class="s1">'rawvideo'</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'rgb24'</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="s1">'</span><span class="si">{}</span><span class="s1">x</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
|
||||
<span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">out_filename</span><span class="p">,</span> <span class="n">pix_fmt</span><span class="o">=</span><span class="s1">'yuv420p'</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">overwrite_output</span><span class="p">()</span>
|
||||
<span class="o">.</span><span class="n">run_async</span><span class="p">(</span><span class="n">pipe_stdin</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
@ -31,7 +31,7 @@ height = int(video_stream['height'])
|
||||
out, _ = (
|
||||
ffmpeg
|
||||
.input('in.mp4')
|
||||
.output('pipe:', format='rawvideo', pix_fmt='rgb24')
|
||||
.output('pipe:', fmt='rawvideo', pix_fmt='rgb24')
|
||||
.run(capture_stdout=True)
|
||||
)
|
||||
video = (
|
||||
@ -50,7 +50,7 @@ out, _ = (
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.filter('select', 'gte(n,{})'.format(frame_num))
|
||||
.output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
|
||||
.output('pipe:', vframes=1, fmt='image2', vcodec='mjpeg')
|
||||
.run(capture_stdout=True)
|
||||
)
|
||||
```
|
||||
@ -62,7 +62,7 @@ out, _ = (
|
||||
```python
|
||||
out, _ = (ffmpeg
|
||||
.input(in_filename, **input_kwargs)
|
||||
.output('-', format='s16le', acodec='pcm_s16le', ac=1, ar='16k')
|
||||
.output('-', fmt='s16le', acodec='pcm_s16le', ac=1, ar='16k')
|
||||
.overwrite_output()
|
||||
.run(capture_stdout=True)
|
||||
)
|
||||
@ -165,13 +165,13 @@ input_video = ffmpeg.input('input-video.mp4')
|
||||
process1 = (
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8)
|
||||
.output('pipe:', fmt='rawvideo', pix_fmt='rgb24', vframes=8)
|
||||
.run_async(pipe_stdout=True)
|
||||
)
|
||||
|
||||
process2 = (
|
||||
ffmpeg
|
||||
.input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.input('pipe:', fmt='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.output(out_filename, pix_fmt='yuv420p')
|
||||
.overwrite_output()
|
||||
.run_async(pipe_stdin=True)
|
||||
@ -208,7 +208,7 @@ process2.wait()
|
||||
```python
|
||||
(
|
||||
ffmpeg
|
||||
.input('FaceTime', format='avfoundation', pix_fmt='uyvy422', framerate=30)
|
||||
.input('FaceTime', fmt='avfoundation', pix_fmt='uyvy422', framerate=30)
|
||||
.output('out.mp4', pix_fmt='yuv420p', vframes=100)
|
||||
.run()
|
||||
)
|
||||
@ -248,7 +248,7 @@ packet_size = 4096
|
||||
process = (
|
||||
ffmpeg
|
||||
.input('rtsp://%s:8554/default')
|
||||
.output('-', format='h264')
|
||||
.output('-', fmt='h264')
|
||||
.run_async(pipe_stdout=True)
|
||||
)
|
||||
|
||||
|
@ -2,7 +2,7 @@ import ffmpeg
|
||||
|
||||
(
|
||||
ffmpeg
|
||||
.input('FaceTime', format='avfoundation', pix_fmt='uyvy422', framerate=30)
|
||||
.input('FaceTime', fmt='avfoundation', pix_fmt='uyvy422', framerate=30)
|
||||
.output('out.mp4', pix_fmt='yuv420p', vframes=100)
|
||||
.run()
|
||||
)
|
||||
|
@ -50,7 +50,7 @@
|
||||
"out, err = (\n",
|
||||
" ffmpeg\n",
|
||||
" .input('in.mp4')\n",
|
||||
" .output('pipe:', format='rawvideo', pix_fmt='rgb24')\n",
|
||||
" .output('pipe:', fmt='rawvideo', pix_fmt='rgb24')\n",
|
||||
" .run(capture_stdout=True)\n",
|
||||
")\n",
|
||||
"video = (\n",
|
||||
@ -95,7 +95,7 @@
|
||||
" out, _ = (\n",
|
||||
" stream\n",
|
||||
" .filter_('select', 'gte(n,{})'.format(frame_num))\n",
|
||||
" .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=1)\n",
|
||||
" .output('pipe:', fmt='rawvideo', pix_fmt='rgb24', vframes=1)\n",
|
||||
" .run(capture_stdout=True, capture_stderr=True)\n",
|
||||
" )\n",
|
||||
" return np.frombuffer(out, np.uint8).reshape([height, width, 3])\n",
|
||||
|
@ -16,7 +16,7 @@ def read_frame_as_jpeg(in_filename, frame_num):
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.filter('select', 'gte(n,{})'.format(frame_num))
|
||||
.output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
|
||||
.output('pipe:', vframes=1, fmt='image2', vcodec='mjpeg')
|
||||
.run(capture_stdout=True)
|
||||
)
|
||||
return out
|
||||
|
@ -51,7 +51,7 @@ def get_chunk_times(in_filename, silence_threshold, silence_duration, start_time
|
||||
(ffmpeg
|
||||
.input(in_filename, **input_kwargs)
|
||||
.filter('silencedetect', n='{}dB'.format(silence_threshold), d=silence_duration)
|
||||
.output('-', format='null')
|
||||
.output('-', fmt='null')
|
||||
.compile()
|
||||
) + ['-nostats'], # FIXME: use .nostats() once it's implemented in ffmpeg-python.
|
||||
stderr=subprocess.PIPE
|
||||
|
@ -58,7 +58,7 @@ def start_ffmpeg_process1(in_filename):
|
||||
args = (
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.output('pipe:', format='rawvideo', pix_fmt='rgb24')
|
||||
.output('pipe:', fmt='rawvideo', pix_fmt='rgb24')
|
||||
.compile()
|
||||
)
|
||||
return subprocess.Popen(args, stdout=subprocess.PIPE)
|
||||
@ -68,7 +68,7 @@ def start_ffmpeg_process2(out_filename, width, height):
|
||||
logger.info('Starting ffmpeg process2')
|
||||
args = (
|
||||
ffmpeg
|
||||
.input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.input('pipe:', fmt='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.output(out_filename, pix_fmt='yuv420p')
|
||||
.overwrite_output()
|
||||
.compile()
|
||||
|
@ -22,7 +22,7 @@ def decode_audio(in_filename, **input_kwargs):
|
||||
try:
|
||||
out, err = (ffmpeg
|
||||
.input(in_filename, **input_kwargs)
|
||||
.output('-', format='s16le', acodec='pcm_s16le', ac=1, ar='16k')
|
||||
.output('-', fmt='s16le', acodec='pcm_s16le', ac=1, ar='16k')
|
||||
.overwrite_output()
|
||||
.run(capture_stdout=True, capture_stderr=True)
|
||||
)
|
||||
|
@ -26,9 +26,9 @@ def input(filename, **kwargs):
|
||||
kwargs['filename'] = filename
|
||||
fmt = kwargs.pop('f', None)
|
||||
if fmt:
|
||||
if 'format' in kwargs:
|
||||
raise ValueError("Can't specify both `format` and `f` kwargs")
|
||||
kwargs['format'] = fmt
|
||||
if 'fmt' in kwargs:
|
||||
raise ValueError("Can't specify both `fmt` and `f` kwargs")
|
||||
kwargs['fmt'] = fmt
|
||||
return InputNode(input.__name__, kwargs=kwargs).stream()
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ def output(*streams_and_filename, **kwargs):
|
||||
Args:
|
||||
video_bitrate: parameter for ``-b:v``, e.g. ``video_bitrate=1000``.
|
||||
audio_bitrate: parameter for ``-b:a``, e.g. ``audio_bitrate=200``.
|
||||
format: alias for ``-f`` parameter, e.g. ``format='mp4'``
|
||||
fmt: alias for ``-f`` parameter, e.g. ``fmt='mp4'``
|
||||
(equivalent to ``f='mp4'``).
|
||||
|
||||
If multiple streams are provided, they are mapped to the same
|
||||
@ -88,9 +88,9 @@ def output(*streams_and_filename, **kwargs):
|
||||
|
||||
fmt = kwargs.pop('f', None)
|
||||
if fmt:
|
||||
if 'format' in kwargs:
|
||||
raise ValueError("Can't specify both `format` and `f` kwargs")
|
||||
kwargs['format'] = fmt
|
||||
if 'fmt' in kwargs:
|
||||
raise ValueError("Can't specify both `fmt` and `f` kwargs")
|
||||
kwargs['fmt'] = fmt
|
||||
return OutputNode(streams, output.__name__, kwargs=kwargs).stream()
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ def _get_input_args(input_node):
|
||||
if input_node.name == input.__name__:
|
||||
kwargs = copy.copy(input_node.kwargs)
|
||||
filename = kwargs.pop('filename')
|
||||
fmt = kwargs.pop('format', None)
|
||||
fmt = kwargs.pop('fmt', None)
|
||||
video_size = kwargs.pop('video_size', None)
|
||||
args = []
|
||||
if fmt:
|
||||
@ -128,8 +128,8 @@ def _get_output_args(node, stream_name_map):
|
||||
|
||||
kwargs = copy.copy(node.kwargs)
|
||||
filename = kwargs.pop('filename')
|
||||
if 'format' in kwargs:
|
||||
args += ['-f', kwargs.pop('format')]
|
||||
if 'fmt' in kwargs:
|
||||
args += ['-f', kwargs.pop('fmt')]
|
||||
if 'video_bitrate' in kwargs:
|
||||
args += ['-b:v', str(kwargs.pop('video_bitrate'))]
|
||||
if 'audio_bitrate' in kwargs:
|
||||
@ -221,7 +221,7 @@ def run_async(
|
||||
|
||||
process = (
|
||||
ffmpeg
|
||||
.input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.input('pipe:', fmt='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.output(out_filename, pix_fmt='yuv420p')
|
||||
.overwrite_output()
|
||||
.run_async(pipe_stdin=True)
|
||||
@ -233,7 +233,7 @@ def run_async(
|
||||
process = (
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.output('pipe':, format='rawvideo', pix_fmt='rgb24')
|
||||
.output('pipe':, fmt='rawvideo', pix_fmt='rgb24')
|
||||
.run_async(pipe_stdout=True, pipe_stderr=True)
|
||||
)
|
||||
out, err = process.communicate()
|
||||
@ -243,13 +243,13 @@ def run_async(
|
||||
process1 = (
|
||||
ffmpeg
|
||||
.input(in_filename)
|
||||
.output('pipe:', format='rawvideo', pix_fmt='rgb24')
|
||||
.output('pipe:', fmt='rawvideo', pix_fmt='rgb24')
|
||||
.run_async(pipe_stdout=True)
|
||||
)
|
||||
|
||||
process2 = (
|
||||
ffmpeg
|
||||
.input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.input('pipe:', fmt='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
|
||||
.output(out_filename, pix_fmt='yuv420p')
|
||||
.overwrite_output()
|
||||
.run_async(pipe_stdin=True)
|
||||
|
@ -660,13 +660,13 @@ def test_pipe():
|
||||
out = (
|
||||
ffmpeg.input(
|
||||
'pipe:0',
|
||||
format='rawvideo',
|
||||
fmt='rawvideo',
|
||||
pixel_format='rgb24',
|
||||
video_size=(width, height),
|
||||
framerate=10,
|
||||
)
|
||||
.trim(start_frame=start_frame)
|
||||
.output('pipe:1', format='rawvideo')
|
||||
.output('pipe:1', fmt='rawvideo')
|
||||
)
|
||||
|
||||
args = out.get_args()
|
||||
|
Loading…
x
Reference in New Issue
Block a user