分類: 應用程式

FFmpeg剪裁(trim)影片指令

Linux、Mac應用程式

騎車出遊時我幾乎都會戴GoPro在帽子上充當行車記錄器。回家後常常我只想要擷取完整影片的其中一部份,這時候開Premiere等軟體trim完再存檔就感覺有點大材小用了。而且通常trim完存檔時剪輯軟體又包含了轉檔的步驟,這就需要一些等待以及會讓電腦起飛的時間。

利用FFmpeg這個CLI的小工具我們可以只單純做剪裁(trim),而且由於不包含轉檔的動作,所以執行速度很快,電腦也不會起飛。

 

兩種用法

給定 [起始時間] 與 [結束時間] 擷取

ffmpeg -i input.mp4 -ss 01:19:27 -to 01:30:51 -c:v copy -c:a copy output.mp4

給定 [起始時間] 與 [持續時間] 擷取

ffmpeg -i input.mp4 -ss 00:01:10 -t 00:01:05 -c:v copy -c:a copy output.mp4

設定Apache以用戶憑證(Client CA)的方式進行訪客驗證

Linux、Mac應用程式

在使用Apache管理網頁服務時,有時會遇到希望可以設定某些網頁服務是只有經過授權的人才能存取

常見的做法是可以利用Apache跳出提示輸入帳密提示框後,成功登入者才能進行下一步訪問

今天我們要來講講第二種做法:

發憑證給授權的使用者,並且在每次訪客訪問網站時驗證訪客提交的憑證是否為我方發行無變造過的

確認無誤才準放行進行下一步訪問,如果沒有憑證或憑證沒有通過驗證者都一律拒於門外

 
使用用戶憑證(Client CA)的方式進行訪客驗證就好像使用SSH Key登入SSH的概念,不用再多背一組帳密

而且因為是使用憑證,他的安全性遠高於帳密

想想假設今天一個網站使用帳密進行驗證,積極一點的駭客會使用暴力破解或字典檔想設法去猜中帳密

但如果今天使用憑證進行驗證,是不是就算再積極也無從下手了呢

 

步驟

要設定Apache以用戶憑證(Client CA)的方式進行訪客驗證有三個步驟要做:

  • 產生用戶憑證檔與憑證私鑰
  • 轉換成pfx格式
  • 修改Apache的設定檔強制驗證訪客提供的憑證

以下我就拿自己的phpMyAdmin資料庫後台網頁進行示範,設定只有持有合格的用戶憑證者才能存取

FFmpeg串接多個影片

Linux、Mac應用程式

用攝影機拍攝影片時,影片檔案大小超過4GB會被自動切成不同檔案(因應FAT32的單一檔案大小上限),所以拿到電腦上觀看時就有了串接影片的需求

但是就只是純粹串切影片而已,開Ae、Pr等等軟體實在是太大材小用了,這時FFmpeg就會是一個不錯的選擇

 
首先,把要串接的影片放到同一資料夾,並且創建一個clips.txt檔案

clips.txt裡面依序列出要串接的檔案

file 'first.mp4'
file 'second.mp4'
...

最後,只要執行以下指令就可以得到名為output.mp4串接好的檔案了

ffmpeg -f concat -i clips.txt -c copy output.mp4

啟用Apache的反向代理(reverse proxy)將請求導至其它port

Linux、Mac應用程式

假設今天某公司提供了三個web服務,分別是服務1、服務2、服務3,這間公司希望把這三個服務架在同一台伺服器上,但網頁的port只有80(或https的443)能對外啊,有沒有辦法先讓請求統一發至port 80或443後再轉發給對應服務的port呢?有的,這就是反向代理(reverse proxy)的概念。


(反向代理示意圖)

我們先在伺服器架一個反向代理的服務在port 80上(本篇以Apache為例),然後設定轉發規則將往後收到的請求根據這個規則轉發至對應的服務。對應的服務處理完後再丟還給反向代理,反向代理再將結果回傳給使用者,完成一次循環。

更改phpMyAdmin在Apache託管的預設port

Linux、Mac應用程式

有時為了安全起見,我們希望將phpMyAdmin這種存取資料庫的窗口不要使用網頁伺服器常用的port 80

這樣有個好處,就是能在server前面的防火牆建立filter rule讓該port只有特定ip能存取

 

為了達成目的,我們修改ports.conf讓Apache除了監聽port 80,也監聽準備拿來放phpMyAdmin的port 81

用自己熟悉的編輯器打開/etc/apache2/ports.conf,在Listen 80下面再加一行

Listen 81

 

存檔,切換目錄到/etc/apache2/sites-available/下新增phpmyadmin.conf

把連到port 81時要對應到哪個資料夾的規則寫在裡面

<VirtualHost *:81>
    DocumentRoot /usr/share/phpmyadmin/
</VirtualHost>