今日目標或說問題有兩個
1.動畫背景切換統計(已完成,但還沒全自動化,或者說不知道怎麼全自動化)
(類似散步跟室內跑步機的差異
之所以要做這個
是因為我在猜
多數人會被電視、動畫、遊戲吸引
是因為電視、動畫、遊戲變動的比自然界快
有變化的東西總是比較引人注目
像很多人會在意抖腳這動作,感覺不管喜歡與否,抖腳都很難讓人忽視
而為何散步心情會變好
但來回踱步給人是焦慮的感覺
我想散步除去運動之外,可能也是視野變化、與物體距離變動的關係
與此類似的有,相聲、跨年、演唱會、運動比賽看現場跟看影片的差異
也可以簡單的說是鏡頭差異)
2..wav產生波形與和弦(今日未著手)
這目標早上查了下
我想應該照著下述文章就做得出來
不過要花多久時間才能實作出來不清楚
因此今天應該是
優先處理.wav產生波形與和弦
等處理過程煩悶或疲倦時
再隨意看個動畫看背景的變化
理論上來說
動畫看變化應該也是要藉由程式來處理的
不然看動畫,每過陣子就要按個鍵甚至是停下來
實在是蠻影響播放體驗的
不過要由程式來處理的話
要先處理擷取螢幕畫面或錄製螢幕畫面
(這部份我想應該肯定得用非網頁程式來處理了
畢竟錄所有電腦聽得到的音效的WASAPI都會被網頁安全性擋住了
錄螢幕畫面應該更沒辦法)
若沒辦法擷取或錄製的話
那還需要先有影片檔才行處理
會很麻煩的
只是若目標是擷取螢幕畫面或錄製螢幕畫面的話
用現成軟體還有機會今天內處理完畢
嗯,那就看看今天到時候要怎麼處理吧!!
如果現成的軟體夠好用的話
就不用去找別人寫好的函式庫組合來用了
但我記得過往用這相關的軟體多少有些限制在就是了
不趕時間的話
還是要盡可能找程式實作法
雖然相關程式不見得會寫或會改
但用現成軟體的話
要改至少還多個理解現成軟體怎麼改的步驟
要是那麼強隨便個現成軟體都有辦法改的話
估計是靠自身逆向工程的技術就不愁吃穿了
總之
我沒強到能任意修改現有軟體
因此需要找自身能理解、實踐出來的程式來改這樣!!
先午休,下工後再開始動工
基本上上工日,一天能自由使用的時間僅有2小時到3小時
剩下的時間不是在外面,很多操作受限或不便
不然就是要休息,避免工作時精神不濟導致意外!!
----------------------------------------------------------------------
工作休息時間時查了些資料
所以回家後優先著手
目標1─動畫背景切換統計
但若是用錄影的方法的話,沒辦法自動完成
就算持有原動畫影片檔
有些相似的關鍵幀還是要自己去看
(再不然就要用程式去判斷關鍵幀圖片的相似程度
不過這種程式要怎麼寫?
我目前還不會寫!!)
我是使用Windows 10內建錄影功能
請看這篇,基本上按Windows圖示鍵-G就會用了,但這錄影方法不可以切換程式
此外這方法本身有兩大缺陷
1.錄的影片檔檔案很大、錄的畫面是程式本身的畫面,要裁剪
像我錄14分鐘的影片,404MB
不過這缺陷還好
因為可以配合格式工廠解決
檔案很大的話
把位元率調整一下即可
不過位元率調太低的話
影片看起來會有些像點陣圖放太大的感覺
2.這方法會有太多的關鍵幀,導致不利於ffmpeg進行下一步
其實有很多錄影方法,只是不見得能同時錄麥克風、電腦音效
然後支援在錄影時就能進行選取部份畫面進行的聽說是 showmore
可是我沒實際用過showmore
既然Windows內建可以錄影,就沒必要冒險用別的了
在有動畫影片檔之後
配合ffmpeg(建議設好環境變數)可以打以下指令(適用於Windows)
設ffmpeg環境參數請看這篇
具體是參考這兩篇
這篇最底下的回答才是適用於Windows的
ffmpeg ^
-i 檔名.mp4 ^
-vf select="eq(pict_type\,PICT_TYPE_I)" ^
-vsync 2 ^
-s 640*360 ^
-f image2 core-%02d.jpeg ^
-loglevel debug 2>&1| for /f "tokens=4,8,9 delims=. " %d in ('findstr "pict_type:I"') do echo %d %e.%f>>"keyframe_list.txt
輸入完該指令後
若影片檔較大、關鍵幀很多
可能會卡一陣子,請耐心等候
^在命令提示字元中代表的是 下行還有資料
類似Linux中的 \
上述綠色部份是比較需要改的
檔名.mp4 其實不一定要.mp4
總之就是影片檔的檔名
若檔案格式不支援,跑的時候會知道的
-s則是設影片的長度與寬度
這部份可以對影片檔點右鍵看內容
上方有個 詳細資料 標籤
裡面有寫畫面寬度、畫面高度,
-s 畫面寬度*畫面高度 即可
這樣子會出來各關鍵幀的圖檔
和keyframe_list.txt文件檔
其中n代表是第幾幀
t則是時間,以秒為單位
如果你是用Windows內建錄影的話
基本上會發現不到0.4秒就有個關鍵幀
那建議乾脆把指令改一下
改成每幾秒抓一次圖
像這樣
ffmpeg -i 檔名.mp4 -y -f image2 -vf fps=fps=2 two_second-%02d.jpeg
fps=fps=0.5就是隔兩秒抓圖(每兩秒才一幀)
改數字即可改變抓取間隔時間
建議fps不要超過1
因為在一堆關鍵幀的情況下
大概是不到0.4秒抓一次圖
假如fps是3的話,就相當於約每0.33秒抓一次圖
那用原來的方法抓關鍵幀即可
然後每幾秒抓下來的圖,放在個資料夾
檢視→超大圖示或大圖示這樣掃過去即可
雖然這方法不是很聰明
但理想的方法我目前還不知道要怎麼做出來
所以今天就暫且這樣!!
(用 《狐妖小紅娘》第19集 的原因是,用其它影片感覺爭議會很大
選個一開始就是在網路播放的影片,應該比較不會被找麻煩
應該啦!!
嗯,其實不貼圖就沒事了!!
只是稍微展示下大概成果
我稍微掃了下
五秒前後背景還是很類似的
大多是說話說很久的片段
雖然也是有可能鏡頭切到別的說話人物再切回來的巧合啦
若只看這影片的話
動畫基本上同個鏡頭不會超過16~20秒
且很少有同個鏡頭會維持超過5秒的
《狐妖小紅娘》第19集
同個鏡頭畫面維持最久的片段是在
「原來外面的世界,道士.........」然後喝口茶那邊
不過不用這方法來看的話
沒注意到這鏡頭能拖過15秒)
嗯,那本篇大概就這樣!!