ffmpeg學(xué)習(xí)

新開(kāi)一個(gè)坑诗鸭,用ffmpeg工具進(jìn)行一些視頻的處理沮焕,和做一個(gè)新的數(shù)據(jù)集差不多的想法弓坞。這一類(lèi)做法相當(dāng)于是AE隧甚,PR這種的基層工具,學(xué)習(xí)一下也是一個(gè)不錯(cuò)的做法渡冻。
安裝過(guò)程
一些用到的命令會(huì)寫(xiě)在下面以備使用戚扳。
現(xiàn)在根據(jù)原有的一些腳本加以改造后可以做到現(xiàn)在這么兩個(gè)功能:具體的代碼貼到下面:
1.首先是做標(biāo)簽然后把這一個(gè)類(lèi)別的視頻全部放入到對(duì)應(yīng)類(lèi)別的txt文件下:

#!/bin/bash

COUNT=-1
for folder in $1/*
do
    for imagesFolder in "$folder"/*
    do
        echo 'file '"$imagesFolder">> "$folder"-train.txt
    done
done

上面功能完成后可以的到講標(biāo)簽做好符合ffmpeg用于處理合成一個(gè)類(lèi)別的所有視頻的功能。比如這個(gè)腳本我定義成2.sh族吻,使用時(shí)bash 2.sh UCF101就可以直接給UCF101做好標(biāo)簽了帽借,下面的腳本也是同理,只不過(guò)下面只遍歷txt文件罷了超歌。
2.將一個(gè)類(lèi)別的視頻合成為一個(gè)視頻:

#bin/bash
for file in $1/*
do 
     COUNT=$[$COUNT + 1]
     ffmpeg -f concat -i $file -c copy output_$COUNT.mp4
done

這個(gè)實(shí)際上是對(duì)ucf101進(jìn)行適配的砍艾,這一次轉(zhuǎn)成MP4的格式。
現(xiàn)在目前仍存在的問(wèn)題是沒(méi)解決讀取每個(gè)視頻的幀率不同的問(wèn)題巍举,然后將其摘除或者說(shuō)直接轉(zhuǎn)到同一幀率的做法辐董。下面需要解決的問(wèn)題有兩點(diǎn):
1.拼接長(zhǎng)視頻之前對(duì)各個(gè)子視頻的幀率,起始時(shí)間和結(jié)束時(shí)間做一次保留禀综,這個(gè)一塊還沒(méi)有處理简烘,可以參考kinetics是如何處理的(用于下載時(shí)的那個(gè)腳本有一些參考價(jià)值)
2.對(duì)于不同幀率的子視頻苔严,要是按現(xiàn)在統(tǒng)一轉(zhuǎn)成25幀的策略來(lái)處理,需要看原來(lái)幀率不一樣的視頻是不是長(zhǎng)短有變化孤澎,影響取幀的時(shí)候標(biāo)簽不一致届氢。(實(shí)際上也可以直接先把所有視頻幀率都轉(zhuǎn)成一樣的,這樣的話倒是不用擔(dān)心幀率不同的問(wèn)題覆旭。)
這里轉(zhuǎn)到MP4用的這個(gè)格式也是說(shuō)用了H.26T4來(lái)改善退子,H.264有四種畫(huà)質(zhì)級(jí)別,分別是baseline, extended, main, high:
  1、Baseline Profile:基本畫(huà)質(zhì)型将。支持I/P 幀寂祥,只支持無(wú)交錯(cuò)(Progressive)和CAVLC;
  2七兜、Extended profile:進(jìn)階畫(huà)質(zhì)丸凭。支持I/P/B/SP/SI 幀,只支持無(wú)交錯(cuò)(Progressive)和CAVLC腕铸;(用的少)
  3惜犀、Main profile:主流畫(huà)質(zhì)。提供I/P/B 幀狠裹,支持無(wú)交錯(cuò)(Progressive)和交錯(cuò)(Interlaced)虽界,
    也支持CAVLC 和CABAC 的支持;
  4涛菠、High profile:高級(jí)畫(huà)質(zhì)莉御。在main Profile 的基礎(chǔ)上增加了8x8內(nèi)部預(yù)測(cè)、自定義量化俗冻、 無(wú)損視頻編碼和更多的YUV 格式颈将。
這里對(duì)上面組合視頻的地方有一點(diǎn)問(wèn)題,因?yàn)閷?xiě)的是絕對(duì)路徑所以導(dǎo)致如果找尋的文件夾下沒(méi)有在所指定的文件夾下言疗,也會(huì)報(bào)找不到文件的錯(cuò)誤,需要把整個(gè)處理好的ucf101數(shù)據(jù)集再放到這個(gè)標(biāo)號(hào)list的文件夾下颂砸,這樣做的挺粗糙的噪奄,后續(xù)會(huì)更改。然后在讀取list的時(shí)候在最后95-96的時(shí)候會(huì)不再加count上的數(shù)值人乓,猜測(cè)是因?yàn)槲募A下加了這個(gè)ucf101的大文件夾在下方讀不到勤篮,所以出問(wèn)題,暫時(shí)手動(dòng)更正了后面幾個(gè)錯(cuò)位的文件名色罚。
今天提到了一個(gè)之前沒(méi)注意的細(xì)節(jié)碰缔,xiaolongwang給的kinetics數(shù)據(jù)集命名和官方下載的有一些區(qū)別,不過(guò)這里重新更改文件名也不是什么難題戳护,這一塊確實(shí)是沒(méi)仔細(xì)檢查金抡,后續(xù)這塊考試結(jié)束后和師兄繼續(xù)討論完善瀑焦。(講真復(fù)習(xí)的頭很大,快煩了梗肝,然而又擔(dān)心掛科不得不看榛瓮。然而沒(méi)有想到還是....十分之矛盾)

2019.2.28

2月底我們的工作遇到一個(gè)坎,需要把幀再拼接回視頻巫击,這里就體現(xiàn)了我自己確實(shí)不會(huì)ffmpeg禀晓,最后一條關(guān)鍵的命令是靠師兄給提供的。(師兄老是這么照顧我坝锰,除了感謝我實(shí)在想不出來(lái)別的詞了..)
下面貼一下幀拼接視頻的腳本粹懒,適用于做數(shù)據(jù)集中的多個(gè)視頻。

#!/bin/bash
a=0
for folder in $1/*
do
    a=$(($a+1))
    for file in "$folder"/*.jpg
    do
        ffmpeg  -r 25 -i $folder/image_%5d.jpg -vcodec  mpeg4 compose/$a.mp4        
        break
    done
done

這里我們用的ffmpeg直接拼接圖片顷级,但是這里的問(wèn)題是必須精確到j(luò)pg的命名才可以凫乖,當(dāng)然這個(gè)做法有利有弊,利是圖片格式都有個(gè)明確了解愕把,可以統(tǒng)一處理成image_%5d.jpg的格式拣凹,如果后期發(fā)現(xiàn)了什么新方法會(huì)繼續(xù)更新。統(tǒng)一mp4文件放到compose文件夾下恨豁。
然后配合下面的可以在原始的文件夾下面直接復(fù)制一份原始圖像:

import cv2
import os
import matplotlib.pyplot as plt
load_path='folder'
x=os.walk(load_path)
i=800
for root,dirs,filename in x:
     for s in filename: 
      image=plt.imread(root+'/'+s)
      plt.imsave(root+'/'+s[:-7]+'{}.jpg'.format(i),image)
      i=i+1

這里還是有弊端嚣镜,因?yàn)閕=800實(shí)際上還是沒(méi)有解決無(wú)限幀的情況或者有重名情況,但是這里因?yàn)榭戳艘幌聅omething2something數(shù)據(jù)集實(shí)際上每一個(gè)視頻都很短橘蜜,不會(huì)超過(guò)100幀菊匿。不過(guò)安全起見(jiàn)還是設(shè)置了一個(gè)閾值到800.如果后面解決了這個(gè)問(wèn)題也可以繼續(xù)補(bǔ)充。
這個(gè)鏈接給的做法很給力计福,這個(gè)庫(kù)還是記著些比較好用的跌捆。AE,PR 這些估計(jì)也是用這些底層的東西進(jìn)行實(shí)現(xiàn)象颖。
上面用os遍歷文件夾佩厚,walk走完整個(gè)load_path,這里三級(jí)文件filename存的是我們二級(jí)文件夾下所有的文件说订,是個(gè)list類(lèi)型抄瓦,這樣再?gòu)睦锩孀咭槐槌鰜?lái)就可以得到對(duì)應(yīng)的文件,用plt.imread就可以解決陶冷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钙姊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子埂伦,更是在濱河造成了極大的恐慌煞额,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異膊毁,居然都是意外死亡胀莹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)媚媒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嗜逻,“玉大人,你說(shuō)我怎么就攤上這事缭召≌磺辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嵌巷,是天一觀的道長(zhǎng)萄凤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搪哪,這世上最難降的妖魔是什么靡努? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮晓折,結(jié)果婚禮上惑朦,老公的妹妹穿的比我還像新娘。我一直安慰自己漓概,他們只是感情好漾月,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胃珍,像睡著了一般梁肿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上觅彰,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天吩蔑,我揣著相機(jī)與錄音,去河邊找鬼填抬。 笑死烛芬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飒责。 我是一名探鬼主播赘娄,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼读拆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鸵闪,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檐晕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辟灰,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡个榕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芥喇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西采。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖继控,靈堂內(nèi)的尸體忽然破棺而出械馆,到底是詐尸還是另有隱情,我是刑警寧澤武通,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布霹崎,位于F島的核電站,受9級(jí)特大地震影響冶忱,放射性物質(zhì)發(fā)生泄漏尾菇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一囚枪、第九天 我趴在偏房一處隱蔽的房頂上張望派诬。 院中可真熱鬧,春花似錦链沼、人聲如沸默赂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)放可。三九已至,卻和暖如春朝刊,著一層夾襖步出監(jiān)牢的瞬間耀里,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工拾氓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冯挎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓咙鞍,卻偏偏與公主長(zhǎng)得像房官,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子续滋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容