首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

ffmpeg和ffplay常用指令

编程知识
2024年08月06日 21:26

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 使用手册

From:https://www.cnblogs.com/best-doraemon/p/18346098
本文地址: http://www.shuzixingkong.net/article/859
0评论
提交 加载更多评论
其他文章 数据结构学习之树结构
前段时间刚好在学习机器学习中的决策树,想起多年前学习树这个数据结构的场景,刚好借此机会回归一下知识点。 树是一种非常常见的数据结构,它由节点(Node)和边(Edge)构成。它有如下的一些特征: 1. 根结点(Root Node):树有且只有一个根结点,它是树的顶端结点。 2. 结点(Node):每
爬虫简易说明
想必大家都了解爬虫,也就是爬取网页你所需要的信息 相比于网页繁多的爬虫教程,本篇主要将爬虫分为四个部分,以便你清楚,代码的功能以及使用,这四部分分别为 1.获取到源代码 2.根据网页中的标签特征,获取源代码你所需要的部分 3.想一下如何根据页面的逻辑将一系列的网页自动化抓取 4.保存数据在xlsx等
洛谷P5250 【深基17.例5】木材仓库
【深基17.例5】木材仓库 题目描述 博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过 100000 条的操作: 进货,格式1 Length:在仓库中放入一根长度为 Length(不超过
JavaWeb中的Tomcat,Servlet详解
JavaWeb JavaWeb技术主要包括服务器技术(后端),如Tomcat,Servlet,JSP等待,以及客户端技术(前端)如HTML,CSS,JavaScript等等 Web服务器 Web服务器主要负责处理客户端发出的HTTP请求,并做出相应回应 Web服务器:安装了服务器软件的计算机,只用于
JavaWeb中的Tomcat,Servlet详解 JavaWeb中的Tomcat,Servlet详解 JavaWeb中的Tomcat,Servlet详解
c#12 实验特性Interceptor如何使用的一个简单但完整的示例
一直有很多转载dotnet对Interceptor说明文档的,但鲜有说明Interceptor如何使用的,这里写一篇简单示例来展示一下 c# 12 实验特性Interceptor 是什么? 官方解释如下(其实简单说就是语言特性中内置的静态编织方式的aop功能,不同于其他il修改代码的方式,使用上得结
IntersectionObserver + scrollIntoView 实现电梯导航
电梯导航也被称为锚点导航,当点击锚点元素时,页面内相应标记的元素滚动到视口。而且页面内元素滚动时相应锚点也会高亮。电梯导航一般把锚点放在左右两侧,类似电梯一样。常见的电梯导航效果如下,比如一些官方文档中: 之前可能会用 getBoundingClientRect() 判断元素是否在视口中来实现类似效
IntersectionObserver + scrollIntoView 实现电梯导航 IntersectionObserver + scrollIntoView 实现电梯导航 IntersectionObserver + scrollIntoView 实现电梯导航
增强用户体验:2个功能强大的.NET控制台应用帮助库
前言 对于.NET开发者而言,构建控制台应用程序时,如何提升用户交互的流畅性和满意度,是一个持续探索与优化的话题。今天大姚给大家分享2个功能强大的.NET控制台应用帮助库,希望可以帮助大家能够快速的构建漂亮、强交互性、丰富功能的控制台应用程序。 Terminal.Gui Terminal.Gui是一
增强用户体验:2个功能强大的.NET控制台应用帮助库 增强用户体验:2个功能强大的.NET控制台应用帮助库 增强用户体验:2个功能强大的.NET控制台应用帮助库
给我5分钟,保证教会你在vue3中动态加载远程组件
前言 在一些特殊的场景中(比如低代码、减少小程序包体积、类似于APP的热更新),我们需要从服务端动态加载.vue文件,然后将动态加载的远程vue组件渲染到我们的项目中。今天这篇文章我将带你学会,在vue3中如何去动态加载远程组件。 欧阳写了一本开源电子书vue3编译原理揭秘,这本书初中级前端能看懂。
给我5分钟,保证教会你在vue3中动态加载远程组件 给我5分钟,保证教会你在vue3中动态加载远程组件 给我5分钟,保证教会你在vue3中动态加载远程组件