コード例 #1
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_no_eng_audio_is_skipped():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("dts")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3])

    assert file_processor.state == streamix.FileState.Skip
コード例 #2
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_first_audio_eng_and_safe_codec_is_skipped():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac", language="eng")
    s3 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3])

    assert file_processor.state == streamix.FileState.Skip
コード例 #3
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_other_stream_eng_is_convert():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3])

    assert file_processor.state == streamix.FileState.Convert
コード例 #4
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_other_stream_eng_is_convert_uses_priority():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("pcm_dvd", language="eng")
    s4 = testhelper.build_audio_stream("dts", language="eng")
    s5 = testhelper.build_audio_stream("pcm_dvd", language="eng")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4, s5])

    assert file_processor.state == streamix.FileState.Convert
コード例 #5
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_remap_moves_safe_eng_to_first():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("aac", language="eng")
    s4 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    stream_order = file_processor._remap_stream_order()

    assert stream_order == [s1, s3, s2, s4]
コード例 #6
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_selects_eng():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng")
    s4 = testhelper.build_audio_stream("abc")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    selected_stream = file_processor._select_stream().raw

    assert selected_stream == s3
コード例 #7
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_remap_command_never_calls_aac():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("aac", language="eng")
    s4 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    assert "aac" not in cmd
コード例 #8
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_selects_by_priority():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("pcm_dvd", language="eng")
    s4 = testhelper.build_audio_stream("dts", language="eng")
    s5 = testhelper.build_audio_stream("pcm_dvd", language="eng")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4, s5])

    # noinspection PyProtectedMember
    selected_stream = file_processor._select_stream().raw

    assert selected_stream == s4
コード例 #9
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_uses_bitrate():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng", bitrate=1)
    s4 = testhelper.build_audio_stream("abc", language="eng", bitrate=10)
    s5 = testhelper.build_audio_stream("abc", language="eng", bitrate=2)
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4, s5])

    # noinspection PyProtectedMember
    selected_stream = file_processor._select_stream().raw

    assert selected_stream == s4
コード例 #10
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_subprocess_call(mock_rename):
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2])

    with unittest.mock.patch("streamix.logger") as mock_logger:
        with unittest.mock.patch("streamix.FileProcessor._get_command") as mock_get_command:
            mock_get_command.return_value = "ls -la"
            file_processor.run()

        assert mock_logger.info.called
        info_args = mock_logger.info.call_args
        assert info_args[0][0].startswith("Successfully re-encoded:")
コード例 #11
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_command_uses_default_bitrate_if_lower():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng", bitrate=100)
    s4 = testhelper.build_audio_stream("abc")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    tokens = cmd.split()
    encode_token_index = next(i for i, t in enumerate(tokens) if t.startswith("-b:"))
    assert tokens[encode_token_index + 1] == str(320000)
コード例 #12
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_command_leaves_original_stream_map_params():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng")
    s4 = testhelper.build_audio_stream("abc")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    tokens = cmd.split()
    actual_stream_map = [int(tokens[i+1][2:]) for i, t in enumerate(tokens) if t.startswith("-map")]

    assert actual_stream_map == [0, 2, 1, 2, 3]
コード例 #13
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_uses_bitrate_after_priority():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("pcm_dvd", language="eng", bitrate=1)
    s4 = testhelper.build_audio_stream("dts", language="eng", bitrate=10)
    s5 = testhelper.build_audio_stream("pcm_dvd", language="eng", bitrate=2)
    s6 = testhelper.build_audio_stream("dts", language="eng", bitrate=100)
    s7 = testhelper.build_audio_stream("pcm_dvd", language="eng", bitrate=1000)
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4, s5, s6, s7])

    # noinspection PyProtectedMember
    selected_stream = file_processor._select_stream().raw

    assert selected_stream == s6
コード例 #14
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_convert_command_maps_streams_in_codec_params():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("abc", language="eng")
    s4 = testhelper.build_audio_stream("abc")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    tokens = cmd.split()
    actual_codec_map = [int(t[3:]) for t in tokens if t.startswith("-c:")]

    # expect the codec map to be sequential
    assert actual_codec_map == [0, 1, 2, 3, 4]
コード例 #15
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_remap_command_only_copies():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("aac", language="eng")
    s4 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    tokens = cmd.split()
    for i, t in enumerate(tokens):
        if t.startswith("-c"):
            # the command following the -c must be copy
            assert tokens[i+1] == "copy"
コード例 #16
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_remap_command_respects_stream_order():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    s3 = testhelper.build_audio_stream("aac", language="eng")
    s4 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2, s3, s4])

    # noinspection PyProtectedMember
    stream_order = file_processor._remap_stream_order()
    # noinspection PyProtectedMember
    cmd = file_processor._get_command()

    stream_index = 0
    tokens = cmd.split()
    for i, t in enumerate(tokens):
        if t.startswith("-map"):
            # the command following the -map should match the stream order (using the index)
            assert tokens[i+1] == "0:{0}".format(stream_order[stream_index]["index"])
            stream_index += 1
コード例 #17
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_file_with_only_aac_stream_is_skipped():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2])

    assert file_processor.state == streamix.FileState.Skip
コード例 #18
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_file_with_wrong_ext_is_ignored():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("aac")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2], filename="skipped.file")

    assert file_processor.state == streamix.FileState.Ignore
コード例 #19
0
ファイル: test_streamix.py プロジェクト: codyzu/streamix
def test_file_with_unknown_codec_is_skipped():
    s1 = testhelper.build_video_stream()
    s2 = testhelper.build_audio_stream("crazy codec")
    file_processor = testhelper.build_file_processor_for_streams([s1, s2])

    assert file_processor.state == streamix.FileState.Skip