Skip to content

Commit

Permalink
Merge 7b98b02 into 025c3fe
Browse files Browse the repository at this point in the history
  • Loading branch information
B3QL committed May 31, 2022
2 parents 025c3fe + 7b98b02 commit 1c23e69
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -62,6 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed mono clips crashing when `audio_fadein` FX applied [\#1574](https://github.com/Zulko/moviepy/pull/1574)
- 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)


## [v2.0.0.dev2](https://github.com/zulko/moviepy/tree/v2.0.0.dev2) (2020-10-05)
Expand Down
8 changes: 6 additions & 2 deletions moviepy/video/io/ffmpeg_reader.py
Expand Up @@ -422,7 +422,7 @@ def parse(self):

# get input number, stream number, language and type
main_info_match = re.search(
r"^Stream\s#(\d+):(\d+)\(?(\w+)?\)?:\s(\w+):", line.lstrip()
r"^Stream\s#(\d+):(\d+)[\[(]?(\w+)?[\])]?:\s(\w+):", line.lstrip()
)
(
input_number,
Expand All @@ -434,12 +434,16 @@ def parse(self):
stream_number = int(stream_number)
stream_type_lower = stream_type.lower()

if language is not None:
if language == "und" or language.startswith("0x"):
language = None

# start builiding the current stream
self._current_stream = {
"input_number": input_number,
"stream_number": stream_number,
"stream_type": stream_type_lower,
"language": language if language != "und" else None,
"language": language,
"default": not self._default_stream_found
or line.endswith("(default)"),
}
Expand Down
16 changes: 16 additions & 0 deletions tests/test_ffmpeg_reader.py
Expand Up @@ -511,6 +511,22 @@ def test_stream_deidentation_not_raises_error():
assert len(d["inputs"][0]["streams"]) == 1


def test_stream_square_brackets():
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["inputs"][0]["streams"][0]["language"] is None
assert d["inputs"][0]["streams"][1]["language"] 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 1c23e69

Please sign in to comment.