--- tags: 實用工具 --- ###### tags: `實用工具` ###### 撰寫日期:2020/07/22 ###### 作者:Lycoris # 懶人剪影片法(使用終端機指令) {%hackmd BJrTq20hE %} ## 目錄 [TOC] ## 前言 當你錄了手遊影片想跟人~~炫耀~~ 分享,影片又只需要簡單的剪接+處理,懶得開剪輯軟體時,這篇就是你的好朋友。 推薦用 WSL ,檔案與 Win10 共用,不用開 Ubuntu 虛擬機,方便又快速。 ## 使用環境/工具 - Win10 + WSL - FFmpeg ## 指令 ### 1. **取片段** - 指令 需要參數:==輸入影片==、==起始時間==、==結束時間==、==輸出影片== ``` bash ffmpeg -i <輸入影片> -ss <起始時間> -to <結束時間> -acodec copy -vcodec copy <輸出影片> ``` - 實際範例:擷取影片 02:55 至 03:35 ``` bash ffmpeg -i input.mp4 -ss 00:02:55 -to 00:03:35 -acodec copy -vcodec copy output.mp4 ``` ### [2. **倍速、減速**](https://www.mobile01.com/topicdetail.php?f=510&t=4991078) - 指令 需要參數:==輸入影片==、==倍率倒數==、==倍率==、==輸出影片== ``` bash 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 為音軌兩倍速。可依需求調整成加速、減速。 ``` bash 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. **調整影片長寬比與畫質** - 指令 需要參數:==輸入影片==、==影片長寬比==、==位元速率==、==輸出影片== ``` bash ffmpeg -i <輸入影片> -s <影片長寬比> -vcodec libx264 -b <位元速率> -strict -2 <輸出影片> ``` - 實際範例:調整長寬比為720x960,位元速率為2400K ``` bash ffmpeg -i input.mp4 -s 720x960 -vcodec libx264 -b 2400000 -strict -2 output.mp4 ``` ### 4. **合併影片與聲音** - 指令 需要參數:==輸入影片==、==輸入音檔==、==輸出影片== ``` bash ffmpeg -i <輸入影片> -i <輸入音檔> <輸出影片> ``` - 實際範例:**_movie_** + **_sound_** = **_output_** ``` bash ffmpeg -i movie.mp4 -i sound.mp3 output.mp4 ``` ### [5. **取出影片聲音**](https://www.mobile01.com/topicdetail.php?f=510&t=5890064) - 指令 需要參數:==輸入影片==、==輸出音檔== ``` bash ffmpeg -i <輸入影片> -vn -acodec copy -preset ultrafast <輸出音檔> ``` - 實際範例:取出影片聲音為 wma 檔 ``` bash ffmpeg -i input.mp4 -vn -acodec copy -preset ultrafast output.wma ``` - 附註:每個影片的聲音檔案格式不同,常見的為==aac==、==m4a==、==wma==、==mp3==。若使用不正確的格式取出會使音檔變質,最明顯的特徵為取出的音檔長度與影片長度不相等。 ### [6. **圖片+聲音輸出成影片**](https://blog.csdn.net/StimmerLove/article/details/89405064) - 指令 需要參數:==輸入圖片==、==輸入音檔==、==影片長寬比==、==影片長度(秒)==、==輸出影片== ``` bash ffmpeg -r 15 -f image2 -loop 1 -i <輸入圖片> -i <輸入音檔> -s <影片長寬比> -pix_fmt yuvj420p -t <影片長度(秒)> -vcodec libx264 <輸出影片> ``` - 實際範例:合併為 1920x1080、長度60秒的影片 ``` bash 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秒的音效**](http://hk.uwenku.com/question/p-ygcptsrp-pc.html) - 指令 需要參數:==輸入影片==、==影片長-1==、==輸出影片== ``` bash 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秒影片的最後一秒 ``` bash 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. **切割影片畫面**](https://shipengliang.com/software-exp/ffmpeg-%E8%A3%81%E5%89%AA%E8%A7%86%E9%A2%91%E7%94%BB%E9%9D%A2.html) - 指令 需要參數:==輸入影片==、==保留寬度==、==保留高度==、==起始x座標==、==起始y座標==、==輸出影片== ``` bash ffmpeg -i <輸入影片> -vf crop=<保留寬度>:<保留高度>:<起始x座標>:<起始y座標> -threads 5 -preset ultrafast -strict -2 <輸出影片> ``` - 實際範例:將 1920x1080 的影片畫面切成剩左邊一半 ``` bash ffmpeg -i input.mp4 -vf crop=960:1080:0:0 -threads 5 -preset ultrafast -strict -2 output.mp4 ``` ### [9. **影片轉gif**](https://blog.csdn.net/lj402159806/article/details/54837637) - 指令 需要參數:==起始時間==、==結束時間==、==輸入影片==、==輸出長寬比==、==gif幀數==、==輸出gif== ``` bash ffmpeg -ss <起始時間> -t <結束時間> -i <輸入影片> -s <輸出長寬比> -r <gif幀數> <輸出gif> ``` - 實際範例:將第0至5秒的影片片段製成gif,gif大小為 150x150、幀數為15 ``` bash ffmpeg -ss 00:00:00 -t 00:00:05 -i input.mp4 -s 150x150 -r 15 output.gif ```