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

如何使用TensorFlow从MP4视频中提取符合深度学习模型输入要求的帧序列

方案1:TensorFlow 内置预定义函数

TensorFlow 2.6及以上版本自带tf.keras.utils.video_to_array函数,完全匹配你的需求,输入视频路径即可直接返回形状为(帧数, 高度, 宽度, 通道数)的张量,用法和你之前提取GIF帧的逻辑高度一致:

import tensorflow as tf
from tensorflow.keras.utils import video_to_array

video_path = "input.mp4"
video_tensor = video_to_array(video_path)
print(video_tensor.shape)
# 输出示例:TensorShape([150, 720, 1280, 3])

如果需要调整抽帧逻辑,可以传入frame_step(抽帧步长,比如设为2就是每2帧取1帧)、max_frames(最多提取的帧数)等参数控制输出。

方案2:兼容全格式的自定义封装

如果遇到不支持的视频编码格式,也可以用OpenCV自己封装一个轻量工具函数,兼容性更强,支持几乎所有常见视频格式:

import cv2
import numpy as np
import tensorflow as tf

def decode_video(video_path):
    cap = cv2.VideoCapture(video_path)
    frame_list = []
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        # OpenCV默认返回BGR通道,转换为模型常用的RGB通道
        frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        frame_list.append(frame_rgb)
    cap.release()
    # 可以按需转换为TensorFlow张量
    return tf.convert_to_tensor(np.array(frame_list))

# 调用示例
video_tensor = decode_video("input.mp4")
print(video_tensor.shape)

你可以根据自己的需求在函数内添加帧缩放、归一化等预处理逻辑,直接适配模型输入要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:00:00