Kivy 视频播放器无法在 Raspberry 3B+ 上运行

2024-05-16

我刚刚在我的电脑上安装了 Rasbian Stretch 和 KivyRPI3+。我的应用程序工作正常,只是视频未播放。 Rasbian、kivy 和 gstreamer 都是最新的。我的应用程序和视频正在处理KivyPie 0.9b没有任何问题。

Does kivy有手动安装 Raspbian 时播放视频的配置吗?

输出日志:

[INFO ] [MTD ] 旋转设置为 0
[警告] [图像] 无法加载图像
[错误] [图像] 加载纹理时出错./data/images/welcome.mp4
[错误] [VideoGstplayer] GStreamer 遇到一般支持库错误。
[错误] [VideoGstplayer] GStreamer 遇到一般支持库错误。
[错误] [VideoGstplayer] 内部数据流错误。


我尝试了很长时间,因此可以放心地说,无法在树莓派上使用标准的 kivy 视频播放器。

另一种方法是使用 OMXPlayer。我为 OMXPlayer 使用了以下包装器https://github.com/willprice/python-omxplayer-wrapper https://github.com/willprice/python-omxplayer-wrapper也许首先尝试让 Raspberry Pi 上的 OMXPlayer 正常工作。

这是我在树莓派上使用 kivy gui 时编写的用于观看视频的旧脚本

我希望它能有所帮助,并且您可以将其视为寻找自己的解决方案的灵感

主要逻辑是把OMXPlayer放到后台,让kivy透明。参见清除背景

import subprocess
import os


from time import sleep

# https://github.com/willprice/python-omxplayer-wrapper
from omxplayer.player import OMXPlayer

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
from kivy.properties import ObjectProperty, BooleanProperty

from kivy.core.window import Window

from kivy.clock import Clock



class VideoPlayerScreen(Screen):
    slider = ObjectProperty()
    minimized = BooleanProperty(False)

    @staticmethod
    def clearbckgrnd():
        Window.clearcolor = (0,0,0,0)

    @staticmethod
    def addbckgrnd():
        Window.clearcolor = (0,0,0,1)

    def play(self):
        self.player = OMXPlayer('/home/pi/voice-recognizer-raspi/GUI/test.mp4')
        self.player.set_video_pos(0,0,800,480)
        #self.player.hide_video()
        #self.player.show_video()
        self.set_slider()
        Clock.schedule_once(self.quit, 20)
        Clock.schedule_interval(self.set_slider, 3)


    def playpause(self):
        self.player.play_pause()

    def quit(self, gg, **kwargs):
        self.player.quit()
        App.get_running_app().stop()


    def set_slider(self, *args):
        pos = self.player.position() # in seconds as int
        duration =  self.player.duration() # in seconds as float
        #return pos/duration
        self.slider.value_normalized = pos/duration
        #return 0.5

    def set_videopos(self, *args):
        pos = self.player.position() # in seconds as int
        duration =  self.player.duration() # in seconds as float
        if abs (pos/duration - self.slider.value_normalized) > 0.05:
            self.player.set_position(self.slider.value_normalized*duration)


    def change_size(self):
        #width 800
        #height 480
        if not self.minimized:
            self.player.set_video_pos(2,2,798,418)




class VideoApp(App):
    def build(self):
        return Builder.load_string('''
ScreenManager:
    Screen:
        Button:
            on_press: root.current = "video"
            on_press: self.enabled= False
    VideoPlayerScreen:

<VideoPlayerScreen>:
    slider: slider
    name: "video"
    on_enter: self.clearbckgrnd()
    on_enter: self.play()
    on_pre_leave: self.addbckgrnd()
    BoxLayout:
        orientation: 'vertical'
        Button:
            size_hint_y: 420
            #text: "play"
            on_press: print('button to minimize pressed')
            on_press: root.change_size()
            background_color: (0,0,0,1)
            Image:
                source: './Infinity.gif'
                height: self.parent.height / 1.5 
                y: self.parent.y + self.parent.height /2 - self.height / 2
                x: self.parent.x + self.parent.width / 2 - self.width / 2
                allow_stretch: False
        BoxLayout:
            orientation: 'vertical'
            size_hint_y: 60
            Slider:
                id: slider
                on_value: root.set_videopos(self.value_normalized)
                #value_normalized: root.set_slider
            BoxLayout:
                Button:
                    text: 'Play/Pause'
                    on_press: root.playpause()

''')

if __name__ == "__main__":
    video = VideoApp()
    try:
        video.run()
    except KeyboardInterrupt:
        video.stop()
        os.system('killall dbus-daemon')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kivy 视频播放器无法在 Raspberry 3B+ 上运行 的相关文章

  • 如何使用 jQuery 将 html5 视频播放器静音

    我找到了如何使用 jquery 暂停和播放视频 video get 0 play video get 0 pause 但我找不到静音按钮 如果没有 jquery 解决方案 我只需一个 onclick js 解决方案即可 我需要尽快 还有有办
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require
  • 如何获取优酷access_token

    我在哪里可以找到access token refresh token在我的优酷账号里 我找到了如何使用外部脚本通过 API 将视频上传到 youku com 但我需要access token refresh token使用它 您需要对优酷应
  • 如何从 Linux 命令行获取视频文件的分辨率(宽度和高度)?

    我一直在挖掘 mplayer mencoder 和 ffmpeg 文档 但我似乎无法想出anything 我对输出格式不是特别挑剔 因为我可以使用正则表达式将其拉出来 我只是似乎无法首先获取数据 Use ffprobe https ffmp
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 如何从任何网站下载视频

    我只是想知道如何从任何网站下载视频的总体思路 我尝试的事情 我检查页面 在视频属性标记中看到 blob URL 将 blob URL 复制粘贴到浏览器中 但无法打开 I also look around the Developer tool
  • 如何在控制台中播放和暂停 Youtube 视频?

    转到一个 url 例如 https www youtube com embed zvCBSSwgtg4 https www youtube com embed zvCBSSwgtg4 并打开 chrome 控制台 我想知道什么 javasc
  • 使用 Kivy 应用程序进行 Tesseract OCR

    是否可以将 Tesseract OCR 或 Tess Two 与 Kivy 应用程序集成 我正在寻找使用 Kivy 框架创建一个用于基于 OCR 的文本识别的 Android 应用程序 我在我的 PC 上使用 Tesseract API 一
  • 在 Android 和 iOS 上播放的视频/音频编解码器设置是什么

    哪些编解码器设置将生成可在 Android videoView 和 iOS UIWebView 上播放的有效视频 安卓 http developer android com guide appendix media formats html
  • AVExportSession 在后台运行

    我正在开发一款需要合并多个视频的应用程序 我在用AVExportSession导出合并的视频 我还显示导出视频的进度条 大多数时候它都运行正确 当我们锁定屏幕或将应用程序置于后台模式时 就会出现此问题 这次 如果导出正在进行中 则将应用程序
  • 在 Windows 上以 QML 播放 RTSP 视频

    我正在尝试将 QML 中的 RTSP 流播放到视频标签中 如下所示 Repeater model 8 Video Layout fillWidth true Layout fillHeight true fillMode VideoOutp
  • 在 Windows Phone 8 中以编程方式下载媒体文件

    我们的应用程序是基于视频 音频的应用程序 我们已将所有媒体上传到 Windows Azure 上 但需要方便用户点播下载音视频文件 以便在本地播放 所以我需要以编程方式下载音频 视频文件并将其保存在IsolatedStorage中 我们有每
  • 有哪些技术可用于程序化视频编辑?

    Problem 用户应该能够从其系统上运行的应用程序 胖客户端 上传高分辨率视频剪辑 在这个应用程序中 我需要一个能够将视频转换为低分辨率版本的框架或库 另一方面 我需要能够立即从图像构建视频的东西 并以看起来像视频的方式对它们进行动画处理
  • GLade Python 中带有 CSS 的复选框

    每个人 我都试图在按下复选框时更改复选框的颜色 因为我正在做一项需要使用它们的工作 我使用的它们没有 绘图指示器 属性 因此我需要它们在按下时具有不同的颜色 因为它看起来不太好并且不太吸引人 有什么办法可以做到这一点吗 我的glade版本是
  • ffmpeg计算视频比特率

    我想知道如何计算该视频的比特率 http jell yfish us media jellyfish 30 mbps hd hevc mkv http jell yfish us media jellyfish 30 mbps hd hev
  • 运行时高压缩的 AS3 视频编码(H.264?)

    我需要在运行时将 AS3 中的视频图像数据 比如说显示对象 压缩为高压缩的字节数组 帧速率只需在 5 左右 但 1024x768 视频需要达到 使用 JPG 或 PNG 编码器可提供更高的 KB s 有没有开源方法可以在运行时对 as3 中
  • 当我的应用程序最小化时,在 Android 中使用 Youtube API 播放音乐视频中的音频

    我正在开发一个使用 Youtube API 的应用程序 因为我主要集中于MUSIC VIDEOS 来自 Youtube 当我离开应用程序时 我需要在后台播放视频的音频 但每次我导航到另一个应用程序时 视频都会暂停 我该怎么做才能解决这个问题

随机推荐