在我的程序中,我写的菜单直接到帧缓冲区的树莓派。这个程序可以用omxplayer播放视频,也可以用omxiv调用另一个程序来显示jpeg图片。如果omxplayer在omxiv之前运行,那么菜单在之后将不可见,并且在再次使用omxplayer播放视频之前,我无法再次写入帧缓冲区。重新启动程序没有帮助。在
这里展示了一个简单的例子。程序在绿色背景上绘制一个蓝色矩形,播放wideo,然后显示图像。我终于画了一个蓝色的矩形。下次运行程序时,矩形是不可见的。如果我在omxiv之后播放视频,一切正常。在
用户pi是否已失去写入帧缓冲区的权限?在
#!/usr/bin/env python
import numpy as np
from PIL import Image
import time, subprocess, os
fb = np.memmap('/dev/fb0', dtype='uint8',mode='w+', shape=(1024,1280,4))
fb[:] = [0,255,0,255]
x0, y0 = 50, 100
w, h = 300, 200
img = Image.new('RGBA', size=(w, h), color=(255,0,0,255))
n = np.array(img)
fb[y0:y0+h, x0:x0+w] = n
time.sleep(2)
os.system('omxplayer -b -r -o both video.mp4')
time.sleep(2)
subprocess.Popen('omxiv 0.jpg >/dev/null 2>&1', shell = True)
time.sleep(2)
subprocess.Popen('pkill omxiv >/dev/null 2>&1',shell = True)
time.sleep(2)
fb[y0:y0+h, x0:x0+w] = n
我自己解决了这个问题。 省略omxplayer的-b选项(空白)可以解决以下问题:
相关问题 更多 >
编程相关推荐