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

Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐

 更新時(shí)間:2022年08月04日 10:31:30   作者:文藝醬Jayce  
本文主要介紹了Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.軟件環(huán)境??

Windows10 教育版64位
Python 3.6.3
PyAV 8.0.3

2.問(wèn)題描述??

在提取視頻文件的關(guān)鍵內(nèi)容時(shí),手動(dòng)查看會(huì)非常耗時(shí)。即使你快進(jìn)視頻,一個(gè)小時(shí)的視頻也需要超過(guò)10分鐘;通常,一秒鐘的視頻包含24幀圖像。如果你能捕獲視頻中的關(guān)鍵幀key frame,你可以把它理解成論文里面的摘要,看完關(guān)鍵幀就知道這個(gè)視頻主要在講什么了),尤其是在長(zhǎng)時(shí)間拍攝類(lèi)似鏡頭的場(chǎng)景中,對(duì)圖像進(jìn)行重復(fù)數(shù)據(jù)消除將有助于過(guò)濾掉大多數(shù)噪聲幀,并最大程度地提取視頻的核心內(nèi)容。

隨著短視頻越來(lái)越流行,視頻的內(nèi)容分析與文本的內(nèi)容分析一樣重要。然而,如果每個(gè)分析師都想看每一段視頻,那就需要太多時(shí)間。即使使用快進(jìn)功能,節(jié)省的時(shí)間仍然不夠。此外,由于人為疏忽,內(nèi)容分析會(huì)出現(xiàn)錯(cuò)誤和遺漏。相較于基于文本的內(nèi)容分析,會(huì)發(fā)現(xiàn)一個(gè)主要的區(qū)別:查看文本內(nèi)容可以一目十行,并且沒(méi)有強(qiáng)制的前后時(shí)間線(xiàn)。相反,觀看流媒體必須消耗流媒體的長(zhǎng)度。然后我們會(huì)有一個(gè)問(wèn)題:我們能一目了然地看到流媒體嗎?事實(shí)上,視頻流中的大量信息是冗余的,并且信息量非常低。信息量?jī)H集中在一個(gè)關(guān)鍵幀(也稱(chēng)為信息幀I幀)圖片中。如果你把這些圖片一張一張地放在面前,你也可以做到像文本內(nèi)容一樣一目十行,減少人為疏忽。

關(guān)于視頻的相關(guān)概念可以看一下這個(gè)博客:
音視頻pts、dts基本概念及理解

那么有沒(méi)有什么方法能夠高效的提取視頻的關(guān)鍵幀呢

3.解決方法??

當(dāng)然有啦,這就是我們今天的主角——PyAV

在這里插入圖片描述

PyAVFFmpegPythonic 綁定,其目標(biāo)是提供FFmpeg 底層庫(kù)的所有功能。 PyAV 通過(guò)容器、流、數(shù)據(jù)包、編解碼器和幀直接和精確地訪問(wèn)視頻媒體。同時(shí),它能夠方便的和其他庫(kù)進(jìn)行對(duì)接,并幫助您從其他包(例如 NumpyPillow)獲取和修改數(shù)據(jù),提取視頻關(guān)鍵幀就更不在話(huà)下了!
不廢話(huà)了,直接上代碼:

'''
===========================================
  @author:  jayce
  @file:    extract_video_keyframes_av.py         
  @time:    2022/4/11   21:42 
===========================================
'''

import av
import os
import shutil

path_to_video = r'E:\Code\Python\extract_video_keyframes\test video.mp4'
output_dir = r'E:\Code\Python\extract_video_keyframes\pyav'


# # 提取全部幀
# container = av.open(path_to_video)
#
# for frame in container.decode(video=0):
#     frame.to_image().save(r'E:\Code\Python\比例尺鑒定\20220410比例尺鑒定\extract_video_keyframes\pyav\frame-%04d.png' % frame.index)


def extract_video_keyframes(path_to_video, output_dir):
    try:
        os.makedirs(output_dir, exist_ok=True)
        # 提取關(guān)鍵幀
        with av.open(path_to_video) as container:
            # 表示我們只想查看關(guān)鍵幀
            stream = container.streams.video[0]
            stream.codec_context.skip_frame = 'NONKEY'
            for frame in container.decode(stream):
                print(frame)
                # 使用frame.pts的原因是frame.index對(duì)skip_frame沒(méi)有意義,因?yàn)殛P(guān)鍵幀是從所有的幀中抽取中獨(dú)立的圖像,而pts顯示的就是這些獨(dú)立圖像的index;
                # DTS(Decoding Time Stamp):即解碼時(shí)間戳,這個(gè)時(shí)間戳的意義在于告訴播放器該在什么時(shí)候解碼這一幀的數(shù)據(jù)。
                # PTS(Presentation Time Stamp):即顯示時(shí)間戳,這個(gè)時(shí)間戳用來(lái)告訴播放器該在什么時(shí)候顯示這一幀的數(shù)據(jù)。
                frame.to_image().save(os.path.join(output_dir, 'temporary-image-{:04d}.png'.format(frame.pts)))
    except Exception as e:
        print('Program error occurred:{}'.format(repr(e)))


if __name__ == "__main__":
    extract_video_keyframes(path_to_video, output_dir)
    # shutil.rmtree(output_dir)

4.結(jié)果預(yù)覽

在這里插入圖片描述

 到此這篇關(guān)于Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐的文章就介紹到這了,更多相關(guān)Python PyAV提取視頻關(guān)鍵幀 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 詳解Python如何使用Falcon構(gòu)建?API

    詳解Python如何使用Falcon構(gòu)建?API

    Falcon?是一個(gè)Python?的?Web?框架,專(zhuān)注于為構(gòu)建?API?提供一個(gè)極其輕量級(jí)、超全面的性能平臺(tái),下面小編就來(lái)為大家詳細(xì)介紹一下Python如何使用Falcon構(gòu)建?API吧
    2023-11-11
  • PyCharm運(yùn)行bash腳本的實(shí)現(xiàn)

    PyCharm運(yùn)行bash腳本的實(shí)現(xiàn)

    本文主要介紹了PyCharm運(yùn)行bash腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python中獲取當(dāng)前線(xiàn)程名字的方法及多線(xiàn)程編程實(shí)踐記錄

    Python中獲取當(dāng)前線(xiàn)程名字的方法及多線(xiàn)程編程實(shí)踐記錄

    本文介紹了在Python中獲取當(dāng)前線(xiàn)程的名字的方法,并探討了其在多線(xiàn)程編程中的重要性和實(shí)際應(yīng)用,通過(guò)兩個(gè)實(shí)際的代碼示例,展示了如何利用多線(xiàn)程來(lái)并行計(jì)算斐波那契數(shù)列和下載文件,以提高程序的性能和效率,感興趣的朋友一起看看吧
    2024-04-04
  • 基于Python實(shí)現(xiàn)定時(shí)自動(dòng)給微信好友發(fā)送天氣預(yù)報(bào)

    基于Python實(shí)現(xiàn)定時(shí)自動(dòng)給微信好友發(fā)送天氣預(yù)報(bào)

    這篇文章主要介紹了基于Python實(shí)現(xiàn)定時(shí)自動(dòng)給微信好友發(fā)送天氣預(yù)報(bào)的實(shí)現(xiàn)代碼,,需要的朋友可以參考下
    2018-10-10
  • python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)模型的保存和讀取

    python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)模型的保存和讀取

    這篇文章主要為大家介紹了python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)如何將訓(xùn)練得到的模型保存下來(lái)方便下次直接使用。為了讓訓(xùn)練結(jié)果可以復(fù)用,需要將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型持久化
    2021-11-11
  • Python常用隊(duì)列全面詳細(xì)梳理

    Python常用隊(duì)列全面詳細(xì)梳理

    隊(duì)列是限制在兩端進(jìn)行插入和操作的線(xiàn)性表,允許存入操作的一段叫“隊(duì)尾”,刪除操作的一端叫“隊(duì)頭”,隊(duì)列的特點(diǎn):隊(duì)列只能在隊(duì)頭和隊(duì)尾進(jìn)行數(shù)據(jù)操作,隊(duì)列模型具有先進(jìn)先出的規(guī)律
    2023-01-01
  • Python函數(shù)的參數(shù)常見(jiàn)分類(lèi)與用法實(shí)例詳解

    Python函數(shù)的參數(shù)常見(jiàn)分類(lèi)與用法實(shí)例詳解

    這篇文章主要介紹了Python函數(shù)的參數(shù)常見(jiàn)分類(lèi)與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python函數(shù)的形參、實(shí)參、默認(rèn)參數(shù)、可變參數(shù)等概念、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • Python繪圖實(shí)現(xiàn)坐標(biāo)軸共享與復(fù)用詳解

    Python繪圖實(shí)現(xiàn)坐標(biāo)軸共享與復(fù)用詳解

    這篇文章主要為大家詳細(xì)介紹了Python在繪圖時(shí)如何實(shí)現(xiàn)坐標(biāo)軸共享與復(fù)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Pandas聚合運(yùn)算和分組運(yùn)算的實(shí)現(xiàn)示例

    Pandas聚合運(yùn)算和分組運(yùn)算的實(shí)現(xiàn)示例

    這篇文章主要介紹了Pandas聚合運(yùn)算和分組運(yùn)算的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python使用Selenium、PhantomJS爬取動(dòng)態(tài)渲染頁(yè)面

    Python使用Selenium、PhantomJS爬取動(dòng)態(tài)渲染頁(yè)面

    本文主要介紹了Python使用Selenium、PhantomJS爬取動(dòng)態(tài)渲染頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

庄浪县| 南陵县| 奇台县| 南江县| 余庆县| 大同市| 新竹市| 东明县| 贵定县| 鹰潭市| 邵武市| 尼玛县| 泰兴市| 桂林市| 杭州市| 咸阳市| 泗洪县| 鸡东县| 清水河县| 茂名市| 肥乡县| 崇礼县| 固始县| 荣昌县| 吴旗县| 略阳县| 资源县| 宝清县| 古交市| 乡宁县| 正定县| 辽中县| 大足县| 奇台县| 新郑市| 贡嘎县| 义马市| 桦甸市| 蒙自县| 商丘市| 广州市|