FFmpeg 常见用法

1. 基本命令结构

ffmpeg [global_options] -i input_file [input_options] output_file [output_options]

2. 将其它格式图片转换为 YUV420p

ffmpeg -i input.jpg -pix_fmt yuv420p output.yuv
  • -i input.jpg: 指定输入文件 input.jpg
  • -pix_fmt yuv420p: 指定输出文件的像素格式为 YUV420p。
  • output.yuv: 指定输出文件名为 output.yuv

3. 将视频帧提取并保存为 YUV420p 图片

ffmpeg -i input.mp4 -vf "select=eq(n\,100)" -pix_fmt yuv420p -vsync vfr frame_100.yuv
  • -i input.mp4: 指定输入视频文件 input.mp4
  • -vf "select=eq(n\,100)": 使用滤镜选取第 100 帧。
  • -pix_fmt yuv420p: 指定输出文件的像素格式为 YUV420p。
  • -vsync vfr: 使用可变帧率模式。
  • frame_100.yuv: 指定输出文件名为 frame_100.yuv

4. 将 YUV420p 图片转换为其他格式

ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv output.png
  • -s 1920x1080: 指定输入文件的分辨率。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -i input.yuv: 指定输入文件 input.yuv
  • output.png: 指定输出文件名为 output.png

5. 从视频中提取所有帧并保存为 YUV420p 图片

ffmpeg -i input.mp4 -vf "fps=1" -pix_fmt yuv420p frame_%04d.yuv
  • -i input.mp4: 指定输入视频文件 input.mp4
  • -vf "fps=1": 每秒提取一帧。
  • -pix_fmt yuv420p: 指定输出文件的像素格式为 YUV420p。
  • frame_%04d.yuv: 指定输出文件名格式(如 frame_0001.yuv, frame_0002.yuv)。

6. 将 YUV420p 图片制作成视频

ffmpeg -f rawvideo -pix_fmt yuv420p -s 1920x1080 -r 30 -i frame_%04d.yuv -c:v libx264 output.mp4
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -s 1920x1080: 指定输入文件的分辨率。
  • -r 30: 指定帧率为 30 fps。
  • -i frame_%04d.yuv: 指定输入文件名格式。
  • -c:v libx264: 指定视频编解码器为 H.264。
  • output.mp4: 指定输出文件名为 output.mp4

7. 调整 YUV420p 图片的分辨率

将 YUV420p 图片从 1920x1080 缩放到 1280x720:

ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf scale=1280:720 -pix_fmt yuv420p output.yuv
  • -s 1920x1080: 指定输入文件的分辨率。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -i input.yuv: 指定输入文件 input.yuv
  • -vf scale=1280:720: 使用缩放滤镜将分辨率调整为 1280x720。
  • output.yuv: 指定输出文件名为 output.yuv

8. 裁剪 YUV420p 图片

ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf "crop=1280:720" -pix_fmt yuv420p output.yuv
  • -s 1920x1080: 指定输入文件的分辨率。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -i input.yuv: 指定输入文件 input.yuv
  • -vf "crop=1280:720": 使用裁剪滤镜裁剪到 1280x720 的区域。
  • output.yuv: 指定输出文件名为 output.yuv

FFplay 常见用法

1. 基本命令结构

ffplay [options] input_file

2. 播放 YUV420p 图片

指定分辨率和像素格式:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • input.yuv: 指定输入文件 input.yuv

3. 缩放 YUV420p 图片

将 YUV420p 图片缩放到 1366x768:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf scale=1366:768 input.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • -vf scale=1366:768: 使用缩放滤镜将分辨率调整为 1366x768。
  • input.yuv: 指定输入文件 input.yuv

4. 循环播放 YUV420p 图片

ffplay -loop 0 -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv
  • -loop 0: 无限循环播放输入文件。
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • input.yuv: 指定输入文件 input.yuv

5. 播放 YUV420p 图片序列

播放以 frame_0001.yuv, frame_0002.yuv 等命名的图片序列:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -i frame_%04d.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • -i frame_%04d.yuv: 指定输入文件名格式。

6. 调整播放窗口大小

将播放窗口调整为 800x600:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -window_size 800x600 input.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • `-video

_size 1920x1080`: 指定输入文件的分辨率。

  • -window_size 800x600: 指定播放窗口的大小。
  • input.yuv: 指定输入文件 input.yuv

FFmpeg 和 FFplay 的高级用法

1. 在 FFmpeg 中使用滤镜处理 YUV420p 图片

添加水印

在 YUV420p 图片中添加 PNG 格式的水印:

ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -i watermark.png -filter_complex "overlay=10:10" -pix_fmt yuv420p output.yuv
  • -s 1920x1080: 指定输入文件的分辨率。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -i input.yuv: 指定输入文件 input.yuv
  • -i watermark.png: 指定水印图片 watermark.png
  • -filter_complex "overlay=10:10": 使用复杂滤镜,在坐标 (10,10) 处添加水印。
  • output.yuv: 指定输出文件名为 output.yuv

调整亮度和对比度

调整 YUV420p 图片的亮度和对比度:

ffmpeg -s 1920x1080 -pix_fmt yuv420p -i input.yuv -vf eq=brightness=0.06:contrast=1.5 -pix_fmt yuv420p output.yuv
  • -s 1920x1080: 指定输入文件的分辨率。
  • -pix_fmt yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -i input.yuv: 指定输入文件 input.yuv
  • -vf eq=brightness=0.06:contrast=1.5: 使用 eq 滤镜调整亮度和对比度。
  • output.yuv: 指定输出文件名为 output.yuv

2. 在 FFplay 中使用滤镜播放 YUV420p 图片

调整亮度和对比度

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf eq=brightness=0.06:contrast=1.5 input.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • -vf eq=brightness=0.06:contrast=1.5: 使用 eq 滤镜调整亮度和对比度。
  • input.yuv: 指定输入文件 input.yuv

添加字幕

在播放 YUV420p 图片时添加字幕(字幕文件为 subtitles.srt):

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf subtitles=subtitles.srt input.yuv
  • -f rawvideo: 指定输入文件格式为原始视频。
  • -pixel_format yuv420p: 指定输入文件的像素格式为 YUV420p。
  • -video_size 1920x1080: 指定输入文件的分辨率。
  • -vf subtitles=subtitles.srt: 使用 subtitles 滤镜添加字幕。
  • input.yuv: 指定输入文件 input.yuv

常见问题及解决方法

1. 无法播放 YUV420p 图片

确保指定了正确的分辨率和像素格式:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 input.yuv

2. 图像显示不全

使用 -vf scale 选项调整图像大小以适应屏幕分辨率:

ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 -vf scale=1366:768 input.yuv

3. 视频或图片质量低

调整视频或图片的比特率或使用更高质量的编码器:

ffmpeg -i input.mp4 -b:v 2000k output.mp4

官方文档

FFmpeg 官方文档

FFplay 使用手册

ffmpeg和ffplay常用指令的更多相关文章

  1. 1.ffmpeg、ffplay、ffprobe命令使用

    1.学前知识 1.1视频码率值 码率公式: 码率(kbps)=文件大小(KB)*8/时间(秒) 所以码率和视频文件大小成正比的,不过码率超过一定值后,人眼是看不出效果的. 接下来,我们便先来学习ffm ...

  2. linux常用指令

    整理下来的linux常用指令 mount [-t 文件系统] 设备文件名 挂载点挂载命令,一般用于在挂载ISO,或者其他比如U盘等设备时使用,[-t iso9660]为固定格式,可写可不写,非必写项. ...

  3. 走进AngularJs(二) ng模板中常用指令的使用方式

    通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...

  4. mac 终端 常用指令

    开始正式研究ios 应用开发,由于是从C开始学起,所以学习下常用的mac终端指令,方便后续常用操作. mac 终端 常用指令: 1.ls指令 用途:列出文件 常用参数 -w 以简洁的形式列出所有文件和 ...

  5. ImageMagick常用指令详解

    Imagemagick常用指令 (ImageMagick--蓝天白云) (ImageMagick官网) (其他比较有价值的IM参考) (图片自动旋转的前端实现方案) convert 转换图像格式和大小 ...

  6. [AngularJS] 常用指令

    常用指令 ng-hide指令,用于控制部分HTML元素可见(ng-hide="false")和不可见状态(ng-hide="true"),如下: <div ...

  7. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  8. linux下svn常用指令

    windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...

  9. [转载]linux下svn常用指令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  10. ARM汇编常用指令

    RAM汇编常用指令有MOV B BL LDR  STR

随机推荐

  1. linux命令查看内存命令free -h whereis locate find查找命令

    linux命令查看内存命令free -h  whereis locate find查找命令 1.free -h root@hz-auto-eureka-test-03:/usr/local/tomca ...

  2. FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流

    ​RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架,可用于RTMP直播和RTSP直播,其升级版还支持SRT直播(腾讯视频云就采用SRT协议).RTMP Streamer支持的视频编 ...

  3. Django项目实现分页返回,结合forloop实现编号递增

    需要导入Paginator包 from django.core.paginator import Paginator 实现步骤: 需要设置每页大小 需要获取每页的页码, 查询对应的数据,提供给Pagi ...

  4. python 使用pandas修改数据到excel,报“SettingwithCopyWarning A value is trying to be set on a copy of a slice from a DataFrame”的解决方法

    场景: 通过pandas模块,将测试数据回写到excel,测试数据有写到excel文件,但控制台输出警告信息如下 警告: SettingwithCopyWarning A value is tryin ...

  5. spring与设计模式之四适配器模式

    一.定义 适配器模式-或者称为转接口模式,变压器模式.通过适配,可以让原来提供特定功能的对象完成另外一个标准的功能. 所以,所谓的适配应该可以这样称呼:让某些类/接口适配/转换某个标准/功能. 适配器 ...

  6. 《HelloGitHub》第 99 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...

  7. 中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码

    前言 之前分享中台 Admin.Core 的模块代码生成器,陆续也结合群友们的反馈,完善了一些功能和模板上的优化,而本篇将基于此代码生成器生成一个通用代码生成器模块的基本代码 后续再在此代码的基础上进 ...

  8. require模块化 AMD和CMD

    在CommonJS中,有一个全局性方法require(),用于加载模块.假定有一个数学模块math.js,就可以像下面这样加载. 1 var math = require('math'); 然后,就可 ...

  9. Python潮流周刊的优惠券和精美电子书(EPUB、PDF、Markdown)

    Python潮流周刊从 2023.05.13 连载至今,本周即将发布第 60 期,这意味着我们又要达成一个小小的里程碑啦! 每周坚持做分享,周复一周,这对自己的精力和意志是一项不小的挑战.于是,为了让 ...

  10. MathType选项灰色无法点击或者word无法粘贴,治本解决方案

    问题描述: mathtype安装过后,word中会出现mathtype的选项,但是这时mathtype中的选项是虚的,无法点击,而且此时word无法粘贴内容. 解决步骤: 1.打开word选项,点击加 ...