|
點擊上方「嵌入式實驗基地」,選擇「置頂公眾號」第一時間查看嵌入式筆記!
spydkbzm5d564047054846.png (100.54 KB, 下載次數: 1)
下載附件
保存到相冊
spydkbzm5d564047054846.png
2024-10-26 05:24 上傳
之前發(fā)了一個視頻,今天就來告訴大家怎么來實現:
小熊派刷兒子騎摩的的抖音視頻,流暢度666666
我們這一代的年輕人基本上都很喜歡逛B站,大部分老人都認為我們這些年輕人上B站是為了看動漫、看游戲等等,誰跟你B站是用來看這些的,B站是用來學習的!
ay4wwpo4rhe64047054946.png (2.4 KB, 下載次數: 0)
下載附件
保存到相冊
ay4wwpo4rhe64047054946.png
2024-10-26 05:24 上傳
g0mrrwvm3f064047055046.png (631.31 KB, 下載次數: 0)
下載附件
保存到相冊
g0mrrwvm3f064047055046.png
2024-10-26 05:24 上傳
前一段時間就刷到一個視頻,某B站Up主利用小熊派開發(fā)板制作了一個Bad apple的視頻,如下:
https://www.bilibili.com/video/BV18t4y1X7jT?from=search&seid=9128578257339532185
并且Up主也公開了他的代碼和他制作的視頻文件。
34swnyzrl3d64047055147.png (379.16 KB, 下載次數: 0)
下載附件
保存到相冊
34swnyzrl3d64047055147.png
2024-10-26 05:24 上傳
原理很簡單,就是用一個視頻截圖軟件,將播放的視頻的圖片一張張截下來,利用工具將圖片轉換成bin文件,然后將bin文件拷貝到SD卡里,最后使用小熊派驅動讀取SD卡里對應的bin文件,然后將每一幀圖像讀出來顯示到LCD上即可,那么如何實現呢?大佬用小熊派顯示bad apple,我偏不,我就拿它來放別的視頻,舉一反三
es1qxx1qwnf64047055247.png (2.85 KB, 下載次數: 0)
下載附件
保存到相冊
es1qxx1qwnf64047055247.png
2024-10-26 05:24 上傳
,接下來我們直接上干貨,下面都是我自己閑時制作的作品:
1、利用KMplayer對視頻進行截圖下載地址:https://www.onlinedown.net/soft/38003.htm
(1)拖放視頻到KMPlayer
這個是我小孩騎摩的玩耍的視頻,直接拿來做效果了。
gpcmohld40d64047055347.png (829.42 KB, 下載次數: 0)
下載附件
保存到相冊
gpcmohld40d64047055347.png
2024-10-26 05:24 上傳
(3)鼠標右鍵點擊,選擇高級捕獲
bn5yno234kw64047055448.png (734.96 KB, 下載次數: 0)
下載附件
保存到相冊
bn5yno234kw64047055448.png
2024-10-26 05:24 上傳
(4)設置捕獲參數并捕獲幀
kgs1xgw2xgb64047055548.png (291.02 KB, 下載次數: 0)
下載附件
保存到相冊
kgs1xgw2xgb64047055548.png
2024-10-26 05:24 上傳
由于小熊派的屏幕的分辨率是240*240,一張RGB565的圖片需要占用115200字節(jié)的緩存,所以是無法在Keil上編譯通過的,為了能夠完成我的作品,所以我用了另外一個128*128的OLED屏,這樣一張RGB565的圖片僅需要32768字節(jié)的緩存,完全可以滿足我的設計需求,接下來設置參數完畢后選擇點擊開始,然后點擊播放視頻三角符號,開始捕獲幀。
(5)接下來視頻開始播放,會看到捕獲到的目錄下有很多圖片產生
jnspksl1g2o64047055649.png (710.78 KB, 下載次數: 0)
下載附件
保存到相冊
jnspksl1g2o64047055649.png
2024-10-26 05:24 上傳
2、利用Image2Lcd v3.2批量生成bin文件(1)圖片全部捕獲完成后,使用Image2Lcd將bmp批量轉換成bin文件
dyt0qanef4v64047055749.png (85.34 KB, 下載次數: 0)
下載附件
保存到相冊
dyt0qanef4v64047055749.png
2024-10-26 05:24 上傳
cuukx14mmwm64047055849.png (52.64 KB, 下載次數: 0)
下載附件
保存到相冊
cuukx14mmwm64047055849.png
2024-10-26 05:24 上傳
ae1s24krian64047055949.png (57.56 KB, 下載次數: 0)
下載附件
保存到相冊
ae1s24krian64047055949.png
2024-10-26 05:24 上傳
接下來在捕獲目錄下會自動生成一個batch目錄,目錄下就是生成的bin文件,每個bin文件對應的就是上一級目錄的每一張圖片。
3、利用Linux下的Cat命令合并所有bin文件將所有bin文件拷貝到Linux下能識別的區(qū)域,然后利用Linux下的Cat命令將所有的bin文件合并成一個文件,如下圖所示:
0keychyeeyh64047056050.png (566.88 KB, 下載次數: 1)
下載附件
保存到相冊
0keychyeeyh64047056050.png
2024-10-26 05:24 上傳
當然如果你有更好的合并文件的方法也可以,不一定要在Linux下使用Cat命令合并,這里我只是圖方便而已,合并完畢后將這個bin文件拷貝到SD卡的根目錄下。
4、編寫MCU程序之前已經寫過很多現成的demo了,所以這里就不重新再寫了,如果有興趣的話請到我的碼云clone這個項目,我們只關心執(zhí)行bin文件的接口怎么寫就可以了,bin文件執(zhí)行接口實現如下:
/*一張RGB565圖片占用的緩存大小*/
#define PIC_SIZE 32768
/*在LCD的X坐標*/
#define DISPLAY_START_X 0
/*在LCD的Y坐標*/
#define DISPLAY_START_Y 0
/*LCD寬度分辨率*/
#define OLED_WIDTH 128
/*LCD高度分辨率*/
#define OLED_HEIGHT 128
/*用于顯示的緩存區(qū)*/
uint8_t framebuffer[PIC_SIZE] = {1};
int sd_show_picture_bin(const char *path)
{
UINT br;
FIL fil ;
int offset = 0 ;
int file_size ;
FRESULT res ;
/*1.打開傳進來的Fatfs文件路徑: path*/
res = f_open(&fil, path, FA_READ);
if(FR_OK != res)
return -1;
/*2.計算這個文件的大小*/
file_size = f_size(&fil);
/*3.初始化偏移變量為0*/
offset = 0 ;
/*4.計算bin文件里一共包含多少張圖片,然后不斷的給LCD進行顯示*/
for(int i = 0 ; i if(FR_OK != res)
return -2;
/*6.將整個數組賦值給顯示接口,顯示圖片*/
ST7735_DrawImage(DISPLAY_START_X, DISPLAY_START_Y, OLED_WIDTH, OLED_HEIGHT, (uint16_t *)framebuffer);
/*7.將偏移往后加PIC_SIZE,就到了下一張圖片*/
offset += PIC_SIZE;
res = f_lseek(&fil, offset);
if(FR_OK != res)
return -3;
}
/*8.關閉文件描述符*/
res = f_close(&fil);
if(FR_OK != res)
return -4;
return 0 ;
}
這里要重點說一下,如果你是用別的分辨率的LCD,或者僅僅只需要在屏的某個位置顯示視頻,那么需要更改對應的宏定義,配置成你自己需要的參數即可,然后還需要更改LCD的顯示接口,將如上所示的ST7735_DrawImage函數替換成你自己顯示器上的函數,不出意外,這個函數是通用的,在任意的彩屏OLED上都可以使用。然后,在默認SD卡掛載且LCD驅動正常的情況下,在while(1)循環(huán)里調用:
while (1)
{
sd_show_picture_bin("0:/boy.bin");
}
這樣就可以實現視頻的循環(huán)播放了!就是這么簡單,小伙伴們趕緊制作起來了!來看下效果:
5、項目開源地址本節(jié)代碼已同步到碼云的代碼倉庫中,獲取方法如下:
sw4sotpwyw364047056150.png (74.51 KB, 下載次數: 0)
下載附件
保存到相冊
sw4sotpwyw364047056150.png
2024-10-26 05:24 上傳
碼云倉庫:
https://gitee.com/morixinguan/personal-open-source-project/tree/master/8.video_demo
獲取項目方法:
git clone https://gitee.com/morixinguan/personal-open-source-project.git
我還將之前做的一些項目以及練習例程在近期內全部上傳完畢,與大家一起分享交流,如果有任何問題或者對該項目感興趣,歡迎加我微信:morixinguan一起交流學習。
1hu4lrpvxhx64047056250.png (291.17 KB, 下載次數: 0)
下載附件
保存到相冊
1hu4lrpvxhx64047056250.png
2024-10-26 05:24 上傳
如果要在小熊派自己的LCD上顯示,則將下載后的SD卡資源拷貝到SD卡的根目錄下,然后將第一個例程編譯并燒寫到開發(fā)板上即可,如果需要在ST7735上全屏顯示,則需自己去采購一個ST7735的屏。
本次的介紹就到這里啦,后面有更精彩的內容,歡迎大家持續(xù)關注嵌入式實驗基地!
??如果你覺得對自己有幫助的話,給個贊,點個關注,點個在看,感謝前進的道路上有你的陪伴!
1qcuxmg5pcs64047056351.png (336.59 KB, 下載次數: 0)
下載附件
保存到相冊
1qcuxmg5pcs64047056351.png
2024-10-26 05:24 上傳
推薦閱讀
?開源電路のSTM32最小系統(tǒng)設計
?一種你值得擁有的簡單易實現的開關電路
?無線通訊之紅外通訊
?DIY一個離線語音控制器
?HAL庫us延時的3種實現方式?邏輯分析儀的簡單使用介紹(附帶iic,uart,spi數據波形分析)
?ART-PI重力感應無線智能小車第一彈----ART-PI擴展板設計?ART-PI重力感應無線智能小車第二彈----Onenet+wifi+L298N電機驅動?ART-PI重力感應無線智能小車第三彈----RT-Studio+MPU6050+MQTT發(fā)布訂閱?STM32 DAC音頻輸出
?pcb設計基礎?OLED+ESP8266網絡小時鐘 |
|