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

Python使用PyAV提取視頻關鍵幀的實踐

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

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

Windows10 教育版64位
Python 3.6.3
PyAV 8.0.3

2.問題描述??

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

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

關于視頻的相關概念可以看一下這個博客:
音視頻pts、dts基本概念及理解

那么有沒有什么方法能夠高效的提取視頻的關鍵幀呢

3.解決方法??

當然有啦,這就是我們今天的主角——PyAV

在這里插入圖片描述

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

'''
===========================================
  @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)
        # 提取關鍵幀
        with av.open(path_to_video) as container:
            # 表示我們只想查看關鍵幀
            stream = container.streams.video[0]
            stream.codec_context.skip_frame = 'NONKEY'
            for frame in container.decode(stream):
                print(frame)
                # 使用frame.pts的原因是frame.index對skip_frame沒有意義,因為關鍵幀是從所有的幀中抽取中獨立的圖像,而pts顯示的就是這些獨立圖像的index;
                # DTS(Decoding Time Stamp):即解碼時間戳,這個時間戳的意義在于告訴播放器該在什么時候解碼這一幀的數(shù)據(jù)。
                # PTS(Presentation Time Stamp):即顯示時間戳,這個時間戳用來告訴播放器該在什么時候顯示這一幀的數(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.結果預覽

在這里插入圖片描述

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

您可能感興趣的文章:

相關文章

  • win7 下搭建sublime的python開發(fā)環(huán)境的配置方法

    win7 下搭建sublime的python開發(fā)環(huán)境的配置方法

    Sublime Text具有漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具欄。Sublime Text的主要功能包括:拼寫檢查,書簽,完整的 Python API,Goto功能,即時項目切換,多選擇,多窗口等等。
    2014-06-06
  • pandas 添加空列并賦空值案例

    pandas 添加空列并賦空值案例

    這篇文章主要介紹了pandas 添加空列并賦空值案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解

    pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解

    這篇文章主要為大家介紹了pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • python try...finally...的實現(xiàn)方法

    python try...finally...的實現(xiàn)方法

    這篇文章主要介紹了python try...finally...的實現(xiàn)方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Python的flask常用函數(shù)route()

    Python的flask常用函數(shù)route()

    這篇文章主要介紹了Python的flask常用函數(shù)route(),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • pandas讀取csv文件,分隔符參數(shù)sep的實例

    pandas讀取csv文件,分隔符參數(shù)sep的實例

    今天小編就為大家分享一篇pandas讀取csv文件,分隔符參數(shù)sep的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 使用Python給頭像戴上圣誕帽的圖像操作過程解析

    使用Python給頭像戴上圣誕帽的圖像操作過程解析

    這篇文章主要介紹了使用Python給頭像戴上圣誕帽的過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python使用matplotlib繪制折線圖教程

    python使用matplotlib繪制折線圖教程

    Matplotlib是一個Python工具箱,用于科學計算的數(shù)據(jù)可視化。借助它,Python可以繪制如Matlab和Octave多種多樣的數(shù)據(jù)圖形。下面這篇文章主要介紹了python使用matplotlib如何繪制折線圖的方法教程,需要的朋友可以參考借鑒。
    2017-02-02
  • python中將字典轉換成其json字符串

    python中將字典轉換成其json字符串

    Python的字典和JSON在表現(xiàn)形式上非常相似,其實實際上JSON就是Python字典的字符串表示,但是字典作為一個復雜對象是無法直接轉換成定義它的代碼的字符串,我們來詳細分析下
    2014-07-07
  • python 爬取華為應用市場評論

    python 爬取華為應用市場評論

    項目需要爬取評論數(shù)據(jù),在此做一個記錄,這里爬取的是web端的數(shù)據(jù),以后可能會考慮爬取android app中的數(shù)據(jù)。
    2021-05-05

最新評論