unity在linux环境下videoplayer 无法播放问题解决路径

1、问题

一个项目需要在linux下播放视频,并且视频在机器上,也就是要使用应用外的视频文件进行播放。

视频的格式当前提供的事avi格式,并且使用videoplayer 在windows下播放正常。

但是发出包之后再Ubuntu环境怎么都无法播放。

2、测试环境搭建

刚学unity没几天,为了帮忙解决这个问题,从来没用过videoplayer组件,这次需要搭建一个环境

2.1 创建一个Render texture

右键Assets文件夹或任意文件夹→CreateRender Texture纹理渲染

设置视频的分辨率,也就是视频的大小

2.2、创建image

直接创建一个raw image,并且将render texture 赋值给 Texture

增加videoplayer组件,并设置source为URL(因为要使用机器上的视频文件)

2.3、功能

为了方便控制,在界面上增加一个InputField 和 Text

Inputfield 用来输入路径

Text 显示路径

最终如下图

再写个控制脚本,挂载在Canvas

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;
using UnityEngine.UI;
using UnityEngine.UIElements;
using UnityEngine.Video;
using Button = UnityEngine.UI.Button;public class PlayerVideo : MonoBehaviour
{// Start is called before the first frame updatepublic Button PlayBtn;public VideoPlayer vp;public InputField inputField;public Text text;void Start(){PlayBtn.onClick.AddListener(() =>{Application.Quit();});inputField.onEndEdit.AddListener(editFinish);}public void editFinish(string call){var textText = inputField.text;Debug.Log("-------->"+ textText);text.text = textText;playVideo();}public void playVideo(){vp.url = inputField.text;vp.Play();}// Update is called once per framevoid Update(){}
}

3、解决问题

3.1 猜测路径错误

最初猜测是路径错误导致的,查看官方文档

视频源 - Unity 手册

支持3种 :

  • 应用内:这个不符合需求,没测试
  • 本地地址,绝对地址,这个官方的例子file:///home/u1/abc.avi,播放不了,又测试了其他的格式,比如斜杠问题,路径放在附近等等,甚至改了访问权限。都不行!!!,心态崩了
  •  线上地址,将视频放在了线上,依然不能播放,失败,http://localhost:9009/video1_F60.avi

3.2 格式问题

官方文档:视频文件兼容性 - Unity 手册

官方其实说的蛮清楚的,无奈啊,信息都在那,没有视频的知识不太懂。

折腾了一圈路径问题之后,又回到这个文档。

准备拿着给的视频文件转下编码试试

工具:安装ffmpeg,不记得什么时候装的了,只记得装过,想不到今天派上用场了。

转为VP8:

ffmpeg -i input.mp4 -c:v libvpx -b:v 1M -vf "scale=640:360" output.webm

这会将输入视频文件(input.mp4)重新编码为VP8编码的WebM格式(output.webm)。-c:v libvpx选项告诉FFmpeg使用VP8编码器。-b:v 1M指定视频的目标比特率为1 Mbps,设置视频分辨率为640x360。你可以根据需要调整这个值。

将这个视频放到Ubuntu下居然能播放了,问题大概就算解决了。

4、其他的一些命令

这个命令会显示视频文件中第一个视频流的编码器。

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1 <视频文件路径>

所谓的h264编解码,并不是直接将视频格式,通过h264编解码为视频原始数据流,这种说法是错误的,而是应该将视频格式转换为h264的数据流,然后对h264的数据流进行编解码,得到视频的原始数据流(也就是像素数据)

h264文件是压缩后的数据流文件

ffmpeg -i test.mp4 -c h264 test.h264

5、总结

1、知识背景很重要,没有知识背景,解决问题的办法放在那也不知道怎么解决

2、音视频的编码还是不太了解,需要学习下。

3、大胆猜测,小心求证

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

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

相关文章

LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等

文章目录 如题 如题 LDF是LIN报文格式文件&#xff0c;把这个直接拖到软件里面&#xff0c;可以发报文和接收报文 DBC是CAN报文格式文件&#xff0c;把这个直接拖到软件里面&#xff0c;可以发报文和接收报文 BIN文件烧录在BOOT里面&#xff08;stm32&#xff09;&#xff0c…

开源无需授权2024最新同城上门预约家政按摩小程序+公众号H5+APP源码系统下载

2024最新同城上门预约家政按摩源码简介&#xff1a; 开源无需授权2024最新同城上门预约家政按摩小程序&#xff0b;公众号H5&#xff0b;APP源码系统下载&#xff0c;前端采用uni-app开发&#xff0c; 后端thinkphp框架开发。适配多端&#xff08;小程序&#xff0b;公众号H5&…

php反序列化(2)

一.pop链 在反序列化中&#xff0c;我们能控制的数据就是对象中的属性值&#xff08;成员变量&#xff09;&#xff0c;所以在php反序列化中有一种漏洞利用方法叫“面向属性编程”&#xff0c;即pop&#xff08;property oriented programming&#xff09;。 pop链就是利用魔…

Docker Entrypoint和CMD同时使用的注意事项

docker镜像同时配置了entrypoint和CMD&#xff0c;entrypoint指定的是某个命令行工具比如salt&#xff0c;CMD指定的是/bin/bash&#xff0c;那么用docker run启动容器时&#xff0c;会发生什么 当Docker镜像同时配置了ENTRYPOINT和CMD时&#xff0c;它们的交互行为如下&#…

Swift中的整型

在Swift中&#xff0c;整型数据指的是包括负数、零和正数在内的整数。整型数据在Swift中有多种数据类型可供选择&#xff0c;具体如下&#xff1a; Int&#xff1a;Int是最常用的整型数据类型&#xff0c;表示带符号的整数。在32位平台上&#xff0c;Int的取值范围是-2,147,48…

不借助第三方工具打包QT程序

准备工作&#xff1a; 项目/可执行文件名&#xff1a;QTAppName 打包项目存放的文件名&#xff1a;pack&#xff08;这个文件名无所谓&#xff09; 脚本名&#xff1a; copylib.sh&#xff08;类似ldd命令&#xff09;&#xff1a;用于将.so库文件的依赖项复制并放入自动生…

vscode远程免密登录ssh

vscode远程免密登录ssh 1. 安装vscode2. 安装ssh3. 本地vscode配置免密登录远端开发机1. 本地配置秘钥2. 远程开发机配置秘钥 4. vscode常用小工具1. vscode怎么设置ctrl加滚轮放大字体 1. 安装vscode 2. 安装ssh 设置符号打开config配置文件&#xff0c;点击符号ssh连接新的远…

4. Django 探究FBV视图

4. 探究FBV视图 视图(Views)是Django的MTV架构模式的V部分, 主要负责处理用户请求和生成相应的响应内容, 然后在页面或其他类型文档中显示. 也可以理解为视图是MVC架构里面的C部分(控制器), 主要处理功能和业务上的逻辑. 我们习惯使用视图函数处理HTTP请求, 即在视图里定义def…

Oracle使用regexp_like报错ORA-12733 正则表达式太长

注&#xff1a;此篇内容并没有解决正则表达式太长的问题。 在命令行窗口连接数据库&#xff1a; >sqlplus username/passwordhostname:port/SID或service_name 其中&#xff1a; username 是你的数据库用户名。 password 是你的数据库密码。 hostname 是数据库服务器的…

利用机器学习库做动态定价策略的例子

动态定价是一个复杂的问题&#xff0c;涉及到市场需求、库存、竞争对手行为、季节性因素等多个变量。在实际应用中&#xff0c;动态定价通常需要复杂的模型和大量的数据分析。我选择使用Python&#xff08;Golearn库&#xff09;进行机器学习模型的训练和部署&#xff0c;而将G…

简述VPS 与 Apache 搭建网站方式对比:新手科普指南

在互联网时代&#xff0c;拥有一个网站对于个人、企业以及组织来说已经成为了必备的一项资源。然而&#xff0c;对于新手来说&#xff0c;如何搭建一个网站可能是一个挑战。在这篇文章中&#xff0c;我将探讨两种常见的搭建网站的方式&#xff1a;使用虚拟专用服务器&#xff0…

A complete evaluation of the Chinese IP geolocation databases(2015年)

下载地址:A Complete Evaluation of the Chinese IP Geolocation Databases | IEEE Conference Publication | IEEE Xplore 被引用次数:12 Li H, He Y, ** R, et al. A complete evaluation of the Chinese IP geolocation databases[C]//2015 8th International Conference…

chatgpt Team 4.0共享合租账号的新方式

为了更好地满足工作需求&#xff0c;我订阅了GPT PLUS会员&#xff0c;但我发现&#xff0c;4.0每三小时问答40次经常吃灰&#xff0c;而且每月近200元的费用让我感到有点肉痛。 于是&#xff0c;我开始寻找有没有什么替代品。在逛某论坛的时候&#xff0c;发现了一个共享Team…

2024年MathorCup数学应用挑战赛A题思路分析

文章目录 题目简介题目背景和重要性题目要求和目标 题目分析和解题思路理解PCI规划的基本原则PCI参考算法 建立数学模型定义决策变量建立目标函数确定约束条件唯一性约束&#xff1a;确保每个小区的PCI在整个网络中是唯一的。 设计优化算法目标函数分析约束条件分析问题规模分析…

ClickHouse 与 MySQL 介绍与比较

ClickHouse 与 MySQL 介绍与比较 一、ClickHouse简介 ClickHouse是由Yandex开发的开源列式数据库管理系统(DBMS)。它是专门为在线分析处理(OLAP)任务设计的&#xff0c;可以使用SQL查询语言处理高速数据。ClickHouse的列式存储方式让它在处理大数据分析任务时表现出卓越的速度…

python抠图程序

import cv2 import numpy as np def color_threshold(image, lower, upper): hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv_image, lower, upper) result cv2.bitwise_and(image, image, maskmask) return result # 读取图片…

客户端传日期格式字段(String),服务端接口使用java.util.Date类型接收报错问题

客户端传日期格式字段&#xff08;string&#xff09;,服务端接口使用java.util.Date类型接收报错问题 问题演示第1种&#xff1a;客户端以URL拼接的方式传值第2种&#xff1a;客户端以body中的form-data方式提交第3种 客户端以Body中的json方式提交 问题解决&#xff08;全局解…

softmax回归:多分类问题的解码器

随着人工智能技术的不断发展&#xff0c;分类问题在机器学习领域中的地位日益凸显。在众多分类算法中&#xff0c;softmax回归以其独特的优势和广泛的应用场景&#xff0c;成为了处理多分类问题的有力工具。本文将深入探讨softmax回归的原理、应用及其优缺点&#xff0c;以期为…

【24届数字IC秋招总结】提前批面试经验1——小米、百度昆仑芯、长鑫存储

文章目录 前言一、小米-SOC验证工程师1.1 面试问题二、百度昆仑芯-芯片验证工程师2.1 一面面试问题2.2 二面面试问题三、长鑫存储-数字电路前言 提前批面试公司:小米、百度昆仑芯、长鑫存储 一、小米-SOC验证工程师 面试时间:7.23 周末 1.1 面试问题 1、 问研究生项目,自…

【Django】必须登陆才能访问功能实现

一、直接使用session传递登录状态(不推荐&#xff0c;但能用) 这是最简单、最直接的方法。 1.登录视图添加标识 添加登录状态标识 request.session[is_logged_in] False def user_login(request):# 这是一个登录状态标识request.session[is_logged_in] Falseif request.…