ffmpeg基础——安装,编译,使用

ffmpeg下载安装

源码下载地址: 源码下载

下载后解压,执行编译命令:

./configure --enable-shared --prefix=/monchickey/ffmpeg --disable-yasm
make
make install

由于缺少其他库导致安装失败,用apt-get install安装需要的插件即可。

ffmpeg基础

ffmpeg -version			//版本
ffmpeg 	-hide_banner	//只显示有用信息

容器
视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。一般来说,视频文件的后缀名反映了它的容器格式。
常见的容器格式有以下几种:mp3,mp4,aac,ac3,eac3,avi,wav等
指令:ffmpeg -formats -hide_banner

$ ffmpeg -formats -hide_banner
File formats:
 D. = Demuxing supported		
 .E = Muxing supported

muxer 是合并将视频文件、音频文件和字幕文件合并为某一个视频格式。
demuxer 解封装用的

编码格式:
视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。
常见的编码格式:H.264,H.265,aac,mp3,
指令:ffmpeg -hide_banner -codecs

$ ffmpeg -hide_banner -codecs
Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression

编码器
encoders是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式视频/音频的编码和解码。
指令:ffmpeg -hide_banner -encoders

$ ffmpeg -hide_banner -encoders
Encoders:
 V..... = Video
 A..... = Audio
 S..... = Subtitle
 .F.... = Frame-level multithreading
 ..S... = Slice-level multithreading
 ...X.. = Codec is experimental
 ....B. = Supports draw_horiz_band
 .....D = Supports direct rendering method 1

同样的,既然有encoders,就有decoders

FFmpeg 的使用格式:

$ ffmpeg {1} {2} -i {3} {4} {5}

上面命令中,五个部分的参数依次如下:
全局参数
输入文件参数
输入文件
输出文件参数
输出文件

参数太多的时候,为了便于查看,ffmpeg 命令可以写成多行

$ ffmpeg \
[全局参数] \
[输入文件参数] \
-i [输入文件] \
[输出文件参数] \
[输出文件]

常用命令行参数:
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-y:不经过确认,输出时直接覆盖同名文件。

ffmpeg常见操作

查看文件信息

$ ffmpeg.exe -hide_banner -i Horizon_UHD_TrueHD_DD+.mp4
  Metadata:	
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42dby1isom
    creation_time   : 2016-11-19T01:52:12.000000Z
  Duration: 00:02:08.32, start: 0.000000, bitrate: 40920 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160, 37740 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default)
    Metadata:
      creation_time   : 2016-11-19T01:52:12.000000Z
      handler_name    : video handler
    Stream #0:1(und): Audio: truehd (mlpa / 0x61706C6D), 48000 Hz, 7.1, s32 (24 bit), 6641 kb/s (default)
    Metadata:
      creation_time   : 2016-11-19T01:52:12.000000Z
      handler_name    : sound handler
    Stream #0:2(und): Audio: eac3 (ec-3 / 0x332D6365), 48000 Hz, 5.1(side), fltp, 640 kb/s
    Metadata:
      creation_time   : 2016-11-19T01:52:12.000000Z
      handler_name    : sound handler
    Side data:
      audio service type: main

Metadata: (容器格式)
一共三个stream,一个Video,两个Audio
Video格式: h264 YUV格式存储 分辨率3840x2160 帧率24fps
Audio 1格式: truehd 48K采样率 7.1声道 24bit
Audio 2格式: eac3 48K采样率 5.1声道

转换编码格式

$ ffmpeg -i [input.file] -c:v libx265 output.mp4

转换视频编码格式为H265

转换容器格式

ffmpeg -i input.mp4 -c copy output.avi

转换容器为avi格式,音频和视频编码格式不变

调整码率
调整码率(transrating)指的是,改变编码的比特率,一般用来将视频文件的体积变小。
下面的例子指定码率最小为964K,最大为3856K,缓冲区大小为 2000K。

$ ffmpeg \
-i input.mp4 \
-minrate 964K -maxrate 3856K -bufsize 2000K \
output.mp4

改变分辨率(transsizing)
将文件视频分辨率从 1080p 转为 480p

$ ffmpeg \
-i input.mp4 \
-vf scale=480:-1 \
output.mp4

提取音频
文件音频编码格式为aac,提取出来

$ ffmpeg \
-i input.mp4 \
-vn -c:a copy \
output.aac

添加音轨
添加音轨(muxing)指的是,将外部音频加入视频,比如添加背景音乐或旁白。

$ ffmpeg \
-i input.aac -i input.mp4 \
output.mp4

裁剪
裁剪(cutting)指的是,截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)。

$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]

为音频添加封面
有些视频网站只允许上传视频文件。如果要上传音频文件,必须为音频添加封面,将其转为视频,然后上传。
下面命令可以将音频文件,转为带封面的视频文件。

$ ffmpeg \
-loop 1 \
-i cover.jpg -i input.mp3 \
-c:v libx264 -c:a aac -b:a 192k -shortest \
output.mp4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值