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

问题描述 投票:0回答:2

首先:我是 Python 和 bash 的新手——很多年前我做过一些 bashscripting,我只涉足过 Python。而且我觉得我有点超出我的深度。

我有什么

  • 91 mp4 视频文件(稍后会详细介绍)
  • A Raspberry Pi 3 B,运行 Raspbian Stretch(据我所知)
  • 西部数据My PassportUSB3外置硬盘-

我想要的

我正在尝试为我的祖母设置一些东西 - 她插入 Pi,它启动,然后开始以随机顺序循环播放外部驱动器上文件夹中的视频。我希望它尽可能简单,因为她已经 80 多岁了,不是很懂技术,而且住在离我 9,211 公里的地方。因此,任何更改都必须由那边技术含量更高的家庭成员进行,他们根本不熟悉 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 毫无问题地播放这些视频,那将是完美的。

python bash raspbian vlc omxplayer
2个回答
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
停止播放。


0
投票

我在提出问题后不久就解决了这个问题,但现在只能访问我的代码。

如果你好奇,可以在这里找到它。

© www.soinside.com 2019 - 2024. All rights reserved.