main.lua 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. --- 模块功能:video_play_demo
  2. -- @module video_play
  3. -- @author Dozingfiretruck
  4. -- @release 2021.09.06
  5. -- LuaTools需要PROJECT和VERSION这两个信息
  6. PROJECT = "video_play_demo"
  7. VERSION = "1.0.1"
  8. log.info("main", PROJECT, VERSION)
  9. -- sys库是标配
  10. _G.sys = require("sys")
  11. --添加硬狗防止程序卡死
  12. --wdt.init(15000)--初始化watchdog设置为15s
  13. --sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
  14. sys.taskInit(function()
  15. sdio.init(0)
  16. sdio.sd_mount(0,"/sd",0)
  17. spi_lcd = spi.deviceSetup(0,20,0,0,8,20*1000*1000,spi.MSB,1,1)
  18. log.info("lcd.init",
  19. lcd.init("st7735s",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
  20. --[[-- v0006及以后版本可用pin方式
  21. spi_lcd = spi.deviceSetup(0,pin.PB04,0,0,8,20*1000*1000,spi.MSB,1,1)
  22. log.info("lcd.init",
  23. lcd.init("st7735s",{port = "device",pin_dc = pin.PB01, pin_pwr = pin.PB00,pin_rst = pin.PB03,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
  24. ]]
  25. -- 使用ffmpeg.exe将视频转成字节流文件sxd.rgb放入TF卡
  26. -- 先缩放成目标大小
  27. -- ffmpeg -i sxd.mp4 -vf scale=160:80 sxd.avi
  28. -- 然后转rbg565ble 字节流
  29. -- ffmpeg -i sxd.avi -pix_fmt rgb565be -vcodec rawvideo sxd.rgb
  30. local rgb_file = "sxd.rgb"
  31. local file_size = fs.fsize("/sd/"..rgb_file)
  32. print("/sd/"..rgb_file.." file_size",file_size)
  33. local file = io.open("/sd/"..rgb_file, "rb")
  34. if file then
  35. local file_cnt = 0
  36. local buff = zbuff.create(25600)--分辨率160*80 160*80*2=25600
  37. repeat
  38. if file:fill(buff) then
  39. file_cnt = file_cnt + 25600
  40. lcd.draw(0, 0, 159, 79, buff)
  41. sys.wait(20)
  42. end
  43. until( file_size - file_cnt < 25600 )
  44. local temp_data = file:fill(buff,0,file_size - file_cnt)
  45. lcd.draw(0, 0, 159, 79, buff)
  46. sys.wait(30)
  47. file:close()
  48. end
  49. while true do
  50. sys.wait(1000)
  51. end
  52. end)
  53. -- 主循环, 必须加
  54. sys.run()