2020年4月29日 星期三

FFmpeg 分割合併影片

直接分割 (不重新編碼):

ffmpeg -ss 開始時間碼 -i 輸入檔 -to 結束時間碼 -c copy 輸出檔
ffmpeg -ss 00:02:03.311 -i input.mp4 -to 00:02:36.914 -c copy output.mp4

ffmpeg 並不會自動把時間點改到最近的 IDR 影格,所以指定的時間點若不是 IDR 則會發生播放問題,要避免此問題必須重新編碼影片。

分割並重新編碼:

ffmpeg -ss 開始時間碼 -i 輸入檔 -to 結束時間碼 -c:v libx264 -refs:v 4 -bf:v 5 -crf:v 18 -c:a libfdk_aac -vbr:a 4 輸出檔

分割並重新編碼 (無損輸出):

ffmpeg -ss 開始時間碼 -i 輸入檔 -to 結束時間碼 -c:v libx264 -refs:v 4 -bf:v 5 -qp:v 0 -c:a libfdk_aac -vbr:a 4 輸出檔

無損的檔案大小是 CRF 18 的數倍,但視覺上的差異並不大。

無損合併:

用 ffmpeg 合併影片比較麻煩,這邊以 mp4box 為例

mp4box -new 輸出檔 -add 輸入檔1 -add 輸入檔2

實例:

如果你要將一影片 Sample.mkv 分割為兩片段:
cut1: 00:02:03.311 - 00:02:36.914
cut2: 00:03:25.240 - 00:03:56.512
然後合併它們

你可以這麼做:

ffmpeg -ss 00:02:03.311 -i Sample.mkv -to 00:02:36.914 -c:v libx264 -refs:v 4 -bf:v 5 -crf:v 18 -c:a libfdk_aac -vbr:a 4 cut1.mp4

ffmpeg -ss 00:03:25.240 -i Sample.mkv -to 00:03:56.512 -c:v libx264 -refs:v 4 -bf:v 5 -crf:v 18 -c:a libfdk_aac -vbr:a 4 cut2.mp4

mp4box -new output.mp4 -add cut1.mp4 -add cut2.mp4

背景知識:

影片是由連續數個影格(frames)所組成
但為了節省資料量,並不是每一張影格都是完整的畫面
在播放時,那些影格必須要參考其他影格才能解碼出完整的畫面

而 IDR frame 也就是 keyframe
它是一張完整的影格 (I-frame),不需要參考其他影格就能解碼出完整的畫面
而其他影格 (例如 P-frames) 不會越過它去參考其它影格

所以你如果直接分割 (不重新編碼視訊)
你必須取 IDR 影格做為分割點
否則,分割片段的開頭或結尾的某些影格可能會找不到參考影格
導致播放問題 (破圖)

但問題是 IDR 影格的時間點不一定是你想要的
如果你想取準確地分割時間與避免播放問題
你只能重新轉換視訊來輸出新的 GOP

如果你需要重新轉換視訊
目前壓縮率最高且已普及的視訊編碼格式為 H.264 又名 AVC
H.264 可以達到無損,不過檔案太大,所以一般都是用有損
如果你編碼設定得當可以達到極低損失與不會太大的檔案

在 x264 編碼器上
通常只要用 CRF 18 即可達到很低損失
如果你要無損視訊輸出你必須使用 QP 0

引用自:https://www.mobile01.com/topicdetail.php?f=510&t=4246163

Winff--MP4 MV 轉出 MP3 聲音

  1. 安裝軟體 Winff
    sudo apt-get install winff
  2. 安裝編碼 ffmpeg 和 libavcodec-extra-52
    sudo apt-get install ffmpeg libavcodec-extra-52
  3. 用 Winff 轉檔

2020年4月26日 星期日

OpenShot 影片剪輯工具

$ sudo apt install openshot

Qwinff GUI of ffmpeg

$ sudo apt install qwinff
啟動會有錯誤
在 home/user/ 找不到 constants.xml 和 presets.xml 檔
https://github.com/qwinff/qwinff 的 Code 下載
copy到 home/user/

2020年4月14日 星期二

kazam 螢幕錄影程式

$ sudo add-apt-repository ppa:sylvain-pineau/kazam
$ sudo apt update
$ sudo apt install kazam
為了錄到鍵盤及滑鼠敲擊
$ sudo apt-get install python3-xlib python3-cairo