Skip to content

Commit eda864a

Browse files
authored
Merge pull request #313 from caspervdw/pyavexporter
FIX: Fix PyAv exporter for newer pyav versions
2 parents 9b60af8 + c50fb3e commit eda864a

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

pims/display.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,22 @@ def export_pyav(sequence, filename, rate=30, bitrate=None,
118118
else:
119119
raise NotImplemented
120120

121-
output = av.open(str(filename), str('w'), format=format, options=options)
122121
# Maximum allowed timebase is 66535 (at least for mpeg4)
123122
# see https://github.com/mikeboers/PyAV/issues/242
124123
export_rate_frac = Fraction(export_rate).limit_denominator(65535)
125-
stream = output.add_stream(codec, rate=export_rate_frac)
124+
125+
output = av.open(str(filename), str('w'), format=format)
126+
try:
127+
# from PyAv 6.0, options can be supplied here
128+
stream = output.add_stream(
129+
codec, rate=export_rate_frac, options=options
130+
)
131+
except TypeError: # before, we should supply it at .open
132+
output = av.open(
133+
str(filename), str('w'), format=format, options=options
134+
)
135+
stream = output.add_stream(codec, rate=export_rate_frac)
136+
126137
stream.pix_fmt = str(pixel_format)
127138

128139
for frame_no in itertools.count():
@@ -157,7 +168,10 @@ def export_pyav(sequence, filename, rate=30, bitrate=None,
157168

158169
# Finish encoding the stream
159170
while True:
160-
packet = stream.encode()
171+
try:
172+
packet = stream.encode()
173+
except av.AVError: # End of file raises AVError since after av 0.4
174+
break
161175
if packet is None:
162176
break
163177
output.mux(packet)

0 commit comments

Comments
 (0)