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

<html>

<head>
    <title>顯示與隱藏的控制</title>

    <!-- 2018.08.26 Created by Chris Yang-->
    <!-- 此段程式展示如何顯示與隱藏 HTML 區塊-->
    <script type="text/javascript">
        
        // 定義一個函式,會傳入頁碼(vPage), 只有指定頁會顯示 
        function ShoworNot(vPage) {
            //取得四個區塊,並準備做切換
            var DB1 = document.getElementById("DivBlock1");
            var DB2 = document.getElementById("DivBlock2");
            var DB3 = document.getElementById("DivBlock3");
            var DB4 = document.getElementById("DivBlock4");
            //如果是第一頁,只有第一頁的 display 是 block(顯示),其他都是 none
            if (vPage == 1) {
                DB1.style.display = 'block';
                DB2.style.display = 'none';
                DB3.style.display = 'none';
                DB4.style.display = 'none';
            }
            //依此類推
            if (vPage == 2) {
                DB1.style.display = 'none';
                DB2.style.display = 'block';
                DB3.style.display = 'none';
                DB4.style.display = 'none';
            }
            if (vPage == 3) {
                DB1.style.display = 'none';
                DB2.style.display = 'none';
                DB3.style.display = 'block';
                DB4.style.display = 'none';
            }
            if (vPage == 4) {
                DB1.style.display = 'none';
                DB2.style.display = 'none';
                DB3.style.display = 'none';
                DB4.style.display = 'block';
            }
        }
    </script>
</head>

<body>

    <!-- Block 1 -->
    <!-- id 就是我們要控制的 DIV 區塊,後面的 style 控制他是否顯示-->
    <div id="DivBlock1" style="display:block;">
        I'm Block 1
        <hr>
        <!-- 當點擊按鈕的時候呼叫上面所準備好的函式,只顯示該區塊-->
        <!-- 如果第一個區塊不想往前跳到最後一個區塊,把第一行的 onclick 的屬性拿掉即可 -->
        <input type="button" onclick="ShoworNot(4);" value="切換第四個區塊" />
        <input type="button" onclick="ShoworNot(2);" value="切換第二個區塊" />
    </div>
    <!-- 下面就都一樣 -->
    <div id="DivBlock2" style="display:none;">
        第二個區塊,可以往前,往後
        <hr>
        <input type="button" onclick="ShoworNot(1);" value="切換第一個區塊" />
        <input type="button" onclick="ShoworNot(3);" value="切換第三個區塊" />
    </div>

    <div id="DivBlock3" style="display:none;">
        第三個區塊
        <hr>
        <input type="button" onclick="ShoworNot(2);" value="切換第二個區塊" />
        <input type="button" onclick="ShoworNot(4);" value="切換第四個區塊" />
    </div>

    <div id="DivBlock4" style="display:none;">
        我是最後一個區塊
        <hr>
        <input type="button" onclick="ShoworNot(3);" value="切換第三個區塊" />
        <input type="button" onclick="ShoworNot(1);" value="切換第一個區塊" />
    </div>

</body>

<!-- That's all, enjoy it!-->
</html>
切換 DIV

控制 HTML 區塊的顯示與否

 

參考範例:

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

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

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

[jQ]用 jQuery 做廣告 – 仿 Yahoo 切換式 N 格圖片廣告

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

 

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

get-childitem | % { rename-item $_ "Top Secret - $_"}
PowerShell command

 

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

所以看起來就把他改成:

get-childitem | % { rename-item $_ "$_.jpg"}

 

就是把目錄下 所有的檔案名稱最後都加上 .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 行的地方,有一段定義:

                    String regionFilename = String.Format("{0}[{1}][{2}]{3}",
                                                          filename,
                                                          regionIndex.ToString(),
                                                          region.Label,
                                                          renderItem.Extension);
產生檔名的字串

 

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

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

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

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

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

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

The package manager for Windows

Chocolatey – Software Management Automation

 

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

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

安裝頁面說明在此

iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex

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

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

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

choco install git

輕鬆安裝啦!