訪客留言簿

星期四, 11月 27, 2014

[年底選舉] 我最近學到的知識

前言

這篇很雜,而且我不會特別說是誰誰誰做的,因為這些事,是任何人都可以做到,也可以選擇不去做的。

(本文隨時更新)

人的生活基本需求與進步間的關係

商城遊戲

隨著免費遊玩的商城制網路遊戲成為主流,人人都可以簡單入門一款遊戲,玩了不喜歡也不會有時間以外的大損失。

所以爛的東西會被很快淘汰或改良,好的東西會吸引人繼續遊玩,而且能靠著少數人(有些超熱門的還不到 10%),實際購買虛擬商品,來支撐起一款作品。

不過能讓一款作品存活,並不是真的靠付費的少數人而已。你得想想,你付了錢,把遊戲進度打到最新,然後裡面就沒有任何刺激的挑戰了,沒有那種只靠花時間練功,沒付錢卻能挑戰你的黑馬,讓你想持續投錢下去變更強,那這遊戲的壽命也就結束了。

這邊就有了個重點:「為什麼沒付錢的玩家可以挑戰你的地位?」

首先,要玩遊戲,必須有電腦或手機、平板等設備;接著,你要花時間的話,你就得要先能維持生命最低的需求──吃喝拉撒睡,這些都必須靠實質物資來養;然後居住所花費的維持成本也考慮進去,能廢一款遊戲的,至少都要有一定的生活能力或經濟後援。

而遊戲玩家多,就能很快發現問題,彼此交流的話,也能想出新玩法,這些回饋資訊,對遊戲營運商來說都是好事。

由遊戲看社會

所以我想說明什麼呢?

接下來的主題就是,如果一個地方,人人都有最基本的生命自由及健康方面的保障,不必一直花時間汲汲營營只為了一餐溫飽或求一覺溫暖的話,那大家就可以花很多時間,來做很多他們覺得很棒的事。

你可以設計個商業模式,賺更多錢,用錢消費更多東西。

你可以花時間玩各種表演藝術,比如說收集別人隨地丟的煙蒂,做出一座女神像,來諷刺這些沒品的抽菸者造成的問題。

你可以專心研究新科技、新技術、新方法,創造新的生活方式。

你可以整天在網路衝浪,找找有沒有新鮮事,直接用社群網路散布給大家知道,而不必仰賴商業為主的媒體報導。

其他還有很多很多,多到你不知是好是壞的事,都可以在滿足大家的基本需求後,靠大家的力量,提出、完成、接受大眾評價,然後來決定這件事到底要不要繼續投入,一切都由你選擇,而不是由付你錢的老闆逼你接受。

簡單說,有人要去開放菜園拔一點菜來自用又何妨,你也可以去拔他的蘿蔔洗來吃呀。

以樂觀進取的態度來對抗強大勢力

推翻獨裁者

在『獨裁者的進化』一書中,很清楚說明了兩個觀念。一是在你認輸前,都不算是真的輸了。二是任何政權,都可能一夕垮台。

首先,不認輸,不是叫你死皮賴臉,無理取鬧(雖然不少人對「群眾活動」「抗議活動」本身就抱持不屑參與認識的態度),而是要你輸了一次,就再檢討改進,持續下去,總有一天會成功,但你認輸的那時刻起,你就真的輸了。

再來,政權的垮台,其實不是一朝一夕達成的,但真的崩潰,卻是一瞬間發生的,這就只是腐化與新生的自然輪替而已。

為何要和平示威

這跟剪刀石頭布很像,出的都是石頭,那是不分輸贏的,還可能被拳頭大的那邊打得滿頭包。

所以用你比較強的那招,來打擊對方比較弱的相同地方,才是常勝之道。

簡單說,你用木棍,打不贏鐵棍,那就想辦法讓拿鐵棍的人,放下鐵棍,或讓他們想要反過來打指使他們的人就好。

價值觀的落差

老中壯青少幼,年齡層間的;男女雙性人,性別間的;同性異性戀物癖,性癖間的……其他不勝枚舉。

你可能心理上,就是無法接受另一種人,不過你在知識上,仍然可以認識認識他們。

任何價值觀之所以存在,都有客觀的歷史因素,傾聽,認識,然後你就會知道為什麼了。

打破沙鍋問到底,即使一下子聽不懂,先當成無用知識記下來,以後總會瞭解的。

其他

很多很雜,所以我也忘了有要寫什麼,這頁空白不夠,寫不下,改天想起來再寫。

[Firefox] NextVid Stopper for YouTube 停止自動播放下一則推薦影片

前言

YouTube 最近新增的這功能超級煩的,要看推薦影片可以自己去點呀,也不給人開關這功能。

安裝

NextVid Stopper for YouTube」是 Firefox 瀏覽器的擴充套件,安裝後免重開,馬上可以使用,開關功能就放在右上那排推薦影片的上方,開關一次就可以套用到全部影片。(就是說你不必每看一個影片就要按一次)

NextVid Stopper for YouTube :: Firefox 附加元件

演完了!

星期日, 11月 23, 2014

[影片分割教學] mp4 flv avi mpeg mpg 能播放就能切割(影像處理 ffmpeg my mp4box gui split)

前言

簡單來說用命令列跑 ffmpeg 比較精準,但想快的,可以用 My MP4Box GUI 會比較方便。

總之我也還在摸索中這樣。

(2024.08.25 備註:嫌麻煩的可以直接找 DaVinci Resolve 這套軟體)

(2021.06.29 備註:本篇文章中,會出現 foo bar foobar result 之類的字串,那是無意義字串,主要是在告訴讀者,這個地方要打實際的檔案名稱,再接副檔名,並不是要打前述字串。)

軟體下載

ffmpeg 分割影片基本語法

ffmpeg -i foo -ss 00:00:00.00 -t 00:00:00.00 bar

進純文字命令列,切換資料夾(cd)到 FFmpeg/bin 下工作。

上面的 foo 代表要輸入的影片路徑及名稱(同路徑則打檔名副檔名即可),bar 就是輸出的檔名。

時間有兩處要填。前面的是「開始的時間」,後面的是「總共的長度」。

時間格式為「小時:分鐘:秒鐘.毫秒」(hh:mm:ss.SSS),毫秒基本上只能吃到小數點後兩位的樣子。(hh 跟 SSS 的數字為 00~99;mm 跟 ss 的數字為 00~59)

用 H.264 重新壓縮影片

新的壓縮技術可以更好、更快、更省空間,所以手上有 mpg / mpeg / avi 等的超大影片檔的話,建議可以重新壓成 H.264 mp4 會比較省空間。

ffmpeg -i foo bar

其他 ffmpeg 相關指令

抓 FFmpeg Windows 版的話,裡面至少會附上 ffmpeg 跟 ffplay 兩樣東東。

ffmpeg 就上面介紹的,可以切割影片的。

ffplay 則是播放器,影片可以用這播,那就可以用 ffmpeg 編輯。

ffplay foobar -loop 0

上面這個就是無限循環播放影片的指令。

其他請自行看 FFmpeg/doc 資料夾底下的說明文件。

ffmpeg + ffplay 連續技

要試錯調整分割時間點,又覺得要一直切換指令很麻煩,只要打下面一行就好,ffplay 播影片可以按 q 鍵關閉回命令列視窗。

ffmpeg -i foo -ss 00:00:00.00 -t 00:00:00.00 -y bar && ffplay bar -loop 0

ffplay 鍵盤操作方式

  • f - 切換全螢幕或視窗
  • 空白鍵 - 暫時或繼續
  • q - 關閉視窗
  • 左、右鍵 - 向前、後移動 10 秒
  • 上、下鍵 - 向前、後移動 1 分

影片輸出成動畫圖片或擷圖(gif、apng、jpg...)

研究中,先留筆記下來。靠刪去法查沒看過的參數,這樣子比較快搜尋到。

另外應該也可以直接指定影片段落,來 output 轉成 animation 圖片。

(待研究:轉成多張圖片、多張圖片轉成單張縮圖)

ffmpeg -i 03.mp4 -s 480x270 -r 25 -vframes 250 -f gif a.gif -y

  • -s WxH - 指定寬高(Width、Height)的像素值(pixel),注意乘號是要用英文「x」不是符號「*」(因為這是保留字元 escape character 中常見的萬用字元)。
  • -r Number - 指定每秒的速度的樣子,詳細單位待查,Number 處就是要填數字進去。(好像填 25 就很快了)
  • -vframes Number - 指定要擷取多長的影片的樣子,詳細單位待查,Number 處就是要填數字進去。
  • -f gif Filename - 指定輸出格式(format)成 gif 動畫圖片,Filename 就是檔名。要存成別的靜態圖片,則是寫成「-f image2 Filename」。

ffmpeg -i 03.mp4 -y -ss 00:00:10.00 -t 00:00:10.00 -s 480x270 -r 60 -f gif a.gif

個人覺得比較好的寫法,直接指定時間段落,省去算 frame 幀數的工夫。(順帶一提不指定時間或幀的話,就是整個影片去跑輸出)

下面是本章節的參考資料。

合併圖片跟聲音成影片檔

先寫下參考資料,不知為何 ffmpeg 可以單獨轉 wma 為 mp3 檔,卻不能用下面的一道指令完成合併成影片檔。

ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:v libx264 -c:a copy result.mkv

參考資料

合併影音

有無聲影片,要跟聲音檔合併,可以一行指令匯入兩個檔案,不重新壓縮,最後直接合併成一個檔案。

ffmpeg -i foo.mp4 -i bar.mp3 -c:v copy -c:a aac foobar.mkv

參考資料

Windows 批次檔(對話式)

可能會有人需要,先留個筆記。

@echo off
set /p in=Filename is (FULL NAME with EXTEND): 
set /p begin=Begin from (which time) hh:mm:ss.SS: 
set /p dura=Duration(how long) with hh:mm:ss.SS: 
set /p width=Output width is (PXs): 
set /p height=Output height is (px): 
set /p ratio=How fast it is (fps, ex:25): 
set /p out=Your output gif filename is: 
ffmpeg -i %in% -y -ss %begin% -t %dura% -s %width%x%height% -r %ratio% -f gif %out%.gif
@echo !!!!!!!!!!!!
@echo !!! DONE !!!
@echo !!!!!!!!!!!!
pause

合併影片(concatenate)

ffmpeg -i "concat:foo1|foo2" bar.mp4

上面的 foo1 跟 foo2 就是要合併的兩個來源檔案,也可以加入完整路徑。(如 "concat:R:\test1.mp4|R:\test2.mp4" 這樣)

不過這邊要注意一件事,就是 mp4 檔,可能無法直接合併,所以要先轉換成 ts 檔。目前我自己在 Windows 7 上,試過品質比較高的轉檔合併法,是下面這三行指令。(不同作業系統可能會需要不同的參數,這邊僅供參考)

ffmpeg -i foo1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts foo1.ts
ffmpeg -i foo2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts foo2.ts
ffmpeg -i "concat:foo1.ts|foo2.ts" bar.mp4

參考
排序錯誤導致的合併失敗(2016.11.10 加註)

有時候你會發現你的 .ts 檔合併後,影片會不正常,那可能原因之一就是順序錯誤了。

例如抓 Twitter 的 video.twimg.com 底下的 .tx 格式影片時,不照順序來合併影片,就會在順序錯誤的地方,造成影片停格的現象。

測試用影片來源:津路参汰 ☆すーぱーそに子10周年☆さんのツイート: "これすごくないっすか… #すーぱーぽちゃ子" https://t.co/IRJcTFMVJg

這影片分割成六個 ts 檔,正確的順序如下,如果你合併時的檔名排序錯誤,出來的影片就會跟著錯誤,這時其實只要把順序寫正確就可以解決了。

  1. aIQqvX7Dhquo-yXT.ts
  2. Taqpr04pi8mAsD-z.ts
  3. S_Z38N_mDpyViqfd.ts
  4. b0hq8vIIla0KyV2X.ts
  5. NdiB1kctv0ACkzgL.ts
  6. kadBY4rVH44247Vw.ts

用 ffmpeg 剪截影片

editing - How can I crop a video with ffmpeg? - Video Production Stack Exchange

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4
ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

使用 My MP4Box GUI 分割影片

都圖形介面,也不用教啥。

下載、安裝、執行,然後在「Split」頁面內,選擇「Extract by Duration」就好。

唯一的缺點就是沒法處理毫秒(millisecond)單位的編輯,不然用 Extract 方式切割很快速的。(ffmpeg 應該也有相同的指令可以弄不過暫時懶得找,都英文看不懂)

調整影片時,推薦使用的幾個參數。

影片長度(duration)

有時你只是要測試參數跑下去的結果,所以不需要整個影片都處理,剪開始的幾秒來確認就好。

-ss 00:00:00 -t 00:00:10

切割大小(crop)

有些片源,錄出來會有黑邊,或是因為比例不對而有黑邊之類的,用這先切掉黑邊再說。四組數字依序是「(出來的)寬」「(出來的)高」「(起始的)x軸」「(起始的)y軸」。

-filter:v "crop=960:694:160:13"

長寬比例(aspect)

忽略影片本身的寬高,直接指定要用什麼比例,來播放影片。數字基本上是自由填寫的,但不可以使用小數點,碰上要使用「2.21:1」之類的,請用「221:100」來代替。

-aspect 16:9

縮放影片(scale , resize)

調整影片本身的寬高尺寸,會直接影響檔案的容量大小,所以當然會失真比較嚴重,請在必要時才使用,不然只需要用 aspect 調整即可。

另外,無法跟上面的同時使用,一定要針對處理完的影片,才能縮放尺寸,所以請分開跑另一道指令,或同一行指令,用 && 分開跑兩次 ffmpeg 指令。

-vf scale=960:540

參考資料

加入字幕(檔)

ffmpeg 可以把影片跟字幕合併,輸出成一個新的多媒體封裝格式(mp4、mkv、avi 等,只包裝檔案不破壞性壓縮原始資料),所以如果手上有現成的字幕檔,或是要手動打上字幕(檔)時,就可以用 ffmpeg 快速無損處理。

或是如果你要上傳到 YouTube 的話,用網站內建的字幕功能也可以。

參考資料

旋轉影片(順時針、逆時針)

(※註:我目前並無法正常壓出旋轉過的影片)

逆時針轉 90 度

ffmpeg -i foo bar -vf "transpose=2"

transpose 後面數字的意思

0 = 90CounterCLockwise and Vertical Flip (default) // 順時針右轉 90 度並垂直置中
1 = 90Clockwise // 順時針右轉 90 度
2 = 90CounterClockwise // 逆時針左轉 90 度
3 = 90Clockwise and Vertical Flip // 逆時針左轉 90 度並垂直置中

逆時針轉 180 度

ffmpeg -i foo bar -vf "transpose=2,transpose=2"

參考資料

rotation - Rotating videos with FFmpeg - Stack Overflow

gif 動畫圖連續重播到指定時間長度

ffmpeg -ignore_loop 0 -i foo.gif -t 10 bar.mp4

把 -t 後的 10 改成想要的秒數長度即可

參考資料

 

本站著作(不包含圖片、影音以及回應留言)係採用 Creative Commons 姓名標示-非商業性-相同方式分享 2.5 台灣 (中華民國) 授權條款授權