app-video.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # import the necessary packages
  2. import os
  3. import sys
  4. import requests
  5. import ssl
  6. from flask import Flask
  7. from flask import request
  8. from flask import jsonify
  9. from flask import send_file
  10. from app_utils import download
  11. from app_utils import generate_random_filename
  12. from app_utils import clean_me
  13. from app_utils import clean_all
  14. from app_utils import create_directory
  15. from app_utils import get_model_bin
  16. from app_utils import convertToJPG
  17. from os import path
  18. import torch
  19. import fastai
  20. from deoldify.visualize import *
  21. from pathlib import Path
  22. import traceback
  23. torch.backends.cudnn.benchmark=True
  24. os.environ['CUDA_VISIBLE_DEVICES']='0'
  25. app = Flask(__name__)
  26. # define a predict function as an endpoint
  27. @app.route("/process", methods=["POST"])
  28. def process_video():
  29. input_path = generate_random_filename(upload_directory,"mp4")
  30. output_path = os.path.join(results_video_directory, os.path.basename(input_path))
  31. try:
  32. url = request.json["source_url"]
  33. render_factor = int(request.json["render_factor"])
  34. video_path = video_colorizer.colorize_from_url(source_url=url, file_name=input_path, render_factor=render_factor)
  35. callback = send_file(output_path, mimetype='application/octet-stream')
  36. return callback, 200
  37. except:
  38. traceback.print_exc()
  39. return {'message': 'input error'}, 400
  40. finally:
  41. clean_all([
  42. input_path,
  43. output_path
  44. ])
  45. if __name__ == '__main__':
  46. global upload_directory
  47. global results_video_directory
  48. global video_colorizer
  49. upload_directory = '/data/upload/'
  50. create_directory(upload_directory)
  51. results_video_directory = '/data/video/result/'
  52. create_directory(results_video_directory)
  53. model_directory = '/data/models/'
  54. create_directory(model_directory)
  55. video_model_url = 'https://www.dropbox.com/s/336vn9y4qwyg9yz/ColorizeVideo_gen.pth?dl=0'
  56. get_model_bin(video_model_url, os.path.join(model_directory, 'ColorizeVideo_gen.pth'))
  57. video_colorizer = get_video_colorizer()
  58. port = 5000
  59. host = '0.0.0.0'
  60. app.run(host=host, port=port, threaded=False)