Skip to content

Commit c50af8c

Browse files
committed
Merge pull request #130 from aestrivex/add_movie_bitrate_api
add bitrate option to ffmpeg call
2 parents b8b8c10 + f206b01 commit c50af8c

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

surfer/utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ def assert_ffmpeg_is_available():
655655
requires_ffmpeg = np.testing.dec.skipif(not has_ffmpeg(), 'Requires FFmpeg')
656656

657657

658-
def ffmpeg(dst, frame_path, framerate=24, codec='mpeg4'):
658+
def ffmpeg(dst, frame_path, framerate=24, codec='mpeg4', bitrate='1M'):
659659
"""Run FFmpeg in a subprocess to convert an image sequence into a movie
660660
661661
Parameters
@@ -671,6 +671,9 @@ def ffmpeg(dst, frame_path, framerate=24, codec='mpeg4'):
671671
Codec to use (default 'mpeg4'). If None, the codec argument is not
672672
forwarded to ffmpeg, which preserves compatibility with very old
673673
versions of ffmpeg
674+
bitrate : str | float
675+
Bitrate to use to encode movie. Can be specified as number (e.g.
676+
64000) or string (e.g. '64k'). Default value is 1M
674677
675678
Notes
676679
-----
@@ -696,7 +699,7 @@ def ffmpeg(dst, frame_path, framerate=24, codec='mpeg4'):
696699
frame_dir, frame_fmt = os.path.split(frame_path)
697700

698701
# make the movie
699-
cmd = ['ffmpeg', '-i', frame_fmt, '-r', str(framerate)]
702+
cmd = ['ffmpeg', '-i', frame_fmt, '-r', str(framerate), '-b', str(bitrate)]
700703
if codec is not None:
701704
cmd += ['-c', codec]
702705
cmd += [dst]

surfer/viz.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2122,7 +2122,8 @@ def save_montage(self, filename, order=['lat', 'ven', 'med'],
21222122
return out
21232123

21242124
def save_movie(self, fname, time_dilation=4., tmin=None, tmax=None,
2125-
framerate=24, interpolation='quadratic', codec='mpeg4'):
2125+
framerate=24, interpolation='quadratic', codec='mpeg4',
2126+
bitrate='1M'):
21262127
"""Save a movie (for data with a time axis)
21272128
21282129
.. Warning::
@@ -2150,6 +2151,9 @@ def save_movie(self, fname, time_dilation=4., tmin=None, tmax=None,
21502151
'cubic', default 'quadratic').
21512152
codec : str
21522153
Codec to use with ffmpeg (default 'mpeg4').
2154+
bitrate : str | float
2155+
Bitrate to use to encode movie. Can be specified as number (e.g.
2156+
64000) or string (e.g. '64k'). Default value is 1M
21532157
21542158
Notes
21552159
-----
@@ -2192,7 +2196,7 @@ def save_movie(self, fname, time_dilation=4., tmin=None, tmax=None,
21922196
fname_pattern = os.path.join(tempdir, frame_pattern)
21932197
self.save_image_sequence(time_idx, fname_pattern, False, -1, -1,
21942198
'current', interpolation=interpolation)
2195-
ffmpeg(fname, fname_pattern, framerate, codec)
2199+
ffmpeg(fname, fname_pattern, framerate, codec=codec, bitrate=bitrate)
21962200

21972201
def animate(self, views, n_steps=180., fname=None, use_cache=False,
21982202
row=-1, col=-1):

0 commit comments

Comments
 (0)