python - 在 django 中使用 FFMPEG 在网络上上传后从视频中提取 WAV 音频文件
问题描述
问题
我正在尝试找到一种方法来从Web 用户使用 Django上传的mp4视频文件中提取音频wav文件。ffmpeg
如果我会找到提取音频,那么我应该将它保存在我的项目中的哪里?
- 我用“Django-ffmpeg”尝试过,但没有转换并且卡在“等待转换”消息中。
然后我尝试了:
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')
解决方案
解决方案: - 你可以在 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”库临时存储提取的文件。
推荐阅读
- firebase - Flutter 身份验证:一个 Firebase 项目中的多个 Flutter 应用程序
- java - VolleyError 带有 REST GET 请求的意外响应代码 406
- flutter - Flutter 改变 Textstyle
- python - 运行一个使用 paramiko ssh 到其他服务器并从 jenkins 执行数据库刷新的 python 脚本
- javascript - 在 React / Next js 中路由之前检查更改
- python - 尝试构建 discord.py [voice] 时路径中缺少“make”实用程序
- css - 如何横向展示我的产品卡片?
- google-apps-marketplace - 除非将“共享”功能设置为共享给“知道链接的任何人”,否则“发布到 Web”功能将不再有效
- docker - 在 Azure 管道中使用 Docker 映像作为构建代理时出现错误
- java - 如果此方法中有 void 方法,如何模拟具有返回值的方法