我用python找出了馬大師視頻中的名場面

:點擊上方[Python爬蟲數據分析挖掘]右上角[...][設爲星標⭐]python


震驚!小夥居然用python找出了馬大師視頻中的名場面

  • 前言sql

  • 1、爬取視頻彈幕bash

  • 2、彈幕分析微信


    • 1. 彈幕頻數統計app

    • 2. 繪製頻數分佈圖ide

    • 3. 標紅高潮部分函數

  • 3、大師的名場面學習

  • 寫在最後測試


前言

最近江湖中涌現出了一位風雲人物,他的語錄成爲了避免少小夥的「精神食糧」,而其名場面也是數不勝數,他即是——混元形意太極門掌門馬大師
ui

今天,kimol君將經過B站上馬大師視頻的彈幕分析出其中的高潮部分(即名場面),選取其中播放量靠前的視頻(視頻地址:https://www.bilibili.com/video/BV1HJ411L7DP)進行分析,效果以下:

紅色部分表明視頻中彈幕數較多的位置,而這一般出如今視頻的高潮部分,圖中時間點表示高潮部分出如今視頻中的位置。對照着原視頻:(https://www.bilibili.com/video/BV1HJ411L7DP)進行比較,結果定會讓你大吃一驚

詳細分析過程,客官您往下看~
理論來講,該方法是通用的,徹底能夠用來分析不一樣的視頻,發現其中高潮的部分(一般是戲劇衝突、高潮橋段、爆點等部分)。所以,具備較高的實用性!


1、爬取視頻彈幕

爬取馬大師視頻(bvid爲BV1HJ411L7DP)的彈幕,並將結果存於本地csv中:

一共有3W+條彈幕。至於彈幕的具體爬取過程,因爲篇幅緣由這裏不在贅述,你們能夠參考個人另外一篇博文。

2、彈幕分析

彈幕分析的思路也比較簡單,經過統計彈幕在視頻中不一樣時間出現的頻數來表示出當時觀衆的反映:一般來說,當視頻出現高潮時,彈幕數量也會相應增長。那麼,整個分析過程能夠分爲三步:

1. 彈幕頻數統計

按照指定的視頻播放時間間隔來統計彈幕的數量,定義一個函數:

def count_fre(time_list,second=1): ''' 統計彈幕出現時間的頻數(按指定second劃分) 輸入:出現時間的列表,劃分的秒數 輸出:頻數分佈 ''' f = lambda x:(x//second)*second  time_list = time_list.apply(f) # 按照second將時間進行劃分 counter = dict(Counter(time_list)) # 統計各時間段出現的頻數 counter = sorted(counter.items(),key=lambda d:d[0]) # 按照字典的key排序 return dict(counter)

統計後的輸出爲一個字典,key爲時間段,value爲對應的彈幕數:

2. 繪製頻數分佈圖

利用python中的matplotlib庫將統計好的頻數分佈繪製出來:

# 繪製分佈圖plt.title('彈幕頻數分佈') plt.xlabel('播放時間(秒)')plt.ylabel('彈幕評論頻數(個)')plt.grid()plt.plot(x,y)

結果以下:

3. 標紅高潮部分

爲了更直觀地反映出高潮部分,用紅色將其標出,並加上對應的時間點:

# 標紅高潮部分flag = Falsestart = 0 # 開始位置end = 0 # 結束位置level = np.percentile(y,90)for i in range(len(y)): if flag == False and y[i] >= level: flag = True start = i-1 if i-1 >= 0 else 0 # 避免低於0 if flag == True and y[i] < level: flag = False end = i+1 end = i+1 if i+1 <= len(x) else len(x) # 避免超過最大值 plt.plot(x[start:end],y[start:end],color='red') # 標紅 pos_y = max(y[start:end]) # 高潮 pos_x = y[start:end].index(pos_y)+start # 找到高潮對應的點 pos_x = x[pos_x] # 找到高潮對應的時間(秒) m,s = divmod(pos_x,60)  text = '%02d:%02d'%(m,s) # 轉爲mm:ss的格式 plt.text(pos_x+1,pos_y,text)

其中level變量取彈幕數的X分位數,是高潮的閾值,即認爲當彈幕數大於level才認爲是高潮部分。經過對它的設定,便可控制高潮標紅的部分。

3、大師的名場面

經過對高潮部分進行標紅後,能夠獲得下圖:

能夠看出,短短2分多鐘的視頻可謂是高潮迭起(小聲嘀咕:「不要想歪了…」)

其中02:27的位置彈幕數量最高,打開視頻一看,妹有錯,名場面來了,年輕人耗子尾汁呀:

其中01:39的位置一樣是名場面,我大E了啊,沒有閃

其他的部分也是相似的,因爲時間緣由這裏就不全都展現了,感興趣的小夥伴能夠本身一一對應看看。

寫在最後

經過簡單的測試,該代碼除了能夠發掘馬大師的名場面外,在諸如其餘電影、電視劇上的分析效果也都不錯。理論上來講,只要有比較充足的彈幕數據,就能找到視頻的高潮所在,您還不心動嗎?😉

- END -


b站彈幕分析源碼獲取方式

識別文末二維碼,回覆:b站彈幕



各類爬蟲源碼獲取方式

識別文末二維碼,回覆:爬蟲源碼


歡迎關注公衆號:Python爬蟲數據分析挖掘,方便及時閱讀最新文章

記錄學習python的點點滴滴;

回覆【開源源碼】免費獲取更多開源項目源碼;

本文分享自微信公衆號 - Python爬蟲數據分析挖掘(zyzx3344)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索