You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenFace和openSMILE提取MOSI视频特征提示无此文件如何解决

MOSI数据集特征提取路径报错解决方案

报错原因

触发foldername: No such file or directory的核心是代码的变量传递和路径拼接错误,共3处问题:

  1. Shell命令里直接写的filename、foldername是固定字符串,没有代入Python循环的实际变量值,系统会直接去找叫filename的文件,自然找不到
  2. os.listdir()仅返回文件名本身,不带MOSI/videos/的父路径前缀,OpenFace和ffmpeg无法定位到实际存储的视频文件
  3. 你全程没有定义foldername变量,ffmpeg执行时自然找不到对应路径

修复步骤

  • 提前创建processed相关输出目录,避免后续输出时触发路径不存在报错
  • 循环时给每个视频文件拼接完整的相对/绝对路径,不要直接使用os.listdir返回的裸文件名
  • 用f-string把Python变量的实际值传入shell命令,不要把变量名当字符串直接写在命令里
  • 先通过ffmpeg从视频中提取独立的wav音频文件,再送入openSMILE处理,不要直接把视频传给openSMILE解析

修正后参考代码

import os
import pickle

# 提前创建输出目录
os.makedirs("processed/openface", exist_ok=True)
os.makedirs("processed/audio", exist_ok=True)
os.makedirs("processed/feature", exist_ok=True)

video_root = "MOSI/videos"
for filename in os.listdir(video_root):
    # 跳过文件夹,只处理视频文件,可根据你的实际视频后缀调整判断条件
    if not filename.endswith((".mp4", ".avi", ".mov", ".flv")):
        continue
    print(f"当前处理:{filename}")
    # 拼接视频完整路径
    video_full_path = os.path.join(video_root, filename)
    # 提取OpenFace视觉特征
    os.system(f"./OpenFace/build/bin/FeatureExtraction -f {video_full_path} -out_dir processed/openface")
    # 提取16k单声道wav音频用于openSMILE处理
    audio_name = filename.rsplit(".", 1)[0] + ".wav"
    audio_full_path = os.path.join("processed/audio", audio_name)
    os.system(f"ffmpeg -y -loglevel error -i {video_full_path} -ac 1 -ar 16000 {audio_full_path}")
    # 提取openSMILE声学特征
    opensmile_feature = smile.process_file(audio_full_path)
    # 保存特征为pickle文件
    feature_save_path = os.path.join("processed/feature", filename.rsplit(".",1)[0] + "_opensmile.pkl")
    with open(feature_save_path, "wb") as f:
        pickle.dump(opensmile_feature, f)

后续操作提示

  • 若运行仍提示工具找不到,将./OpenFace/build/bin/FeatureExtraction和ffmpeg替换为你本地对应工具的绝对路径即可
  • 如果MOSI/videos下是每个样本的子文件夹,不是直接存的视频,需要再加一层循环遍历子文件夹内的视频文件
  • 数据集划分直接调用sklearn.model_selection.train_test_split按比例拆分样本即可,特征拼接可以在模型定义时用torch.cat(PyTorch)或tensorflow.concat(TensorFlow)实现

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:36:02