这篇文章上次修改于 2189 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

760.jpg

在树莓派上面实现视频播放是方便的,不用去读取内存卡什么的操作,Python已经帮你弄好了,毕竟是在Linux上面嘛。Adafruit_Python_SSD1306这个库里面有image.py示例写明如何在屏幕加载图片

使用Pyav加载视频,提取视频帧打印到屏幕中。我制作的视频每秒24帧,1/24=0.041s,即每帧占用0.041秒,最后测试下来在0.04秒左右最合适(视频播完声音也差不多结束)

for frame in clip.decode(video=0):
    starttime = time.time() #每帧开始时间
    print('{} ------'.format(frame.index))

    imgs = frame.to_image() #提取视频帧
    # img = imgs.resize((disp.width, disp.height), Image.ANTIALIAS).convert('1')  # 将图片分辨率调整为屏幕大小,色彩1bit
    img = imgs.convert('1')  #如果视频分辨率匹配屏幕使用此项,色彩1bit
    disp.image(img)
    disp.display()

    endtime = time.time() #屏幕加载所用时间
    times = endtime - starttime
    timec = round(times,3)
    print(timec),

    if(timec < 0.040): #避免播放过快
        print(0.040-timec)
        time.sleep(0.040-timec)

    endtimes = time.time() #该帧所用时间
    print(endtimes - starttime)

屏幕硬件接口是可以修改的,有hardware和software之分,software接口可以自定义,代价是要更慢一些,具体可以看一下程序开头的注释

查看硬件接口图可以用这个命令

gpio readall

后期添加了requirements.txt文件,方便安装对应的依赖

pip install -r requirements.txt

项目仓库:
https://github.com/Jackadminx/Badapple-nokia5110_Raspi
https://github.com/Jackadminx/SSD1306_RaspberryPi