对接
This commit is contained in:
parent
8d6159d302
commit
515bf156ab
@ -29,7 +29,8 @@ def parse_ffmpeg_task(task_info, template_info):
|
|||||||
for overlay in part.get('overlays', []):
|
for overlay in part.get('overlays', []):
|
||||||
sub_ffmpeg_task.add_overlay(os.path.join(template_info.get("local_path"), overlay))
|
sub_ffmpeg_task.add_overlay(os.path.join(template_info.get("local_path"), overlay))
|
||||||
tasks.append(sub_ffmpeg_task)
|
tasks.append(sub_ffmpeg_task)
|
||||||
task = FfmpegTask(tasks, output_file="test.mp4")
|
output_file = "out_" + str(time.time()) + ".mp4"
|
||||||
|
task = FfmpegTask(tasks, output_file=output_file)
|
||||||
overall = template_info.get("overall_template")
|
overall = template_info.get("overall_template")
|
||||||
task.frame_rate = template_info.get("frame_rate", 25)
|
task.frame_rate = template_info.get("frame_rate", 25)
|
||||||
for lut in overall.get('filters', []):
|
for lut in overall.get('filters', []):
|
||||||
@ -64,4 +65,16 @@ def parse_video(source, task_params, template_info):
|
|||||||
def start_ffmpeg_task(ffmpeg_task):
|
def start_ffmpeg_task(ffmpeg_task):
|
||||||
for task in ffmpeg_task.analyze_input_render_tasks():
|
for task in ffmpeg_task.analyze_input_render_tasks():
|
||||||
start_ffmpeg_task(task)
|
start_ffmpeg_task(task)
|
||||||
ffmpeg.start_render(ffmpeg_task)
|
return ffmpeg.start_render(ffmpeg_task)
|
||||||
|
|
||||||
|
|
||||||
|
def clear_task_tmp_file(ffmpeg_task):
|
||||||
|
for task in ffmpeg_task.analyze_input_render_tasks():
|
||||||
|
clear_task_tmp_file(task)
|
||||||
|
try:
|
||||||
|
os.remove(ffmpeg_task.get_output_file())
|
||||||
|
logger.info("delete tmp file: " + ffmpeg_task.get_output_file())
|
||||||
|
except OSError:
|
||||||
|
logger.warning("delete tmp file failed: " + ffmpeg_task.get_output_file())
|
||||||
|
return False
|
||||||
|
return True
|
12
biz/task.py
12
biz/task.py
@ -1,4 +1,5 @@
|
|||||||
from template import get_template_def
|
from template import get_template_def
|
||||||
|
from util import api
|
||||||
|
|
||||||
|
|
||||||
def normalize_task(task_info):
|
def normalize_task(task_info):
|
||||||
@ -7,8 +8,15 @@ def normalize_task(task_info):
|
|||||||
|
|
||||||
|
|
||||||
def start_task(task_info):
|
def start_task(task_info):
|
||||||
from biz.ffmpeg import parse_ffmpeg_task, start_ffmpeg_task
|
from biz.ffmpeg import parse_ffmpeg_task, start_ffmpeg_task, clear_task_tmp_file
|
||||||
task_info = normalize_task(task_info)
|
task_info = normalize_task(task_info)
|
||||||
template_info = get_template_def(task_info.get("templateId"))
|
template_info = get_template_def(task_info.get("templateId"))
|
||||||
ffmpeg_task = parse_ffmpeg_task(task_info, template_info)
|
ffmpeg_task = parse_ffmpeg_task(task_info, template_info)
|
||||||
result = start_ffmpeg_task(ffmpeg_task)
|
result = start_ffmpeg_task(ffmpeg_task)
|
||||||
|
if not result:
|
||||||
|
return api.report_task_failed(task_info)
|
||||||
|
oss_result = api.upload_task_file(task_info, ffmpeg_task)
|
||||||
|
if not oss_result:
|
||||||
|
return api.report_task_failed(task_info)
|
||||||
|
clear_task_tmp_file(ffmpeg_task)
|
||||||
|
api.report_task_success(task_info)
|
2
index.py
2
index.py
@ -15,4 +15,4 @@ while True:
|
|||||||
for task in task_list:
|
for task in task_list:
|
||||||
print("start task:", task)
|
print("start task:", task)
|
||||||
biz.task.start_task(task)
|
biz.task.start_task(task)
|
||||||
sleep(1)
|
sleep(10000)
|
@ -70,6 +70,8 @@ def load_local_template():
|
|||||||
|
|
||||||
|
|
||||||
def get_template_def(template_id):
|
def get_template_def(template_id):
|
||||||
|
if template_id not in TEMPLATES:
|
||||||
|
download_template(template_id)
|
||||||
return TEMPLATES.get(template_id)
|
return TEMPLATES.get(template_id)
|
||||||
|
|
||||||
def download_template(template_id):
|
def download_template(template_id):
|
||||||
|
40
util/api.py
40
util/api.py
@ -43,7 +43,6 @@ def get_template_info(template_id):
|
|||||||
try:
|
try:
|
||||||
response = session.post('{0}/template/{1}'.format(os.getenv('API_ENDPOINT'), template_id), json={
|
response = session.post('{0}/template/{1}'.format(os.getenv('API_ENDPOINT'), template_id), json={
|
||||||
'accessKey': os.getenv('ACCESS_KEY'),
|
'accessKey': os.getenv('ACCESS_KEY'),
|
||||||
'clientStatus': util.system.get_sys_info()
|
|
||||||
}, timeout=10)
|
}, timeout=10)
|
||||||
except requests.RequestException as e:
|
except requests.RequestException as e:
|
||||||
logger.error("请求失败!", e)
|
logger.error("请求失败!", e)
|
||||||
@ -96,3 +95,42 @@ def get_template_info(template_id):
|
|||||||
template['video_parts'].append(parts)
|
template['video_parts'].append(parts)
|
||||||
template['local_path'] = os.path.join(os.getenv('TEMPLATE_DIR'), str(template_id))
|
template['local_path'] = os.path.join(os.getenv('TEMPLATE_DIR'), str(template_id))
|
||||||
return template
|
return template
|
||||||
|
|
||||||
|
|
||||||
|
def report_task_success(task_info):
|
||||||
|
try:
|
||||||
|
response = session.post('{0}/{1}/success'.format(os.getenv('API_ENDPOINT'), task_info.get("id")), json={
|
||||||
|
'accessKey': os.getenv('ACCESS_KEY'),
|
||||||
|
}, timeout=10)
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error("请求失败!", e)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def report_task_failed(task_info):
|
||||||
|
try:
|
||||||
|
response = session.post('{0}/{1}/fail'.format(os.getenv('API_ENDPOINT'), task_info.get("id")), json={
|
||||||
|
'accessKey': os.getenv('ACCESS_KEY'),
|
||||||
|
}, timeout=10)
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error("请求失败!", e)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def upload_task_file(task_info, ffmpeg_task):
|
||||||
|
try:
|
||||||
|
response = session.post('{0}/{1}/uploadUrl'.format(os.getenv('API_ENDPOINT'), task_info.get("id")), json={
|
||||||
|
'accessKey': os.getenv('ACCESS_KEY'),
|
||||||
|
}, timeout=10)
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error("请求失败!", e)
|
||||||
|
return False
|
||||||
|
data = response.json()
|
||||||
|
url = data.get('data', "")
|
||||||
|
try:
|
||||||
|
with open(ffmpeg_task.get_output_file(), 'rb') as f:
|
||||||
|
requests.put(url, data=f)
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.error("上传失败!", e)
|
||||||
|
return False
|
||||||
|
return True
|
@ -8,7 +8,8 @@ from entity.ffmpeg import FfmpegTask
|
|||||||
def start_render(ffmpeg_task: FfmpegTask):
|
def start_render(ffmpeg_task: FfmpegTask):
|
||||||
print(ffmpeg_task)
|
print(ffmpeg_task)
|
||||||
print(ffmpeg_task.get_ffmpeg_args())
|
print(ffmpeg_task.get_ffmpeg_args())
|
||||||
os.system("ffmpeg.exe "+" ".join(ffmpeg_task.get_ffmpeg_args()))
|
code = os.system("ffmpeg.exe "+" ".join(ffmpeg_task.get_ffmpeg_args()))
|
||||||
|
return code == 0
|
||||||
|
|
||||||
def handle_ffmpeg_output(stdout: Optional[IO[bytes]]) -> str:
|
def handle_ffmpeg_output(stdout: Optional[IO[bytes]]) -> str:
|
||||||
out_time = "0:0:0.0"
|
out_time = "0:0:0.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user