Skip to content

Commit

Permalink
Merge 9a79d75 into df84762
Browse files Browse the repository at this point in the history
  • Loading branch information
B3QL committed Jun 1, 2022
2 parents df84762 + 9a79d75 commit 5e64d6e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -63,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed mono clips crashing when `audio_fadeout` FX applied [\#1578](https://github.com/Zulko/moviepy/pull/1578)
- Fixed scroll FX not being scrolling [\#1591](https://github.com/Zulko/moviepy/pull/1591)
- Fixed parsing FFMPEG streams with square brackets [\#1781](https://github.com/Zulko/moviepy/pull/1781)
- Fixed audio processing for streams with missing `audio_bitrate` [\#1783](https://github.com/Zulko/moviepy/pull/1783)


## [v2.0.0.dev2](https://github.com/zulko/moviepy/tree/v2.0.0.dev2) (2020-10-05)
Expand Down
5 changes: 4 additions & 1 deletion moviepy/video/io/ffmpeg_reader.py
Expand Up @@ -577,12 +577,15 @@ def parse(self):

# not default audio found, assume first audio stream is the default
if self.result["audio_found"] and not self.result.get("audio_bitrate"):

self.result["audio_bitrate"] = None
for streams_input in self.result["inputs"]:
for stream in streams_input["streams"]:
if stream["stream_type"] == "audio" and stream.get("bitrate"):
self.result["audio_bitrate"] = stream["bitrate"]
break
if self.result.get("audio_bitrate"):

if self.result["audio_bitrate"] is not None:
break

result = self.result
Expand Down
16 changes: 16 additions & 0 deletions tests/test_ffmpeg_reader.py
Expand Up @@ -527,6 +527,22 @@ def test_stream_square_brackets():
assert d["inputs"][0]["streams"][1]["language"] is None


def test_stream_missing_audio_bitrate():
infos = """
Input #0, mpeg, from 'clip.mp4':
Duration: 00:02:15.00, start: 52874.498178, bitrate: 266 kb/s
Stream #0:0[0x1e0]: Video: ..., 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1c0]: Audio: mp2, 0 channels, s16p
At least one output file must be specified"""

d = FFmpegInfosParser(infos, "clip.mp4").parse()

assert d
assert len(d["inputs"][0]["streams"]) == 2
assert d["audio_found"]
assert d["audio_bitrate"] is None


def test_sequential_frame_pos():
"""test_video.mp4 contains 5 frames at 1 fps.
Each frame is 1x1 pixels and the sequence is Red, Green, Blue, Black, White.
Expand Down

0 comments on commit 5e64d6e

Please sign in to comment.