如何在omxplayer中播放随机播放的视频列表

时间:2019-01-16 20:52:02

标签: python bash raspbian vlc omxplayer

开始:我是使用Python和bash的新手-多年前我做了一些bashscript编写,而我只是涉足Python。而且我认为我有点超出了我的深度。

我有什么

  • 91个mp4视频文件(更多有关它们的信息)
  • A Raspberry Pi 3 B,运行Raspbian Stretch(据我所知)
  • 西部数据我的护照 USB3外置硬盘-

我想要的

我正在尝试为祖母设置一些东西-她插入Pi,启动,然后开始以随机顺序循环播放外部驱动器上的文件夹中的视频。我希望它尽可能简单,因为她在80年代末期,不是技术性很强,并且距离我9211公里。结果,那里需要更多技术的家庭成员进行任何更改,而他们根本不熟悉Linux或Python。

我所拥有的

我已经设置了fstab:

UUID="XXXXXXX" /media/videoDrive auto nosuid,nodev,nofail 0 0

那很棒。

我试图通过VLC中的命令行播放视频,因为它支持播放循环播放的目录中的文件。它确实有效。视频播放器较大时,视频断断续续,而且根本无法全屏播放。我发现omxplayer可以很好地播放mp4-但是其中一些视频是webm,它拒绝播放。我将它们转换了,所以没关系。

我在网上找到了bashscript,如下所示:

#!/bin/bash

setterm -cursor off
setterm -clear

for file in $1/*
do
 omxplayer "$file" > /dev/null
done

setterm -cursor on

使用它,我编写了以下Python脚本:

#Autoplay Script
import os, random

#playlist path
path = "/media/videoDrive/vids"

videoList = os.listdir(path)
random.shuffle(videoList)
for video in videoList:
    target = os.path.join(path, video)
    os.system('omxplayer "{}" > /dev/null'.format(target))

我要做的就是查找要添加脚本调用的文件(我认为它是initrc),然后编写说明,打包,然后交给我的父母来接管。

...解决了播放问题后。

问题是什么

任何有Python知识的人都可能会发现Python脚本将一直运行,直到播放完每个视频为止(我只是意识到,它甚至不会循环-当当)。这意味着关闭Pi变得非常困难-您需要杀死Python进程,然后杀死所有omxplayer进程,并且只有在视频不是全屏显示时才能这样做,这在少数情况下会发生(我会我第一次注意到该问题时已将其修复,但随后我不得不拔掉Pi上的插头,这可能与外部设备不一致)。

我想要某种方式来运行播放器,直到出现某种输入都会随机播放视频直到出现某种输入,这会破坏循环和omxplayer。另外,如果任何人都可以弄清楚如何让VLC播放这些视频而没有问题,那将是完美的。

1 个答案:

答案 0 :(得分:0)

我使用R为女儿创建了一个“随机播放”脚本:

#!/usr/bin/Rscript
setwd("/home/pi/Desktop/MyDir")

fl <- list.files(".")
fl <- sample(x = fl, size = length(fl))
len <- length(fl)
i <- 1L
while(i <= len) {
  tmpCMD <- paste("omxplayer -b \"", fl[i], "\"", sep = "")
  cat(tmpCMD,"\n")
  tmpLog <- system(command = tmpCMD)
  if (tmpLog == 2)
    break
  i <- i + 1L
}

并且使用脚本,我还创建了一个带图标的.desktop文件,以便可以在应用程序启动栏中将其单击:

[Desktop Entry]
Name=PlayAll
GenericName=Play All
Exec=/home/pi/bin/PlayAll.R
Icon=/home/pi/Pictures/PlayAll.png
Terminal=true
Type=Application
Categories=AudioVideo;Video;Audio;Music;
Comment=Video Playlist

就像omxplayer一样,您可以按q播放下一个视频,按CTRL+c停止播放。