对于 python web 项目,我通过 flask 接口(interface)接收视频文件。
现在要进行分析,我需要从中提取音频文件。
问题是我无法先将视频保存到文件,这似乎消除了使用 ffmpeg,因为它需要指向文件位置的链接。
是否有任何 python 解决方案允许我仅使用对象传递和返回音频/视频文件?
先感谢您
最佳答案
没有人回答,所以我会尽力帮助你,但我没有成功。
这肯定是因为我没有编译自己的 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()
显然你必须更新
ARGUMENTS
通过预期的 ffmpeg 参数。一些文档:https://ffmpeg.org/ffmpeg-protocols.html#pipe , http://ffmpy.readthedocs.io/en/latest/examples.html#using-pipe-protocol
关于python - 您可以在不保存到文件的情况下将视频转换为 python 中的音频文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957134/