你可以在python中将视频转换为音频文件而不保存到文件吗?

时间:2017-01-31 12:04:14

标签: python ffmpeg

对于python web项目,我通过flask接口接收视频文件。 现在做分析,我需要从中提取音频文件。

问题是我无法将视频首先保存到文件中,这似乎消除了使用ffmpeg,因为它需要链接到文件位置。

是否有任何python解决方案允许我仅使用对象传递和返回音频/视频文件?

提前谢谢

1 个答案:

答案 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#pipehttp://ffmpy.readthedocs.io/en/latest/examples.html#using-pipe-protocol