"""Lambda function module.""" import logging import os from shutil import copyfile import boto3 from ffmpy import FFmpeg s3 = boto3.client('s3') ROOT_PATH = os.environ.get('LAMBDA_TASK_ROOT', __file__) BUCKET_NAME = os.environ.get('BUCKET_NAME', 'input-assets-files') def handler(event, context): """Lambda entry point.""" try: from_url = event.get('from_url') to_url = event.get('to_url') # origin_ffmpeg_path = '{root}/{ffmpeg_binary}'.format( # root=ROOT_PATH, ffmpeg_binary='ffmpeg') # input_file_path = '{root}/{file_name}'.format( # root=ROOT_PATH, file_name='wav_file.wav') # copyfile(input_file_path, '/tmp/wav_file.wav') ff = FFmpeg( executable='ffmpeg', inputs={from_url: None}, outputs={to_url: '-f format pipe:1 | curl --data-binary @- -X PUT'} ) print(ff.cmd) print('start') stdout, stderr = ff.run() print('-------------------') print(stderr) print('finish') print(stdout) if os.path.exists('/tmp/m4a_file.m4a'): print('File exists') except Exception as e: print('exception') logging.exception(str(e)) raise if __name__ == '__main__': b = s3.generate_presigned_url( ClientMethod='put_object', ExpiresIn=3600 * 24, Params={ 'Bucket': BUCKET_NAME, 'Key': 'uploaded_file.m4a' } ) event = { 'from_url': 'http://db62p13qhs4yj.cloudfront.net/large_wav_file_950_mb.wav', 'to_url': 'https://input-assets-files.s3.amazonaws.com/uploaded_file.m4a?AWSAccessKeyId=AKIAIS5FZA6AGJUFJSCQ&Signature=xo3sNDDCQYxIzhhas%2BsEqJNl9JI%3D&Expires=1500469256' } handler(event, None) ffmpeg -i http://db62p13qhs4yj.cloudfront.net/large_wav_file_950_mb.wav -f format pipe:1 | curl --data-binary @- -X PUT https://input-assets-files.s3.amazonaws.com/uploaded_file.m4a?AWSAccessKeyId=AKIAIS5FZA6AGJUFJSCQ&Signature=xo3sNDDCQYxIzhhas%2BsEqJNl9JI%3D&Expires=1500469256 ffmpeg -i /home/maximov/work_projects/the_orchard/collab/mmaximov/ffmpeg_streaming_test/large_wav_file.wav -ss 00:00:00 out1.flac