最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、前言

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

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

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

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

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

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

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

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

我選擇使用moviepy來(lái)做,因?yàn)閙oviepy從mp4中分離mp3比較簡(jiǎn)單。

二、方案一

在項(xiàng)目的目錄下新建videos目錄,并放入一個(gè)測(cè)試使用的mp4文件test.mp4

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

三、方案二

代碼如下:

上述代碼的邏輯如下:

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

2、通過(guò)音頻播放進(jìn)度除以視頻的總時(shí)長(zhǎng),得到音頻播放的百分比進(jìn)度(音畫(huà)同步的話,音頻百分比進(jìn)度就應(yīng)該跟視頻百分比進(jìn)度一致)

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

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

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

四、總結(jié)

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

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

相關(guān)文章

  • Python中的線程同步的常用方法總結(jié)

    Python中的線程同步的常用方法總結(jié)

    在Python多線程編程中,我們常常需要處理多個(gè)線程同時(shí)訪問(wèn)共享數(shù)據(jù)的情況,為了防止數(shù)據(jù)在多線程之間出現(xiàn)沖突,我們需要對(duì)線程進(jìn)行同步。本文將詳細(xì)介紹Python中的線程同步的幾種常用方法,需要的朋友可以參考下
    2023-06-06
  • Matplotlib繪制雷達(dá)圖和三維圖的示例代碼

    Matplotlib繪制雷達(dá)圖和三維圖的示例代碼

    這篇文章主要介紹了Matplotlib繪制雷達(dá)圖和三維圖的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python自動(dòng)化Office文檔處理全攻略

    Python自動(dòng)化Office文檔處理全攻略

    在日常辦公中,處理Word、Excel和PDF等Office文檔是再常見(jiàn)不過(guò)的任務(wù),手動(dòng)操作這些文檔不僅耗時(shí)耗力,還容易出錯(cuò),幸運(yùn)的是,Python提供了豐富的庫(kù),使得自動(dòng)化處理這些文檔變得輕松高效,本文將通過(guò)通俗易懂的表達(dá)方式,帶你領(lǐng)略Python自動(dòng)化Office文檔處理的魅力
    2025-02-02
  • Python爬蟲(chóng)和反爬技術(shù)過(guò)程詳解

    Python爬蟲(chóng)和反爬技術(shù)過(guò)程詳解

    Python爬蟲(chóng)是當(dāng)下最火的一種獲取數(shù)據(jù)的方式,當(dāng)我們對(duì)一些小型網(wǎng)站進(jìn)行爬取的時(shí)候往往沒(méi)什么阻礙,而當(dāng)我們爬取大型網(wǎng)站的時(shí)候經(jīng)常會(huì)遇到禁止訪問(wèn)、封禁IP的情況,這也是我們觸發(fā)反爬機(jī)制的體現(xiàn),本文來(lái)帶領(lǐng)大家了解幾種簡(jiǎn)單高效的反爬對(duì)策
    2021-09-09
  • python openpyxl打開(kāi)文件關(guān)閉問(wèn)題

    python openpyxl打開(kāi)文件關(guān)閉問(wèn)題

    這篇文章主要介紹了python openpyxl打開(kāi)文件關(guān)閉問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • pytorch中的model=model.to(device)使用說(shuō)明

    pytorch中的model=model.to(device)使用說(shuō)明

    這篇文章主要介紹了pytorch中的model=model.to(device)使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python獲取屏幕截圖區(qū)域坐標(biāo)簡(jiǎn)單代碼和思路

    python獲取屏幕截圖區(qū)域坐標(biāo)簡(jiǎn)單代碼和思路

    這篇文章主要介紹了python獲取屏幕截圖區(qū)域坐標(biāo)的相關(guān)資料,文章介紹了一個(gè)獲取屏幕截圖區(qū)域信息的簡(jiǎn)單方法,通過(guò)鼠標(biāo)操作確定截圖區(qū)域的左上角和右下角坐標(biāo),計(jì)算出區(qū)域的寬度和高度,并返回這些參數(shù),以便進(jìn)行后續(xù)的數(shù)字識(shí)別和比較操作,需要的朋友可以參考下
    2024-11-11
  • python版本管理之pyenv使用超詳細(xì)指南

    python版本管理之pyenv使用超詳細(xì)指南

    Pyenv是一個(gè)簡(jiǎn)單的Python版本管理工具,通過(guò)Pyenv可以安裝多個(gè)版本的Python,并且可以在多個(gè)版本之間輕松切換,這篇文章主要介紹了python版本管理之pyenv使用的相關(guān)資料,需要的朋友可以參考下
    2025-09-09
  • python通過(guò)ssh-powershell監(jiān)控windows的方法

    python通過(guò)ssh-powershell監(jiān)控windows的方法

    這篇文章主要介紹了python通過(guò)ssh-powershell監(jiān)控windows的方法,涉及Python操作ssh-powershell的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python實(shí)現(xiàn)一鍵提取PDF文件中的文本、表格和圖片

    Python實(shí)現(xiàn)一鍵提取PDF文件中的文本、表格和圖片

    PDF 文檔作為一種廣泛使用的文件格式,常常包含豐富的內(nèi)容元素,本文將介紹如何使用 Python 和 Spire.PDF 庫(kù)來(lái)提取 PDF 文件中的文本、表格和圖片,幫助您將靜態(tài)的 PDF 文檔轉(zhuǎn)換為可編輯、可分析的數(shù)據(jù)資源
    2026-04-04

最新評(píng)論

凌源市| 四会市| 桐梓县| 博乐市| 葫芦岛市| 元氏县| 庐江县| 平果县| 新竹县| 库车县| 永靖县| 富顺县| 眉山市| 云梦县| 德安县| 沂水县| 平顶山市| 福鼎市| 岫岩| 黄陵县| 双桥区| 来宾市| 宝山区| 芷江| 罗平县| 平舆县| 青海省| 中超| 遂宁市| 辽宁省| 瓮安县| 喀喇沁旗| 曲水县| 五大连池市| 枣庄市| 淮滨县| 铁岭市| 奉化市| 连山| 台北县| 明溪县|