FFmpeg介绍和使用
安装FFmpeg
在Mac上通过brew安装FFmpeg
brew tap homebrew-ffmpeg/ffmpeg
brew options homebrew-ffmpeg/ffmpeg/ffmpeg
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-chromaprint --with-decklink --with-fdk-aac --with-game-music-emu --with-libbluray --with-libbs2b --with-libcaca --with-libgsm --with-libmodplug --with-librsvg --with-libsoxr --with-libssh --with-libvidstab --with-libvmaf --with-libxml2 --with-opencore-amr --with-openh264 --with-openjpeg --with-openssl --with-openssl@1.1 --with-rav1e --with-rtmpdump --with-rubberband --with-speex --with-srt --with-tesseract --with-two-lame --with-webp --with-xvid --with-zeromq --with-zimg --HEAD
验证是否安装成功
ffmpeg -version
使用FFmpeg
获取视频信息
ffmpeg -i test.mp4
将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
可把当前目录下的图片(名字如:image1.jpg、image2.jpg 等)合并成video.mpg
将视频分解成图片
ffmpeg -i video.mpg image%d.jpg
从视频中抽取声音
视频截图
package main
import (
"bytes"
"fmt"
"io/ioutil"
"os/exec"
)
func main() {
filename := "http://www.xxxxxxx.com/yyyy.mp4"
width := 640
height := 360
cmd := exec.Command("ffmpeg", "-i", filename, "-vframes", "10", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-")
var buffer bytes.Buffer
cmd.Stdout = &buffer
if cmd.Run() != nil {
panic("could not generate frame")
}
ioutil.WriteFile("./frame.jpg", []byte(buffer.String()), 0666)
}
视频添加图片水印
ffmpeg -i input.mp4 -vf "movie=水印图片.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4
-i:表示输入
-vf:滤镜相关,视频裁剪,水印等等操作都需要它完成
overlay:水印参数
main_w-overlay_w-10:水印在x轴的位置,也可以写成x=main_w-overlay_w-10
main_h-overlay_h-10:水印在y轴的位置
或者也可以使用命令 ffmpeg -i input.mp4 -i logo.png -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' output.mp4
视频添加文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=simhei.ttf: text='abc-watermark':x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" output.mp4
在视频左上角添加一条白色字体的文字水印