Programming

看了自己 NAS 內的每天容量報告一個多月,幾個超大檔案越看越礙眼,想說動手用 FFMPEG 把早期製作的影片檔案重新壓縮,但是怎麼壓都有問題,也解決了幾個問題,跟大家分享一下幾個參數使用心得和疑問。

最後我用的指令檔:

.\ffmpeg -i “測試.avi” -max_muxing_queue_size 8192  -ss 00:20 -t 00:30 -c:v libx264 -b 24000k  -preset veryslow -minrate 24000k  -tune film -crf 5 -c:a mp3  crf15_b24m.mkv

  1. .\ffmpeg :因為是使用 powershell ,所以下指令前面加了 .\
  2. -i “測試.avi” : 指定輸入檔名,如果有中文字,需要用雙引號括起來。
  3. -max_muxing_queue_size 8192 :因為原始檔案很大的關係(24GB)或是我原始檔直接抓100m區域網路(NAS內的檔案)的速度不夠快,所以一直會出現 Too many packets buffered for output stream 0:0  ,我解決方法是把這個參數放大到 819200 才可以順利轉檔。
  4. -ss 00:20 :檔案開始轉檔的位置,另外還有更精確的方法,可以查一下手冊
  5. -t 00:30 :要剪多長的時間,一開始我一直搞錯,以為這兩個參數是剪輯 20 ~ 30 秒 總共十秒,後來注意看才發現是從20秒處開始剪下30秒長度的影片。
  6. -c:v libx264 : -c:v 是簡寫,libx264 是指定轉碼格式。 (mp4 常用 libx264)
  7. -b 24000k  :bitrate 24M ,簡單說此數值越高,畫質越好,可以參考原始檔的 bitrate。
  8. -preset veryslow : 轉碼速度越慢,畫質越好,從 ultrafast 到 placebo,但是 placebo 效益太低。
  9. -minrate 24000k  :最低畫質,相對應還有 -maxrate
  10. -tune film :影片最佳化,如果是照片合籍,可以用 stillimage
  11. -crf 5 :壓縮比從 1 到 51 , 18 算是肉眼看不出的程度,因為我一直轉出有橫紋,就索性調到 5
  12. -c:a mp3 :音效指定轉檔格式,也可用 copy 就不轉音訊。
  13. crf15_b24m.mkv:輸出檔名, 副檔名部份可以讓 ffmpeg 自動判斷要轉哪種格式。

 

此問題已經解決,使用 -deinterlace

 

可以上這個頁面直接看到效果

http://js.do/chrixtal/divshowornot

[pastacode lang=”markup” manual=”%3Chtml%3E%0A%0A%3Chead%3E%0A%20%20%20%20%3Ctitle%3E%E9%A1%AF%E7%A4%BA%E8%88%87%E9%9A%B1%E8%97%8F%E7%9A%84%E6%8E%A7%E5%88%B6%3C%2Ftitle%3E%0A%0A%20%20%20%20%3C!–%202018.08.26%20Created%20by%20Chris%20Yang–%3E%0A%20%20%20%20%3C!–%20%E6%AD%A4%E6%AE%B5%E7%A8%8B%E5%BC%8F%E5%B1%95%E7%A4%BA%E5%A6%82%E4%BD%95%E9%A1%AF%E7%A4%BA%E8%88%87%E9%9A%B1%E8%97%8F%20HTML%20%E5%8D%80%E5%A1%8A–%3E%0A%20%20%20%20%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20%E5%AE%9A%E7%BE%A9%E4%B8%80%E5%80%8B%E5%87%BD%E5%BC%8F%EF%BC%8C%E6%9C%83%E5%82%B3%E5%85%A5%E9%A0%81%E7%A2%BC(vPage)%2C%20%E5%8F%AA%E6%9C%89%E6%8C%87%E5%AE%9A%E9%A0%81%E6%9C%83%E9%A1%AF%E7%A4%BA%20%0A%20%20%20%20%20%20%20%20function%20ShoworNot(vPage)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E5%8F%96%E5%BE%97%E5%9B%9B%E5%80%8B%E5%8D%80%E5%A1%8A%EF%BC%8C%E4%B8%A6%E6%BA%96%E5%82%99%E5%81%9A%E5%88%87%E6%8F%9B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20DB1%20%3D%20document.getElementById(%22DivBlock1%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20DB2%20%3D%20document.getElementById(%22DivBlock2%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20DB3%20%3D%20document.getElementById(%22DivBlock3%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20DB4%20%3D%20document.getElementById(%22DivBlock4%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E5%A6%82%E6%9E%9C%E6%98%AF%E7%AC%AC%E4%B8%80%E9%A0%81%EF%BC%8C%E5%8F%AA%E6%9C%89%E7%AC%AC%E4%B8%80%E9%A0%81%E7%9A%84%20display%20%E6%98%AF%20block(%E9%A1%AF%E7%A4%BA)%EF%BC%8C%E5%85%B6%E4%BB%96%E9%83%BD%E6%98%AF%20none%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(vPage%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB1.style.display%20%3D%20’block’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB2.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB3.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB4.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E4%BE%9D%E6%AD%A4%E9%A1%9E%E6%8E%A8%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(vPage%20%3D%3D%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB1.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB2.style.display%20%3D%20’block’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB3.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB4.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(vPage%20%3D%3D%203)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB1.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB2.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB3.style.display%20%3D%20’block’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB4.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(vPage%20%3D%3D%204)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB1.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB2.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB3.style.display%20%3D%20’none’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20DB4.style.display%20%3D%20’block’%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%3C%2Fscript%3E%0A%3C%2Fhead%3E%0A%0A%3Cbody%3E%0A%0A%20%20%20%20%3C!–%20Block%201%20–%3E%0A%20%20%20%20%3C!–%20id%20%E5%B0%B1%E6%98%AF%E6%88%91%E5%80%91%E8%A6%81%E6%8E%A7%E5%88%B6%E7%9A%84%20DIV%20%E5%8D%80%E5%A1%8A%EF%BC%8C%E5%BE%8C%E9%9D%A2%E7%9A%84%20style%20%E6%8E%A7%E5%88%B6%E4%BB%96%E6%98%AF%E5%90%A6%E9%A1%AF%E7%A4%BA–%3E%0A%20%20%20%20%3Cdiv%20id%3D%22DivBlock1%22%20style%3D%22display%3Ablock%3B%22%3E%0A%20%20%20%20%20%20%20%20I’m%20Block%201%0A%20%20%20%20%20%20%20%20%3Chr%3E%0A%20%20%20%20%20%20%20%20%3C!–%20%E7%95%B6%E9%BB%9E%E6%93%8A%E6%8C%89%E9%88%95%E7%9A%84%E6%99%82%E5%80%99%E5%91%BC%E5%8F%AB%E4%B8%8A%E9%9D%A2%E6%89%80%E6%BA%96%E5%82%99%E5%A5%BD%E7%9A%84%E5%87%BD%E5%BC%8F%EF%BC%8C%E5%8F%AA%E9%A1%AF%E7%A4%BA%E8%A9%B2%E5%8D%80%E5%A1%8A–%3E%0A%20%20%20%20%20%20%20%20%3C!–%20%E5%A6%82%E6%9E%9C%E7%AC%AC%E4%B8%80%E5%80%8B%E5%8D%80%E5%A1%8A%E4%B8%8D%E6%83%B3%E5%BE%80%E5%89%8D%E8%B7%B3%E5%88%B0%E6%9C%80%E5%BE%8C%E4%B8%80%E5%80%8B%E5%8D%80%E5%A1%8A%EF%BC%8C%E6%8A%8A%E7%AC%AC%E4%B8%80%E8%A1%8C%E7%9A%84%20onclick%20%E7%9A%84%E5%B1%AC%E6%80%A7%E6%8B%BF%E6%8E%89%E5%8D%B3%E5%8F%AF%20–%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(4)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E5%9B%9B%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(2)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%BA%8C%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C!–%20%E4%B8%8B%E9%9D%A2%E5%B0%B1%E9%83%BD%E4%B8%80%E6%A8%A3%20–%3E%0A%20%20%20%20%3Cdiv%20id%3D%22DivBlock2%22%20style%3D%22display%3Anone%3B%22%3E%0A%20%20%20%20%20%20%20%20%E7%AC%AC%E4%BA%8C%E5%80%8B%E5%8D%80%E5%A1%8A%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%BE%80%E5%89%8D%EF%BC%8C%E5%BE%80%E5%BE%8C%0A%20%20%20%20%20%20%20%20%3Chr%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(1)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%B8%80%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(3)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%B8%89%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%0A%20%20%20%20%3Cdiv%20id%3D%22DivBlock3%22%20style%3D%22display%3Anone%3B%22%3E%0A%20%20%20%20%20%20%20%20%E7%AC%AC%E4%B8%89%E5%80%8B%E5%8D%80%E5%A1%8A%0A%20%20%20%20%20%20%20%20%3Chr%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(2)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%BA%8C%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(4)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E5%9B%9B%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%0A%20%20%20%20%3Cdiv%20id%3D%22DivBlock4%22%20style%3D%22display%3Anone%3B%22%3E%0A%20%20%20%20%20%20%20%20%E6%88%91%E6%98%AF%E6%9C%80%E5%BE%8C%E4%B8%80%E5%80%8B%E5%8D%80%E5%A1%8A%0A%20%20%20%20%20%20%20%20%3Chr%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(3)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%B8%89%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22button%22%20onclick%3D%22ShoworNot(1)%3B%22%20value%3D%22%E5%88%87%E6%8F%9B%E7%AC%AC%E4%B8%80%E5%80%8B%E5%8D%80%E5%A1%8A%22%20%2F%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%0A%3C%2Fbody%3E%0A%0A%3C!–%20That’s%20all%2C%20enjoy%20it!–%3E%0A%3C%2Fhtml%3E%0A%0A” message=”切換 DIV” highlight=”http://js.do/chrixtal/divshowornot” provider=”manual”/]

控制 HTML 區塊的顯示與否

 

參考範例:

http://www.bkjia.com/webzh/881978.html

http://jessen163.iteye.com/blog/1349975

https://www.webdesigns.com.tw/jquery_tab.asp

http://abgne.tw/jquery/apply-jquery/jquery-yahoo-carousel-animate-ad.html

網路上找到的都是 *.png 變成 *.jpg 這類的方法,但對於不特定副檔名 就沒轍了,我又不想下載軟體,再翻了一下,找到下面方法:

 

打開 Windows 的 powershell  (不知道怎麼打開的,這裡不是你該來的地方) ,輸入:

[pastacode lang=”markup” manual=”get-childitem%20%7C%20%25%20%7B%20rename-item%20%24_%20%22Top%20Secret%20-%20%24_%22%7D” message=”PowerShell command” highlight=”” provider=”manual”/]

 

這樣會在所有的檔名前面加上 “Top Secret – ”

所以看起來就把他改成:

[pastacode lang=”markup” manual=”get-childitem%20%7C%20%25%20%7B%20rename-item%20%24_%20%22%24_.jpg%22%7D” message=”” highlight=”” provider=”manual”/]

 

就是把目錄下 所有的檔案名稱最後都加上 .jpg

雖然前面的格式很亂,但我已經可以用 FastStone 的 imageviewer 再去做進一步的修訂了。

Vegas pro 怎麼批次轉檔,算是月經文,常常有人問,因為他原生功能沒有這個項目,不像是 Camtasia Studio 裡面內建。

但事實上透過設定,還是可以批次轉檔,輸出,只是要把檔案都合併在一起,或是用匯入的方式,讓他變成一個檔案,接著在使用 Script 把他轉檔出來。

雖然我們在設定 Region 的時候會給他命名,但是批次轉檔的時候卻不只會產生順序 1, 2, 3…,事實上只要修改原始的批次檔就可以做到

從 Vegas pro 13 到 15 都是同一個檔案,不過檔案抬頭是寫 2006,所以早在十一年前就已經寫好了這隻 Batch Render.cs

目錄在 C:\Program Files\VEGAS\VEGAS Pro 15.0\Script Menu  (依照你安裝目錄不同)

檔名就是 Batch Render.cs

 

其中 約 129 行的地方,有一段定義:

[pastacode lang=”cpp” manual=”%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20String%20regionFilename%20%3D%20String.Format(%22%7B0%7D%5B%7B1%7D%5D%5B%7B2%7D%5D%7B3%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20filename%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20regionIndex.ToString()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20region.Label%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20renderItem.Extension)%3B%0A” message=”產生檔名的字串” highlight=”” provider=”manual”/]

 

上面那個是改過的,你原來的是只有 1, 2 參數的,目前我手上都是改過的檔案,沒有原始擋了,反正置換成上面那樣就對了,轉出的檔名就會把我們設定的 Region name 也帶出來啦!

軟體日新月異,好久沒打開 VS Code 這個免費工具,發現已經無法使用了,重新下載新版進入後,發現功能表 -> 檢視 中有 Git 選項(可能原來也有吧)

想到前幾天在看 Laravel 5.4 的東西,就來試試看。

不過 VS Code 這時候出現一個警告

好奇看到這個 Chocolatey ,怎麼出現了吃的東西 = = ,資訊這個領域真的已經不再像是以前那種可以全面掌握的時代了。

看了一下文件,首頁就說明了,

The package manager for Windows

Chocolatey – Software Management Automation

 

好吧,那就先來弄個巧克力味吧!

安裝的方式也蠻現代的(我這麼老了嗎?) 直接打開 power shell 敲入下面這行就可以了

安裝頁面說明在此

[pastacode lang=”bash” manual=”iwr%20https%3A%2F%2Fchocolatey.org%2Finstall.ps1%20-UseBasicParsing%20%7C%20iex” message=”” highlight=”” provider=”manual”/]

頁面上也警告了可能會遇到執行權限的問題,不單單是把 Power Shell 用 admin 開啟就可以解決了,不過頁面上也提供了微軟官方的解決說明

安裝後出現了一堆紅字,不過最後還是出現安裝成功!

然後有了巧克力味的 Win10 就可以用

choco install git

輕鬆安裝啦!