python 使用ssd1306播放视频

# -*- coding: utf-8 -*-
from __future__ import division
import time,sys
import datetime
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image,ImageDraw,ImageFont
from picamera import PiCamera

line1=ImageFont.load_default()

# 引脚配置,按照上面的接线来配置
RST=17
DC=22
# 因为连的是CE0,这里的PORT和DEVICE也设置为0
SPI_PORT=0
SPI_DEVICE=0

FPS=24.007
# FPS=30
#根据自己的oled型号进行初始化,我的是128X64、SPI的oled,使用SSD1306_128_64初始化
disp=Adafruit_SSD1306.SSD1306_128_64(rst=RST,dc=DC,spi=SPI.SpiDev(SPI_PORT,SPI_DEVICE,max_speed_hz=8000000))

disp.begin()
disp.clear()
disp.display() #清屏

videos=[
    {'name':'书记舞','fps':24.007,'fn':2330,'path':'shuji/video_'},
    {'name':'bad apple','fps':30,'fn':6565,'path':'badapple/bad_apple_'}
]
strs="请输入编号进行选择:"
k=0
for video in videos:
    strs+="【"+str(k)+":"+video["name"]+"】"
    k+=1
try:
    selected=int(raw_input(strs+":"))
    video=videos[selected]
except:
    selected=0
    video=videos[selected]
fn=video["fn"]
path=video["path"]
fps=video["fps"]
interval=round(1/fps,6)
print("播放:"+video["name"]+" 帧率:"+str(fps)+"fps 帧数:"+str(fn))

try:
    for i in range(1,fn+1):
        begin = datetime.datetime.now()
        image1=Image.open(path+str(i)+".jpg").resize((128,64)).convert('1')
        disp.image(image1)
        disp.display()
        # if(i%10==0):
        print("\r播放进度:"+str(round((i/fn)*100,1))+"%"),
        sys.stdout.flush()
        end = datetime.datetime.now()
        ms = (end-begin).microseconds/1000000
        sleep=interval-ms
        time.sleep(sleep)
    print("\r播放完成"),
    disp.clear()
    disp.display()
except IOError as e:
    image1=Image.new('1',(128,64))
    draw1=ImageDraw.Draw(image1)
    draw1.text([0,0],e,font=line1,fill=1)
    disp.image(image1)
    disp.display()

disp.clear()
disp.display()

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注