首页 > 解决方案 > 在 django 中使用 FFMPEG 在网络上上传后从视频中提取 WAV 音频文件

问题描述

问题

我正在尝试找到一种方法来从Web 用户使用 Django上传的mp4视频文件中提取音频wav文件。ffmpeg

如果我会找到提取音频,那么我应该将它保存在我的项目中的哪里?

  1. 我用“Django-ffmpeg”尝试过,但没有转换并且卡在“等待转换”消息中。
  2. 然后我尝试了:

    import subprocess
    
    subprocess.call('ffmpeg -i filename.mp4 filename.wav')
    

错误

错误

脚本

def validate_file_extension(value): import os from django.core.exceptions import ValidationError ext = os.path.splitext(value.name) 1 # [0] 返回路径+文件名 filename = os.path.splitext(value.name) 1 # [0] return path+filename valid_extensions = ['.mp4'] if not ext.lower() in valid_extensions: raise ValidationError(u'Unsupported file extension.') else: import subprocess subprocess.call('ffmpeg -i filename .mp4 文件名.wav')

标签: pythondjangovideoffmpeg

解决方案


解决方案: - 你可以在 Django 中以这种方式提取 wav 音频文件:

def extract_audio(videofile,channels=1, rate=16000):

    your_media_root = settings.MEDIA_ROOT
    path_to_user_folder = your_media_root + videofile.name

    inFile = path_to_user_folder

    temp = tempfile.NamedTemporaryFile(suffix='.wav', delete=False)
    command = ["ffmpeg", "-y", "-i", inFile,
           "-ac", str(channels), "-ar", str(rate),
           "-loglevel", "error", temp.name]
    subprocess.check_output(command)
    print(temp.name)
    return temp.name
  • 其次使用“import tempfile”库临时存储提取的文件。

推荐阅读