正在处理中播放多个视频

2024-04-02

我正在处理并希望自动一个接一个地播放多个视频。下面是我当前的代码,但是当第一个视频播放完毕时,下一个视频不会自动开始。希望你能帮忙。

import processing.video.*;
Movie myMovie1, myMovie2, myMovie3, myMovie4, myMovie5, myMovie6;
boolean playMovie1=true;
boolean playMovie2=false;
boolean playMovie3=false;
boolean playMovie4=false;
boolean playMovie5=false;
boolean playMovie6=false;

void setup(){
size(800,500);
myMovie1 = new Movie(this, "ch1.mp4");
myMovie2 = new Movie(this, "ch2.mp4");
myMovie3 = new Movie(this, "ch3.mp4");
myMovie4 = new Movie(this, "ch4.mp4");
myMovie5 = new Movie(this, "ch5.mp4");
myMovie6 = new Movie(this, "ch6.mp4");


}

void draw(){
background(0);
if(playMovie1==true){

myMovie1.play();
image(myMovie1,0,0);
if(myMovie1.time()>=myMovie1.duration()){
myMovie1.stop();
playMovie1=false;
playMovie2=true;
}
}

if(playMovie2==true){

myMovie2.play();
image(myMovie2,0,0);
if(myMovie2.time()>=myMovie2.duration()){
myMovie2.stop();
playMovie2=false;
playMovie3=true;
}
}

if(playMovie3==true){

myMovie3.play();
image(myMovie3,0,0);
if(myMovie3.time()>=myMovie3.duration()){
myMovie3.stop();
playMovie3=false;
playMovie4=true;
}
}

if(playMovie4==true){

myMovie4.play();
image(myMovie4,0,0);
if(myMovie4.time()>=myMovie4.duration()){
myMovie4.stop();
playMovie4=false;
playMovie5=true;
}
}

if(playMovie5==true){

myMovie5.play();
image(myMovie5,0,0);
if(myMovie5.time()>=myMovie5.duration()){
myMovie5.stop();
playMovie5=false;
playMovie6=true;
}
}


if(playMovie6==true){
myMovie6.play();
image(myMovie6,0,0);

if(myMovie6.time()>=myMovie6.duration()){
myMovie6.stop();
playMovie6=false;
}  
}
}

void movieEvent(Movie m){
m.read();
}

你说的是时间问题。 time() 函数似乎有点错误,而且它似乎永远不会达到 period() 值。目前,一个快速的解决方法是在控制台中打印 time() 和uration() ,并使用duration() 和last time() 值之间的差异来计算偏移量,从而使电影播放完成条件通过。

我想从代码开始。一开始也没关系,它可以更短,更容易管理。 目前您的代码中有很多重复(请参阅D.R.Y. https://en.wikipedia.org/wiki/Don%27t_repeat_yourself), 但这可以通过 for 循环和数组来避免。

for 循环

这些并不像听起来那么可怕。

循环可让您轻松重复某个操作,无论该操作是什么。 语法看起来有点复杂,但一旦你意识到它只有 3 个部分,就不再那么复杂了。 想象一下从位置 A 以一定的步数到达位置 B。 第一个位置 A 是初始化 for 循环的值:告诉计算机从哪里开始 countint。 然后传递位置 B,即要停止循环的值。 第三个也是最后一个要素是增量:您将从 A 移动到 B 需要多少步。

语法看起来有点像这样:

for (start ; stop; steps){
  //do something here
}

例如,让我们从 0 数到 9:

for(var start = 0; start < 10; start = start + 1){
  println(start);
}

将 for 循环计数器变量命名为 i 是常见的做法,但这只是一个约定。 只要保持一致,就可以随意命名它,无论它对您来说更有意义:

for(int i = 0 ; i < 10 ; i++){

  println(i);

}

好的,这就是 for 循环。还不错,而且它们会很有趣,尤其是当你开始时 绘制图案/网格/等。屏幕上。

arrays

数组是一种结构,允许您在同一名称下存储多个值的跟踪。 例如,如果使用简单的整数变量存储单个整数值, 使用整数数组,您可以将一堆同名的整数值分组。

声明数组的语法与通常用于声明变量的语法类似 (毕竟这只是一种不同类型的变量)。有一些区别: - 你需要使用[]在数组类型之后 - 你需要使用new键盘并指定数组/列表的大小

所以如果你像这样声明一个整数:

 int i = 0;

你可以像这样声明一个整数数组(假设是 10):

 int[] tenInts = new int[10];

[] 符号的作用是它不仅用来告诉 java 它正在处理一个数组, 但它允许您检索和设置数组中的元素。 这是使用索引来完成的,数组从 0 开始索引元素。 因此,要访问数组中的第一个元素,您将使用tenInts[0]这是因为我们现在有一个零数组。 假设您要将第三个元素设置为 1。这将是索引 2,因此您可以使用它来访问数组元素并设置其值:

println("3rd element: " + tenInts[2]);//will print 0
tenInts[2] = 1;
println("3rd element: " + tenInts[2]);//will print 1

现在您已经掌握了将其组合在一起的所有要素,而无需重复太多代码:

import processing.video.*;

int numMovies = 6;//total number of movies
Movie[] playlist = new Movie[numMovies];//a list of all the movie objects, currently not initialized
int currentMovieIndex = 0;//index of the movie currently playing

float movieEndDuration = 0.029719;//a 'magic number' helpful to find out when a movie finishes playing

void setup(){
  size(800,500);
  for(int i = 0 ; i < numMovies; i++){
    //initialize each movie object in the list
    playlist[i] = new Movie(this,"transit.mov");//new Movie(this, "ch"+(i+1)+".mp4");
  }
  //start playback
  playlist[currentMovieIndex].play();
}

void draw(){
  background(0);
  image(playlist[currentMovieIndex],0,0);
}

void movieEvent(Movie m){
  m.read();
  //handy for debugging and figuring out the 'magic number'
  println(m.time() + " / " + m.duration() + " / " + (m.time() + movieEndDuration));
  //hacky check movie end 
  if((m.time() + movieEndDuration) >= m.duration()){
      println("movie at index " + currentMovieIndex + " finished playback");
      //go to the next movie index
      currentMovieIndex = (currentMovieIndex+1) % numMovies;//increment by one buy use % to loop back to index 0 when the end of the movie array is reached
      //use this to tell the next movie in the list to play
      playlist[currentMovieIndex].play();
      println("movie at index " + currentMovieIndex + " started");
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正在处理中播放多个视频 的相关文章

  • 如何检查视频文件是否大于2MB?

    假设我从 iPhone 库中获取了一个视频文件 我想检查视频文件不应大于 2MB 我无法使用 videoMaximumDuration 方法 因为如果任何视频是高清质量的 即使是 1 分钟持续时间的视频也可能会很大 有什么意见吗 urlvi
  • 有没有简单的方法来提取附件 b 格式的 h264 原始流?

    当我使用命令行使用 ffmpeg 提取视频流时 ffmpeg i 一些文件 vcodec copy an f rawvideo h264 什么 out h264 对于 Adob e Media Encoder 生成的某些媒体文件 只有 m4
  • YouTube 视频 ID 的最大长度是多少?

    我正在开发一个显示 YouTube 视频的应用程序 我想将视频 id 存储在数据库中 但是因为会有很多视频 我想最小化所需的空间 所以有人知道 youtube 上视频 id 的最大长度吗 几乎可以肯定它会保持在 11 个字符 各个字符来自一
  • 在流 #1 中找不到编解码器 pcm_alaw 的标签,使用 ffmpeg 连接 2 个文件时容器当前不支持编解码器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试连接两个文件 第一个文件包含音频和视频 第二个文件仅包含视频 我用以下ffmpeg命令 ffmpeg command ffmpe
  • YouTubeAndroidPlayerAPI 无法播放某些视频

    更新 09 05 2016 17 10 问题似乎与视频的发布日期有关 在4月的最后一周 我在YouTube上发布了很多视频 在4月27日19 00之前发布的视频可以正常工作 而在4月27日21 15之前发布的视频可以正常使用 当天就讨论了该
  • Firefox:drawImage(视频)失败并显示 NS_ERROR_NOT_AVAILABLE:组件不可用

    尝试打电话drawImage with a video其来源是网络摄像头源似乎在 Firefox 中失败了NS ERROR NOT AVAILABLE Component is not available 我尝试等待视频标签触发的每个事件
  • 我想从互联网路径的 videoview 获取视频大小(以 MB 为单位)

    我试图在开始视频之前获取视频文件大小并将其显示在布局中 我已经尝试了很多东西 但它不起作用 video player view VideoView findViewById R id videoView2 media Controller
  • 使用圆点填充圆,使用圆边缘的偏置

    这就是我想要实现的目标 到目前为止 我对我拥有的代码感到满意 这是从 Wolfram 和另一个数学来源借来的 但我不知道如何整合一些偏差计算 或者只是一种分配随机但有组织的内容的方法 有人能指出我正确的方向吗 这是我的代码 它将使用 P5
  • 加载视频数据集(Keras)

    我正在尝试实现 LRCN C LSTM RNN 来对视频中的情绪进行分类 我的数据集结构分为两个文件夹 train set 和 valid set 当你打开其中任何一个时 你可以找到3个文件夹 积极 消极 和 惊喜 最后 这 3 个文件夹中
  • VideoView SeekTo 在不同设备上工作异常 - Android

    我在视频视图上使用此代码来寻求自定义位置 但它在三星设备上工作正常 但在索尼设备上 视频寻求开始位置 开始 我想让视频回到上次暂停的位置 创建视频视图 VideoView mVideoPlayer setVideoPath ViDpath
  • Facebook Messenger Bot:视频附件的大小?能有多大?

    至少在此处的文档中没有说明通过 Facebook Messenger 发送视频附件时所需的大小和格式 https developers facebook com docs messenger platform send api refere
  • 使用 UIActivityViewController 分享视频

    我正在尝试使用默认的苹果共享屏幕将视频分享到 Twitter 和 Facebook 等 我已经让它与图像一起使用 但我不知道如何更改它以与视频一起使用 提前致谢 这是我用来分享照片的代码 IBAction shareButtonPresse
  • 在列表视图/滚动视图中自动播放视频,类似于 facebook

    如果视图包含视频 我需要视频在列表视图 滚动视图中自动播放 这与 Facebook 非常相似 如果用户向下滚动并且可见区域包含视频 系统将播放视频 如果仍然滚动 则会自动停止该视频 它应该像一次播放一个视频一样工作 有人可以帮我解决这个问题
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • 处理中渲染极地带面体时出现问题

    我最近一直在研究 Zohedrons 和Rob Bell http zomadic com 做出了美丽的 我玩了免费的极地带面体 Sketchup 插件 http zomebuilder com 并考虑使用几何图形加工 http proce
  • 重新采样 H264 视频以降低帧速率,同时保持高图像质量

    以下是感兴趣的视频的 mplayer 输出 br carina tmp mplayer foo mov mplayer Symbol ff codec bmp tags has different size in shared object
  • 如何在 Jekyll 博客中包含视频标签/mp4 视频

    I am not寻找一种方法链接到 YouTube https stackoverflow com questions 10529859 how to include video in jekyll markdown blog 122738
  • VideoCamera 获取支持的分辨率

    我使用 DirectShow 库 DirectShowLib 2005 dll 和 C 来捕获摄像机图像 当我定义捕获对象的大小时 我有以下参数 const int VIDEOWIDTH 640 Depends on video devic

随机推荐

  • 如何在 ElasticSearch 中基于正则表达式过滤令牌

    对于 ElasticSearch 查询 我们希望以不同的方式处理单词 即仅由字母组成的标记 和非单词 为此 我们尝试定义两个分析器 返回单词或非单词 例如 我们有描述五金店产品的文档 name Torx drive T9 category
  • 字符串搜索算法

    对于两种字符串搜索算法 KMP和后缀树 在什么情况下优选哪种 举一些实际的例子 如果您必须回答很多查询 例如 大海捞针是否存在 则后缀树会更好 如果您只需在另一个字符串中搜索一个字符串 而不需要执行很多次 那么 KMP 会更好 后缀树是一种
  • SwiftUI - 将 SceneKit 场景添加到 MacOS 项目

    目标 使用 UIViewRepresentable 将 SceneKit 场景添加到 SwiftUI MacOS 项目 不是 Catalyst 我做了什么 当目标是 SwiftUI iOS 时 以下代码可以正常工作 但是当目标是 MacOS
  • Node教程一对多无加载远程服务器Stream Spinner动不停

    我对在项目中使用所需的 Kurrento 很陌生 但是当我克隆 git hub 上为 Kurento 提供的教程并遵循 one2Many 调用的说明时 首先 adapter js 的软件包损坏了 因为我成功解决了它们 但之后出现了一个问题
  • 在 turfjs 中创建多个多边形的联合的最快方法是什么?

    我有这样的东西 但对于大集合来说 速度非常慢 let unionize triangles gt if triangles length 0 return null let ret triangles 0 feature triangles
  • Func<> 获取参数信息

    如何获取传入参数的值Func lt gt C 中的 Lambda IEnumerable
  • 如何将 OData 键值添加到我的实体框架类?

    我正在使用 MVC 5 Microsoft OData 2 1 和 Entity Framework 6 我尝试使用我使用 EntitySetController 类编写的 OData 源 当我添加服务引用并使用 OData 元数据时 它可
  • Maven 货物部署到 war 文件无法作为 teamcity 的一部分部署

    相同的部署在 Windows 和 Linux 上可以正常工作 但使用 teamcity 及其内置 Maven 时出现错误 本地部署 报错 容器配置目录 BuildAgent work 68d4a71c8dc5cfd9 target carg
  • 哪些脚本会进入 Python 包的 bin 文件夹?

    我正在从 Learn Python the Hard Way 及其中提到的练习之一中学习 Python 包 在bin目录下放置一个可以运行的脚本 对我来说 这似乎有点模糊 我不太确定 bin 文件夹中会包含什么样的脚本 搭便车者的包装指南
  • 将按钮放在 div 或屏幕底部

    我想将按钮放置在 div 底部或屏幕底部 但处于非固定位置 我的代码结构如下所示 div 1 div 2 div 3 button 我想将按钮放在div 1的底部 其高度是使用jQuery设置的 高度是屏幕的高度 所以将按钮放在屏幕的底部也
  • JavaFX访问内部webkit文档

    我正在尝试访问javafx web com sun webkit dom来自我的未命名模块 javafx 项目 为此 我创建了一个类com sun webkit dom DomMapper 我在 IDE 中没有看到任何错误 但是当我使用mv
  • 如何使用 CDH4 和 Yarn 查看 Hadoop 作业历史记录和日志?

    我使用 Yarn 下载了 Hadoop 的 CDH4 tar 作业运行良好 但我不知道在哪里查看作业日志 在 MRv1 中 我只需访问 JobTracker Web 应用程序 它就有工作历史记录 也可以从这里访问各个作业的日志 或者转到lo
  • R:用升序填充 NA 值

    With R我想用升序 降序数字 整数 填充一列大部分为 NA 值的列 但相对于值为 0 的行 编号应按主题 第一列 分组 这听起来很混乱 所以请看这个例子 数据如下所示 Column 3 是当前数据 Column 4 是目标数据 Subj
  • 使用dispatch_async在Swift中并发分析数组

    我正在尝试使用 GCD 的后台线程同时分析照片 这是我写的代码 dispatch async dispatch get global queue Int QOS CLASS UTILITY value 0 for var i 0 i lt
  • C++ 程序在执行 std::string 分配时总是崩溃

    我一直在尝试调试崩溃的应用程序中的崩溃 即断言 检测到 glibc free 无效指针 0x000000000070f0c0 当我尝试对字符串进行简单分配时 请注意 我正在使用 gcc 4 2 4 的 Linux 系统上进行编译 优化级别设
  • 在 PowerShell 中将数组追加到数组数组

    我正在尝试使用磁盘上的 CSV 文件以编程方式在 PowerShell 中构建多维数组 我一直将数组导入到临时变量中 然后将数组附加到数组中 我得到的是包含总行数的单个数组 而不是数组的数组 我用较小的数组进行了计算 发现了以下内容 arr
  • SQL 查询“00904.00000 - “%s:无效标识符”

    嗨我有以下代码 SELECT entertainer id entertainer groupname FROM casestudy entertainer INNER JOIN casestudy availability ON case
  • 无法调用非函数类型“Any?!”的值:- Firebase、Swift3

    这是我的代码before迁移到 Swift 3 ref observeEventType ChildAdded withBlock snapshot in let currentData snapshot value objectForKe
  • 如何更改列表视图的边框颜色

    我使用 win32 api 创建了一个列表视图 InitCommonControls HWND hwndList1 CreateWindow WC LISTVIEW L WS VISIBLE WS CHILD LVS REPORT LVS
  • 正在处理中播放多个视频

    我正在处理并希望自动一个接一个地播放多个视频 下面是我当前的代码 但是当第一个视频播放完毕时 下一个视频不会自动开始 希望你能帮忙 import processing video Movie myMovie1 myMovie2 myMovi