示例#1
0
    def testBypass(self):
        """ Проверка работы в режиме bypass, когда аудиопоток не проходит ни
        через один фильтр."""
        ff = FFMPEG(inputfile='/tmp/input.mp4')

        fc = FilterComplex(audio_inputs=0, audio_outputs=0)
        fc.video | filters.Scale(640, 360) | fc.get_video_dest(0)

        ff.filter_complex = fc

        cv0 = VideoCodec(vcodec='libx264', vbitrate='700000', size='640x360')
        ca0 = AudioCodec(acodec='aac', abitrate='128000')
        out0 = Muxer('flv', '/tmp/out.flv')
        ff.add_output(out0, cv0, ca0)

        expected = [
            'ffmpeg',
            '-i', '/tmp/input.mp4',
            '-filter_complex',
            '[0:v]scale=640x360[vout0]',
            '-f', 'flv',
            '-map', '[vout0]', '-c:v', 'libx264', '-b:v', '700000',
            '-map', '0:a', '-c:a', 'aac', '-b:a', '128000',
            '/tmp/out.flv'
        ]
        self.assertEqual(ff.get_args(), ensure_binary(expected))
        print(ff.get_cmd())
示例#2
0
    def testCodecCopy(self):
        """ Проверяется корректность использования vcodec=copy совместно с
        фильтрами для аудио."""
        ff = FFMPEG(inputfile='/tmp/input.mp4')

        fc = FilterComplex(inputs=0, audio_inputs=1, outputs=0, audio_outputs=1)

        fc.audio | filters.Volume(20) | fc.get_audio_dest(0)

        ff.filter_complex = fc

        cv0 = VideoCodec(vcodec='copy')
        ca0 = AudioCodec(acodec='aac', abitrate='128000')
        out0 = Muxer('flv', '/tmp/out.flv')
        ff.add_output(out0, cv0, ca0)
        expected = [
            'ffmpeg',
            '-i', '/tmp/input.mp4',
            '-filter_complex',
            '[0:a]volume=20.00[aout0]',
            '-f', 'flv',
            '-c:v', 'copy',
            '-map', '[aout0]', '-c:a', 'aac', '-b:a', '128000',
            '/tmp/out.flv'
        ]
        print(ff.get_cmd())
        self.assertEqual(ff.get_args(), ensure_binary(expected))
示例#3
0
    def testFFMPEG(self):
        """ Проверка работоспособности и демонстрация возможностей."""
        ff = FFMPEG(inputfile='/tmp/input.mp4')

        fc = FilterComplex(outputs=1, audio_outputs=2)

        asplit = fc.audio | filters.AudioSplit()

        fc.video | filters.Scale(640, 360) | fc.get_video_dest(0)

        asplit.connect_dest(fc.get_audio_dest(0))
        asplit.connect_dest(fc.get_audio_dest(1))

        ff.filter_complex = fc

        out0 = Muxer('flv', '/tmp/out.flv')
        out1 = Muxer('mp3', '/tmp/out.mp3')

        cv0 = VideoCodec(vcodec='libx264', vbitrate='700000', size='640x360')
        ca0 = AudioCodec(acodec='aac', abitrate='128000')
        ca1 = AudioCodec(acodec='libmp3lame', abitrate='394000')

        ff.add_output(out0, cv0, ca0)
        ff.add_output(out1, ca1)

        expected = [
            'ffmpeg',
            '-i', '/tmp/input.mp4',
            '-filter_complex',
                '[0:v]scale=640x360[vout0];[0:a]asplit[aout0][aout1]',
            '-f', 'flv',
                '-map', '[vout0]', '-c:v', 'libx264', '-b:v', '700000',
                '-map', '[aout0]', '-c:a', 'aac', '-b:a', '128000',
            '/tmp/out.flv',
            '-f', 'mp3',
                '-map', '[aout1]', '-c:a', 'libmp3lame', '-b:a', '394000',
            '/tmp/out.mp3'
        ]
        self.assertEqual(ff.get_args(), ensure_binary(expected))