欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pygame播放視頻并實現(xiàn)音視頻同步的解決方案

 更新時間:2023年11月22日 09:03:19   作者:布蘭姥爺  
本篇提供了pygame播放視頻的兩個方案,第一個方案是網(wǎng)上找的現(xiàn)成的,第二個方案則是參考了opencv(主流方案)自己逆向思維做的,還未經(jīng)過實際驗證,感興趣的朋友跟隨小編一起看看吧

一、前言

在我接觸pygame時最新的pygame已經(jīng)不支持movie模塊,這就導(dǎo)致在pygame播放視頻變成一個問題,網(wǎng)上搜了下解決方案有兩個:

一是使用opencv播放視頻,再結(jié)合pygame.mixer來播放音頻

二是使用moviepy播放視頻,再結(jié)合pygame.mixer播放音頻

上述兩個方案其實都是先將mp4的視頻分離成“畫面幀”和“mp3音頻”,所謂的播放實際上是不停地在切換“畫面幀”,同時播放音頻,最終實現(xiàn)音視頻的同時播放。

但上述兩個方案都存在“音畫同步”的問題,因為無論是opencv還是moviepy都只負責(zé)將視頻切片成幀,播放則是pygame自己在執(zhí)行一個while循環(huán)來不停切換界面上展示出來的圖片幀,這也就導(dǎo)致while循環(huán)很快就將幀播放完畢,而音頻則還按著原有節(jié)奏緩慢播放。

解決是在while循環(huán)中加入合適的延時同時根據(jù)當(dāng)前視頻播放進度來設(shè)置音頻的播放起點以實現(xiàn)同步,但這個方案據(jù)我實踐在加入延時后就實現(xiàn)了較好的音畫同步效果不知道為啥還要去設(shè)置音頻的播放起點,另外在設(shè)置音頻播放起點時一直提示錯誤也不知道為何,所以我這里提供兩個方案:

方案一:在while循環(huán)中加入延時,短視頻測試效果還行

方案二:根據(jù)音頻的播放節(jié)奏來決定視頻幀的播放節(jié)奏,這樣音畫肯定是同步的

我選擇使用moviepy來做,因為moviepy從mp4中分離mp3比較簡單。

二、方案一

在項目的目錄下新建videos目錄,并放入一個測試使用的mp4文件test.mp4

上述代碼實際上是將整個游戲的幀率設(shè)置成與視頻一致,這樣可能存在一些隱患(直覺)。

三、方案二

代碼如下:

上述代碼的邏輯如下:

1、通過“pygame.mixer.music.get_pos()”獲取當(dāng)前音頻的播放進度

2、通過音頻播放進度除以視頻的總時長,得到音頻播放的百分比進度(音畫同步的話,音頻百分比進度就應(yīng)該跟視頻百分比進度一致)

3、百分比進度乘以視頻總幀數(shù)可得到當(dāng)前應(yīng)當(dāng)播放哪一個視頻幀

4、再判斷一下當(dāng)前實際播放的幀是否已超過了理論應(yīng)該播放的視頻幀(是的話就跳過當(dāng)前幀的播放)

注意音頻播放結(jié)束或視頻幀播放結(jié)束都要結(jié)束視頻的播放。

四、總結(jié)

本篇提供了pygame播放視頻的兩個方案,第一個方案是網(wǎng)上找的現(xiàn)成的,第二個方案則是參考了opencv(主流方案)自己逆向思維做的,還未經(jīng)過實際驗證。

到此這篇關(guān)于pygame播放視頻并實現(xiàn)音視頻同步的文章就介紹到這了,更多相關(guān)pygame播放視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論