gradio部署视频输入输出示例,gradio网页输出视频nan,输出视频无法播放解决方法

news2024/12/27 2:59:32

gradio部署视频输入输出示例,gradio网页输出视频nan,输出视频无法播放

  • Opencv不能采用h64格式进行编码
  • 解决方案
    • moviepy介绍
    • 浏览器接受的视频编码格式:
    • 采用h264编码合成视频:
  • gradio部署视频输入输出示例
  • Gradio视频组件使用详解
    • 简介
    • 视频组件概述
    • 输入和输出行为
    • 初始化参数

Opencv不能采用h64格式进行编码

所以如果浏览器不能显示输出视频,显示nan,可以检查下是否使用了opencv处理了视频,以及编码格式

错误显示:
在这里插入图片描述

修正后:
在这里插入图片描述

我的处理视频的函数就是踩了这个坑,好久没意识到

解决方案

moviepy介绍

moviepywrite_videofile方法中,codec参数用于指定视频编码格式。对于视频编码,moviepy支持多种不同的编解码器,其中一些常用的编解码器包括:

  • libx264:这是一个流行的H.264编码器,通常提供很好的压缩率和质量平衡。
  • libx265:这是H.265编码器,它提供了比H.264更高的压缩率,但编码时间可能会更长。
  • mpeg4:这是一个较老的编码器,它的压缩率不如H.264,但可能在某些设备上更兼容。
  • vp8:这是一个较早的VP8编码器,通常用于WebM视频。
  • vp9:这是VP8的更新版本,提供了更好的压缩率和质量。
    除了视频编码,write_videofile方法还有其他一些重要的参数,例如:
  • fps:指定输出视频的帧率。
  • preset:指定编码预设,这会影响编码速度和质量。例如,ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowplacebo
  • bitrate:指定输出视频的比特率。
  • audio_codec:指定音频编码格式。
  • temp_audiofile:指定临时音频文件的路径,这在处理带有不同音频编码的视频时可能有用。
  • verbose:如果设置为True,则编码过程将显示详细信息。
    请注意,并不是所有编解码器都适用于所有情况,选择哪个编解码器取决于您的具体需求,例如视频质量、文件大小和兼容性。在实际应用中,您可能需要尝试不同的编解码器和参数,以找到最适合您需求的设置。

浏览器接受的视频编码格式:

浏览器通常支持多种视频编码格式,以便能够播放不同来源和格式的视频文件。以下是一些主流浏览器支持的视频编码格式:

  1. H.264/AVC:这是一种广泛使用的视频编码格式,得到了大多数现代浏览器的支持,包括Chrome、Firefox、Safari和Edge。
  2. HEVC/H.265:这是一种较新的编码格式,提供了比H.264更好的压缩效率,但可能需要额外的授权费用。目前,Safari浏览器和某些版本的Chrome支持HEVC。
  3. VP8:这是Google开发的一种开源视频编码格式,曾用于WebRTC和YouTube。虽然它的使用有所减少,但仍然是WebM视频容器的一部分。
  4. VP9:是VP8的后续版本,提供了更好的压缩效率。它得到了Chrome和Firefox的支持。
  5. AV1:是一种新的、开源的视频编码格式,由AOMedia组织开发,目标是提供比HEVC更好的压缩效率,并且免版税。目前,Chrome、Firefox和Edge都支持AV1。
  6. Theora:这是一个开源的视频编码格式,但它的使用已经减少,因为VP8和AV1提供了更好的压缩率和性能。
    为了确保浏览器能够播放特定的视频格式,视频文件通常会被封装在容器格式中,如MP4、WebM或OGG。不同的浏览器可能对不同的容器格式有不同的支持程度。
    了解具体浏览器对视频编码格式的支持情况,可以参考浏览器的官方文档或通过在线资源进行查询。

采用h264编码合成视频:

使用moviepy进行合成

from moviepy.editor import ImageSequenceClip
import os

# 指定图像文件夹路径
image_folder = '/path/to/image/folder'
# 获取文件夹中的所有图像文件
image_files = [f for f in os.listdir(image_folder) if f.endswith(('.png', '.jpg', '.jpeg'))]
# 按文件名排序图像,确保它们按顺序排列
image_files.sort()
# 创建一个ImageSequenceClip对象,它将自动将图像序列转换为视频
clip = ImageSequenceClip(image_files, fps=30)
# 指定输出视频的文件名
output_video = '/path/to/output/video.mp4'
# 保存视频
clip.write_videofile(output_video, codec='libx264')

gradio部署视频输入输出示例

import gradio as gr
import cv2

from vis import demo_gradio 
# 定义模型函数,接受MP4视频作为输入,将视频存储到本地/demo/video文件夹下,以MP4格式保存,
# 然后读取指定位置的视频并返回
def mymodel(input_video):
    print(type(input_video),input_video)
    # 可以发现这里的input_video是gradio将用户上传的视频进行读取,然后放到了一个临时文件夹中,这里的input_video是一个路径
    # 处理视频的函数,输出为路径
    output_path=demo_gradio(input_video)    
    # 读取保存的视频文件
    # 返回应当也是一个路径,output_path
    # 但要注意,由于需要在网页进行展示,所以视频编码格式应当能够被网页接受
    return output_path
    # 返回读取的视频


# 定义输入和输出界面,使用Video输入和Video输出
input_interface = gr.Video(sources=["upload", "webcam"],label="上传MP4视频或调取摄像头")
# output_interface = [gr.Image(label="输出图像",show_download_button=True) ,gr.Video(label="输出视频",show_download_button=True)]
output_interface = [gr.Video(label="输出视频",show_download_button=True),gr.Video(label="输出视频",show_download_button=True,format='mp4')]


# 设置标题和解释说明
title = "视频姿态检测模型"
description = "该模型接受MP4视频作为输入,并输出相同的视频。您可以上传自己的视频,或者使用摄像头录制。"

# 启动Gradio界面
demo=gr.Interface(mymodel, inputs=input_interface, outputs=output_interface , title=title, description=description)
demo.launch()

Gradio视频组件使用详解

简介

Gradio是一个开源的Python库,用于创建机器学习模型和数据的交互式界面。其视频组件gradio.Video允许用户上传、记录或显示视频。本文将详细介绍Gradio视频组件的使用方法和特性。

视频组件概述

视频组件gradio.Video可以作为输入或输出组件使用。作为输入时,它允许用户上传视频文件或从网络摄像头录制视频。作为输出时,它可以显示视频文件。为了在浏览器中播放,视频必须具有兼容的容器和编解码器组合,例如.mp4与h264编解码器,.ogg与theora编解码器,或.webm与vp9编解码器。如果输出视频在浏览器中无法播放,组件将尝试将其转换为可播放的mp4格式。

输入和输出行为

  • 输入组件:上传的视频作为str文件路径或URL传递,其扩展名可以通过format参数修改。
  • 输出组件:期望一个strpathlib.Path视频文件路径,用于显示视频,或者一个元组,其中第一个元素是视频文件路径,第二个元素是可选的字幕文件路径。

初始化参数

视频组件的初始化参数包括:

  • value:视频组件的默认值路径或URL。
  • format:组件返回的视频格式,如’avi’或’mp4’。
  • sources:允许的视频来源,如’upload’(上传)或’webcam’(网络摄像头)。
  • heightwidth:视频显示的高度和宽度。
  • label:组件的标签。
  • every:如果value是可调用的,每秒运行函数的次数。
  • show_label:是否显示标签。
  • container:是否将组件放置在容器中。
  • scale:相对于相邻组件的尺寸。
  • min_width:组件的最小像素宽度。
  • interactive:是否允许用户上传视频。
  • visible:组件是否可见。
  • elem_idelem_classes:组件在HTML DOM中的ID和类,用于定位CSS样式。
  • render:组件是否在Blocks上下文中渲染。
  • mirror_webcam:网络摄像头是否镜像。
  • include_audio:视频是否包含音频轨道。
  • autoplay:作为输出时,视频是否自动播放。
  • show_share_buttonshow_download_button:是否显示分享和下载按钮。
  • min_lengthmax_length:用户上传视频的最小和最大长度。

通过Gradio视频组件,可以轻松创建包含视频上传和播放功能的交互式界面,适用于多种机器学习和数据处理场景。了解和利用这些参数,可以更好地自定义视频组件,以满足特定的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1517377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序学习3 goods-card

pages/home/home home.wxml <goods-listwr-class"goods-list-container"goodsList"{{goodsList}}"bind:click"goodListClickHandle"bind:addcart"goodListAddCartHandle"/> <goods-list>是一个自定义组件&#xff0c;它具…

【MIT 6.S081】2020, 实验记录(8),Lab: locks

目录 Task 1&#xff1a;Memory allocator (moderate)</font>Task 2&#xff1a;Buffer cache (hard)</font> Task 1&#xff1a;Memory allocator (moderate) 这个任务就是练习将一把大锁拆分为多个小锁&#xff0c;同时可以更加深入地理解 memory allocator 运行…

PY32离线烧录器功能介绍,可批量烧录,支持PY32系列多款单片机

PY32离线烧录器可以对PY系列单片机进行批量烧录&#xff0c;现支持PY32F002A/002B/002/003/030/071/072/040/403/303芯片各封装和XL2409&#xff0c;XL32F001/003等芯片。PY32离线烧录器需要搭配上位机软件才能使用&#xff0c;上位机软件在我们官网&#xff08;www.xinlinggo.…

JVM基础篇

什么是JVM java虚拟机 JVM的功能 1.解释和运行 对字节码文件中的指令&#xff0c;实时的解释成机器码&#xff0c;让计算机执行 2.内存管理 自动为对象、方法等分配内存 自动的垃圾回收机制&#xff0c;回收不再使用的对象&#xff08;c不会自动回收&#xff0c;相当于降…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时&#xff0c;如果超出其高度&#xff0c;默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示&#xff0c;那么就需要禁止自动滚动。 我们可以在append之后&#xff0c;添加如下代码&#xff1a; //设置编辑框的光标位…

指针的函数传参的详细讲解(超详细)

如果对指针基础知识已经有可以直接跳到 函数的指针传参与解引用&#xff0c;哪里不明白可以评论&#xff0c;随时解答。 目录 所以就有了一句话&#xff1a;指针就是地址&#xff0c;地址就是指针 对于指针在C语言中&#xff0c;指针类型就是数据类型&#xff0c;是给编译器…

PHP极简网盘系统源码 轻量级文件管理与共享系统网站源码

PHP极简网盘系统源码 轻量级文件管理与共享系统网站源码 极简网盘是一个轻量级文件管理与共享系统&#xff0c;支持多用户&#xff0c;可充当网盘程序&#xff0c;程序无需数据库 安装步骤&#xff1a; 1.建议安装在apache环境下&#xff0c;并确保.htaccess可用 2.解压文件…

论文阅读——RingMo

RingMo: A Remote Sensing Foundation Model With Masked Image Modeling 与自然场景相比&#xff0c;RS图像存在以下困难。 1&#xff09;分辨率和方位范围大&#xff1a;受遥感传感器的影响&#xff0c;图像具有多种空间分辨率。此外&#xff0c;与自然图像的实例通常由于重…

【Python】Leetcode 240. 搜索二维矩阵 II - 削减矩阵+递归,击败88%

描述 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。 该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 思路 确定左右及上下限&#xff0c;削减矩阵&#xff0c;递归。 注意判断四个端…

15届蓝桥杯第一期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_字母数&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t2_大乘积&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t3_星期几&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;…

Spring基础——使用注解开发SpringMVC

目录 配置SpringMVC的初始化信息配置ServletWebApplicationContext配置RootWebApplicationContext配置ServletContext 创建Controller控制器配置Controller响应路径接收用户传递参数接收JSON数据接收简单类型对象封装参数 接收数组类型 Restful 文章源码仓库&#xff1a;Spring…

大模型笔记:吴恩达 ChatGPT Prompt Engineering for Developers(1) prompt的基本原则和策略

1 intro 基础大模型 VS 用指令tune 过的大模型 基础大模型 只会对prompt的文本进行续写 所以当你向模型发问的时候&#xff0c;它往往会像复读机一样续写几个问题这是因为在它见过的语料库文本&#xff08;通常大多来自互联网&#xff09;中&#xff0c;通常会连续列举出N个问…

Flask vs. Django:选择适合你的Web开发框架【第134篇—Flask vs. Django】

Flask vs. Django&#xff1a;选择适合你的Web开发框架 在选择一个适合你项目的Web开发框架时&#xff0c;常常会遇到 Flask 和 Django 这两个流行的选择。两者都有其优势和适用场景&#xff0c;本文将探讨它们的特点&#xff0c;并通过代码实例和解析来帮助你更好地做出选择。…

环形链表的起点——细节讲解

对于一个环形链表&#xff0c;我们要找到他的起点。可以通过如下推导。 我们设置两个快慢指针&#xff0c;相遇的点为X. 到起点的距离是T&#xff0c;圈长是C&#xff0c;第一次相交的点是X &#xff08;TX&#xff09;2TNCX 化出来TN*C-X 也就是说我们把一个节点放头部重新遍…

SQLiteC/C++接口详细介绍之sqlite3类(六)

快速前往文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;五&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;七&#xff09; 19. sqlite3_changes与sqlite3_changes64 是SQLite中用…

手机安装Kali Linux

在数字化时代&#xff0c;信息安全和隐私保护显得尤为重要。Kali Linux&#xff0c;作为一款专业的渗透测试和安全审计工具&#xff0c;因其强大的功能和丰富的资源库而受到广大安全研究者和爱好者的青睐。然而&#xff0c;我们通常只能在传统的电脑设备上安装和使用Kali Linux…

外卖小程序-购物车模块表结构设计和后端代码

表结构设计 添加购物车代码 Service public class ShoppingCartServiceImpl implements ShoppingCartService {Autowiredprivate ShoppingCartMapper shoppingCartMapper;Autowiredprivate DishMapper dishMapper;Autowiredprivate SetmealMapper setmealMapper;/*** 添加购物…

在Linux/Ubuntu/Debian中使用7z压缩和解压文件

要在 Ubuntu 上使用 7-Zip 创建 7z 存档文件&#xff0c;你可以使用“7z”命令行工具。 操作方法如下&#xff1a; 安装 p7zip&#xff1a; 如果你尚未在 Ubuntu 系统上安装 p7zip&#xff08;7-Zip 的命令行版本&#xff09;&#xff0c;你可以使用以下命令安装它&#xff1a;…

某夕夕商品数据抓取逆向之webpack扣取

逆向网址 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbQ 逆向链接 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL2JveXNoaXJ0 逆向接口 aHR0cHM6Ly9hcGl2Mi5waW5kdW9kdW8uY29tL2FwaS9naW5kZXgvdGYvcXVlcnlfdGZfZ29vZHNfaW5mbw 逆向过程 请求方式&#xff1a;GET 参数构成 【anti_content】…

PHP中的反序列化漏洞

PHP中的反序列化漏洞 目录 PHP 中的序列化与反序列化 概述 序列化 基本类型的序列化 对象的序列化 反序列化 示例序列化与反序列化 反序列化漏洞 - PHP 中的魔术方法 - Typecho_v1.0 中的反序列化漏洞 POP链的构造思路 pop链案例 反序列化逃逸 字符串逃逸&#xff…