|
|
@@ -0,0 +1,79 @@
|
|
|
+--- 模块功能:video_play_demo
|
|
|
+-- @module video_play
|
|
|
+-- @author Dozingfiretruck
|
|
|
+-- @release 2021.09.06
|
|
|
+
|
|
|
+-- LuaTools需要PROJECT和VERSION这两个信息
|
|
|
+PROJECT = "video_play_demo"
|
|
|
+VERSION = "1.0.1"
|
|
|
+
|
|
|
+log.info("main", PROJECT, VERSION)
|
|
|
+
|
|
|
+-- sys库是标配
|
|
|
+_G.sys = require("sys")
|
|
|
+
|
|
|
+--添加硬狗防止程序卡死
|
|
|
+if wdt then
|
|
|
+ wdt.init(15000)--初始化watchdog设置为15s
|
|
|
+ sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
|
|
|
+end
|
|
|
+
|
|
|
+sys.taskInit(function()
|
|
|
+ --初始化lcd
|
|
|
+ spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,48*1000*1000,spi.MSB,1,1)
|
|
|
+ log.info("lcd.init",
|
|
|
+ lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 3,w = 160,h = 128,xoffset = 1,yoffset = 2},spi_lcd))
|
|
|
+ --初始化sd
|
|
|
+ local spiId = 2
|
|
|
+ local result = spi.setup(
|
|
|
+ spiId,--串口id
|
|
|
+ 255, -- 不使用默认CS脚
|
|
|
+ 0,--CPHA
|
|
|
+ 0,--CPOL
|
|
|
+ 8,--数据宽度
|
|
|
+ 400*1000 -- 初始化时使用较低的频率
|
|
|
+ )
|
|
|
+ local TF_CS = pin.PB3
|
|
|
+ gpio.setup(TF_CS, 1)
|
|
|
+ --fatfs.debug(1) -- 若挂载失败,可以尝试打开调试信息,查找原因
|
|
|
+ fatfs.mount("SD", spiId, TF_CS, 24000000)
|
|
|
+ local data, err = fatfs.getfree("SD")
|
|
|
+ if data then
|
|
|
+ log.info("fatfs", "getfree", json.encode(data))
|
|
|
+ else
|
|
|
+ log.info("fatfs", "err", err)
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 使用ffmpeg.exe将视频转成字节流文件.rgb放入TF卡 教程见 https://wiki.luatos.com/appDevelopment/video_play/105/video_play.html
|
|
|
+ local video_w = 160
|
|
|
+ local video_h = 128
|
|
|
+ local rgb_file = "mwsy.rgb"
|
|
|
+
|
|
|
+ local buff_size = video_w*video_h*2
|
|
|
+ local file_size = fs.fsize("/sd/"..rgb_file)
|
|
|
+ print("/sd/"..rgb_file.." file_size",file_size)
|
|
|
+
|
|
|
+ local file = io.open("/sd/"..rgb_file, "rb")
|
|
|
+ if file then
|
|
|
+ local file_cnt = 0
|
|
|
+ local buff = zbuff.create(buff_size)
|
|
|
+ repeat
|
|
|
+ if file:fill(buff) then
|
|
|
+ file_cnt = file_cnt + buff_size
|
|
|
+ lcd.draw(0, 0, video_w-1, video_h-1, buff)
|
|
|
+ sys.wait(20)
|
|
|
+ end
|
|
|
+ until( file_size - file_cnt < buff_size )
|
|
|
+ local temp_data = file:fill(buff,0,file_size - file_cnt)
|
|
|
+ lcd.draw(0, 0, video_w-1, video_h-1, buff)
|
|
|
+ sys.wait(30)
|
|
|
+ file:close()
|
|
|
+ end
|
|
|
+
|
|
|
+ while 1 do
|
|
|
+ sys.wait(1000)
|
|
|
+ end
|
|
|
+end)
|
|
|
+
|
|
|
+-- 主循环, 必须加
|
|
|
+sys.run()
|