对于python web项目,我通过flask接口接收视频文件。 现在做分析,我需要从中提取音频文件。
问题是我无法将视频首先保存到文件中,这似乎消除了使用ffmpeg,因为它需要链接到文件位置。
是否有任何python解决方案允许我仅使用对象传递和返回音频/视频文件?
提前谢谢
答案 0 :(得分:0)
没有人回答所以我会尽力帮助你,但我没有成功。
肯定是因为我没有编译自己的ffmpeg,所以没有预期的编解码器..但无论如何,我认为以下内容可以提供帮助。
这是一个简单的Flask服务器,期望使用文件进行POST查询,并通过ffmpeg(使用ffmpy
)传递它而不保存它。
import os
import subprocess
from ffmpy import FFmpeg
from flask import Flask, request, redirect, url_for
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
stream_file = request.files['file']
ff = FFmpeg(
inputs={'pipe:0': 'ARGUMENTS'},
outputs={'pipe:1': 'ARGUMENTS'}
)
stdout, stderr = ff.run(input_data=stream_file.read(), stdout=subprocess.PIPE)
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
'''
app.run()
显然你必须通过预期的ffmpeg参数更新ARGUMENTS
。
部分文档:https://ffmpeg.org/ffmpeg-protocols.html#pipe,http://ffmpy.readthedocs.io/en/latest/examples.html#using-pipe-protocol