【FFmpeg学习笔记一】FFmpeg简介

Fmpeg简介

    • 一、FFmpeg简介
    • 二、FFmpeg函数库
    • 三、FFmpeg用例
    • 四、相关链接

一、FFmpeg简介

FFmpeg是一款自由软件,核心功能就是音视频编解码,其中的“FF”指的是“Fast Forward(快速前进)。FFmpeg作为MPlayer姊妹项目,在2000年由法布里斯·贝拉发起的。FFmpeg强大的编解码功能使得它应用广泛:
1、FFMPEG作为内核视频播放器

Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音...

2、FFMPEG作为内核的Directshow Filter:

ffdshow,lav filters...

3、FFMPEG作为内核的转码工具

ffmpeg,格式工厂...

二、FFmpeg函数库

FFmpeg官网 :下载源码编译。
FFmpeg编译版本:该网站中的FFMPEG分为3个版本:Static,Shared,Dev。前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。
Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。

1、avcodec:编解码库
2、avformat:格式封装
3、avfilter:滤镜特效处理
4、avdevice:各种设备的输入输出
5、avutil:公共库
6、postproc:后处理
7、swresample:音频采样数据格式转换
8、swscale:视频像素数据格式转换

【温馨提示1:其他版本下载】在这里插入图片描述
【温馨提示2:h264、h265源码下载】
h264源码下载
h265源码下载

三、FFmpeg用例

  1. 编码
//有损压缩
ffmpeg -s 1920x1080 -i input.yuv output.h265//无损压缩:lossless=1
ffmpeg -s 1920x1080 -pix_fmt yuv420p -r 30 -i input_1920x1080_30.yuv -c:v libx265 -preset ultrafast -x265-params lossless=1 output_1920x1080_30.mp4
  1. 解码
ffmpeg -i input.mp4 -vsync 0 -y output.yuv
  1. 转码
ffmpeg -i input.mp4 output.avi
  1. 解封装
ffmpeg -i example.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 example.h264
  1. 降采样
ffmpeg -s 1920x1080 -i input_1920x1080.yuv -vf scale=480:270:flags=lanczos,setsar=1:1 output_480x270.yuv -hide_banner
  1. 抽样
//从30fps抽样为10fps
ffmpeg -r 30 -i input_30.mp4  -c:v libx264 -x264-params qp=0 -r 10 output_10.mp4
  1. 截取
//yuv按帧数截取:-ss 0 -t 60
ffmpeg  -r 1 -s 1280x720 -i input.yuv -ss 0 -t 60 output_60.yuv
//mp4按帧数截取:
ffmpeg  -i input.mp4 -vf "select=between(n\,0\,59)" -y -acodec copy ./output.mp4
  1. 裁剪
    ffmpeg -i input.mp4 -vsync 0 -vf crop=1920:1080:0:0 output.yuv

  2. 缩放
    ffmpeg -s:v 1920x1080 -i example.yuv -vf scale=320:240 -c:v rawvideo -pix_fmt yuv420p example.yuv

  3. 加标签:
    ffmpeg -s 1920x1080 -pix_fmt yuv420p -i example.yuv -vf “pad=1920:1200:0:120:white,drawtext=fontfile=arial.ttf:fontsize=130:fontcolor=black:borderw=1:start_number=100:text=‘%{n}’:x=12:y=12” -an -vcodec libx264 -preset veryslow -x264-params crf=12:bframes=0:rc-lookahead=64 example.mp4

  4. 反转
    ffmpeg -i example.mp4 -filter_complex [0:v]reverse[v] -map [v] -preset superfast reversed.mp4

  5. 逆序播放
    ffmpeg -i input.mp4 -vf reverse reversed.mp4

  6. 空域拼接
    ffmpeg -i exam1.mp4 -i exam2.mp4 -i exam3.mp4 -lavfi hstack=inputs=3 output.mp4

  7. 时域拼接
    1、转码TS
    ffmpeg -i exam1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb exam1.ts
    2、串联TS:
    ffmpeg -i “concat:exam1.ts|exam2.ts” -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
    3、解码:
    ffmpeg -i output.mp4 -c:v rawvideo -pix_fmt yuv420p output.yuv

  8. 播放视频

ffplay test.avi
  1. 查看文件格式

查看帧信息

key_frame:是否是关键帧
pict_type:帧类型(I、B、P)
//TO DO
ffprobe -show_frames -select_streams v -of xml test15.mp4 >videoframes.info
  1. 从MP4中提取视频流到h265文件
ffmpeg -i input.mp4 -codec copy -bsf: hevc_mp4toannexb -f hevc out.h265

-i input.mp4: 是输入的MP4文件
-codec copy: 从mp4中拷贝
-bsf: hevc_mp4toannexb: 从mp4拷贝到annexB封装
-f hevc: 采用hevc格式
out.h265: 输出的文件

更多命令
更多命令
参数详解

四、相关链接

  1. FFmpeg官网
  2. ffmpeg已编译版本
  3. API文档
  4. WIKI
  5. h264源码
  6. h265源码
  7. 错误集锦
  8. 逆序播放-视频拼接
  9. 雷神博客
  10. ffmpeg论坛
  11. 罗索实验室


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部