Try   HackMD
tags: 實用工具
撰寫日期:2020/07/22
作者:Lycoris

懶人剪影片法(使用終端機指令)

目錄

前言

當你錄了手遊影片想跟人炫耀 分享,影片又只需要簡單的剪接+處理,懶得開剪輯軟體時,這篇就是你的好朋友。

推薦用 WSL ,檔案與 Win10 共用,不用開 Ubuntu 虛擬機,方便又快速。

使用環境/工具

  • Win10 + WSL
  • FFmpeg

指令

1. 取片段

  • 指令
    需要參數:輸入影片起始時間結束時間輸出影片
    ​​​​ffmpeg -i <輸入影片> -ss <起始時間> -to <結束時間> -acodec copy -vcodec copy <輸出影片>
    
  • 實際範例:擷取影片 02:55 至 03:35
    ​​​​ffmpeg -i input.mp4 -ss 00:02:55 -to 00:03:35 -acodec copy -vcodec copy output.mp4
    

2. 倍速、減速

  • 指令
    需要參數:輸入影片倍率倒數倍率輸出影片
    ​​​​ffmpeg -i <輸入影片> -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" -strict -2  <輸出影片>
    
  • 實際範例:影片、音軌皆二倍速
    其中數值 0.5 為影片兩倍速;數值 2.0 為音軌兩倍速。可依需求調整成加速、減速。
    ​​​​ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" -strict -2  output.mp4
    

3. 調整影片長寬比與畫質

  • 指令
    需要參數:輸入影片影片長寬比位元速率輸出影片
    ​​​​ffmpeg -i <輸入影片> -s <影片長寬比> -vcodec libx264 -b <位元速率> -strict -2  <輸出影片>
    
  • 實際範例:調整長寬比為720x960,位元速率為2400K
    ​​​​ffmpeg -i input.mp4 -s 720x960 -vcodec libx264 -b 2400000 -strict -2  output.mp4
    

4. 合併影片與聲音

  • 指令
    需要參數:輸入影片輸入音檔輸出影片
    ​​​​ffmpeg -i <輸入影片> -i <輸入音檔> <輸出影片>
    
  • 實際範例:movie + sound = output
    ​​​​ffmpeg -i movie.mp4 -i sound.mp3 output.mp4
    

5. 取出影片聲音

  • 指令
    需要參數:輸入影片輸出音檔
    ​​​​ffmpeg -i <輸入影片> -vn -acodec copy -preset ultrafast <輸出音檔>
    
  • 實際範例:取出影片聲音為 wma 檔
    ​​​​ffmpeg -i input.mp4 -vn -acodec copy -preset ultrafast output.wma
    
  • 附註:每個影片的聲音檔案格式不同,常見的為aacm4awmamp3。若使用不正確的格式取出會使音檔變質,最明顯的特徵為取出的音檔長度與影片長度不相等。

6. 圖片+聲音輸出成影片

  • 指令
    需要參數:輸入圖片輸入音檔影片長寬比影片長度(秒)輸出影片
    ​​​​ffmpeg -r 15 -f image2 -loop 1 -i <輸入圖片> -i <輸入音檔> -s <影片長寬比> -pix_fmt yuvj420p -t <影片長度(秒)> -vcodec libx264 <輸出影片>
    
  • 實際範例:合併為 1920x1080、長度60秒的影片
    ​​​​ffmpeg -r 15 -f image2 -loop 1 -i picture.png -i sound.mp3 -s 1920x1080 -pix_fmt yuvj420p -t 60 -vcodec libx264 output.mp4
    

7. 影片淡出最後1秒的音效

  • 指令
    需要參數:輸入影片影片長-1輸出影片
    ​​​​ffmpeg -i <輸入影片> \ 
    ​​​​    -filter_complex \ 
    ​​​​     "[0:v]fade=t=out:st=<影片長-1>:d=1[v]; \ 
    ​​​​     [0:a]afade=t=out:st=<影片長-1>:d=1[a]" \ 
    ​​​​    -map "[v]" -map "[a]" <輸出影片> 
    
  • 實際範例:淡出長度60秒影片的最後一秒
    ​​​​ffmpeg -i input.mp4 \ 
    ​​​​    -filter_complex \ 
    ​​​​     "[0:v]fade=t=out:st=59:d=1[v]; \ 
    ​​​​     [0:a]afade=t=out:st=59:d=1[a]" \ 
    ​​​​    -map "[v]" -map "[a]" output.mp4 
    
  • 附註:還沒試過影片淡出最後2秒音效的參數,待別人測試

8. 切割影片畫面

  • 指令
    需要參數:輸入影片保留寬度保留高度起始x座標起始y座標輸出影片
    ​​​​ffmpeg -i <輸入影片> -vf crop=<保留寬度>:<保留高度>:<起始x座標>:<起始y座標> -threads 5 -preset ultrafast -strict -2 <輸出影片>
    
  • 實際範例:將 1920x1080 的影片畫面切成剩左邊一半
    ​​​​ffmpeg -i input.mp4 -vf crop=960:1080:0:0 -threads 5 -preset ultrafast -strict -2 output.mp4
    

9. 影片轉gif

  • 指令
    需要參數:起始時間結束時間輸入影片輸出長寬比gif幀數輸出gif
    ​​​​ffmpeg -ss <起始時間> -t <結束時間> -i <輸入影片> -s <輸出長寬比> -r <gif幀數> <輸出gif>
    
  • 實際範例:將第0至5秒的影片片段製成gif,gif大小為 150x150、幀數為15
    ​​​​ffmpeg -ss 00:00:00 -t 00:00:05 -i input.mp4 -s 150x150 -r 15 output.gif