一,ffmpeg的安裝
請參見:
https://www.cnblogs.com/architectforest/p/12807683.html
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,ffmpeg的使用例子: 音頻/視頻的提取/合並
1,提取去除音頻的視頻流(靜音視頻)
#-an :disable audio:關閉音頻流
#-vcodec:指定視頻解碼器:值為copy時,復制視頻流
[root@blog 1]# ffmpeg -v quiet -i 8_9f6fa300bacded7b.mp4 -y -vcodec copy -an /data/dev/think_file/html/8_mute.mp4
2,提取音頻
#-vn: disable video ,關閉視頻流
#-acodec:指定音頻解碼器:值為copy時,復制音頻流
[root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -y -vn -acodec copy /data/dev/think_file/html/8.m4a
說明:注意格式:從mp4中直接提取mp3格式可能會報錯,
提取成m4a格式沒有問題
3,把音頻文件和靜音的視頻文件合並成一個正常的視頻文件
#-c codec :指定codec name
#如果值是copy,表示拷貝所有的流
[root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -i /data/dev/think_file/html/8.m4a -c copy /data/dev/think_file/html/8_m.mp4
三,ffmpeg的使用例子:合並兩個視頻文件
1,合並多個視頻文件
查看兩個文件的寬/高/長度
6_1351031b24838211.mp4的時長
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 6_1351031b24838211.mp4 120.086633
6_1351031b24838211.mp4的寬度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 6_1351031b24838211.mp4 640
6_1351031b24838211.mp4的高度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 6_1351031b24838211.mp4 360
5_d3958808f0a5da07.mp4的高度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 5_d3958808f0a5da07.mp4 360
5_d3958808f0a5da07.mp4的寬度
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 5_d3958808f0a5da07.mp4 640
5_d3958808f0a5da07.mp4的時長
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 5_d3958808f0a5da07.mp4 215.281733
合並:
生成視頻列表文件
[root@blog 1]# more con653.txt
內容
file '6_1351031b24838211.mp4' file '5_d3958808f0a5da07.mp4'
連接兩段視頻
[root@blog 1]# ffmpeg -f concat -i con653.txt -c copy /data/dev/think_file/html/653.mp4
查看新生成視頻的時長:
[root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration /data/dev/think_file/html/653.mp4 335.409733
注意:合並之前,要保持兩個視頻文件的寬高相同,不同width height會報錯
四,ffmpeg的使用例子:截取視頻片斷作為預覽視頻
查看原視頻文件的大小:
[root@blog 1]# ll -h 8_9f6fa300bacded7b.mp4 -rw-r--r-- 1 nginx nginx 7.4M Mar 29 03:47 8_9f6fa300bacded7b.mp4
#-ss:開始時間
#-t:持續的秒數
#-c:a copy:copy視頻
#-s:指定畫面的寬高
[root@blog 1]# ffmpeg -ss 00:00:30 -t 20 -i 8_9f6fa300bacded7b.mp4 -c:a copy -s 320x180 /data/dev/think_file/html/8_pre2.mp4
查看預覽視頻文件的大小:
[root@blog 1]# ll -h /data/dev/think_file/html/8_pre2.mp4 -rw-r--r-- 1 root root 1.3M May 1 17:50 /data/dev/think_file/html/8_pre2.mp4
五,ffmpeg使用例子:crop裁剪視頻:
看一個例子:我們裁剪掉視頻兩側的黑邊
原視頻的截圖:
#crop=w=100:h=100:x=12:y=34
w:指定寬度
h:指定高度
x:指定左側的pos
y:指定頂部的pos
[root@blog html]# ffmpeg -i 8_rpi2.mp4 -vf crop=360:360:140:0 -c:a copy 360.mp4
查看生成的截圖:
六,查看ffmpeg的版本
[root@blog html]# ffmpeg -version ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8 (GCC)
七,查看centos的版本
[root@blog html]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)