ffmpeg和ffplay常用指令
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常用指令的更多相关文章
- 1.ffmpeg、ffplay、ffprobe命令使用
1.学前知识 1.1视频码率值 码率公式: 码率(kbps)=文件大小(KB)*8/时间(秒) 所以码率和视频文件大小成正比的,不过码率超过一定值后,人眼是看不出效果的. 接下来,我们便先来学习ffm ...
- linux常用指令
整理下来的linux常用指令 mount [-t 文件系统] 设备文件名 挂载点挂载命令,一般用于在挂载ISO,或者其他比如U盘等设备时使用,[-t iso9660]为固定格式,可写可不写,非必写项. ...
- 走进AngularJs(二) ng模板中常用指令的使用方式
通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...
- mac 终端 常用指令
开始正式研究ios 应用开发,由于是从C开始学起,所以学习下常用的mac终端指令,方便后续常用操作. mac 终端 常用指令: 1.ls指令 用途:列出文件 常用参数 -w 以简洁的形式列出所有文件和 ...
- ImageMagick常用指令详解
Imagemagick常用指令 (ImageMagick--蓝天白云) (ImageMagick官网) (其他比较有价值的IM参考) (图片自动旋转的前端实现方案) convert 转换图像格式和大小 ...
- [AngularJS] 常用指令
常用指令 ng-hide指令,用于控制部分HTML元素可见(ng-hide="false")和不可见状态(ng-hide="true"),如下: <div ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- linux下svn常用指令
windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...
- [转载]linux下svn常用指令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
- ARM汇编常用指令
RAM汇编常用指令有MOV B BL LDR STR
随机推荐
- Angular 集成 StreamSaver
应用场景: 实现目标: 在网页端实现大文件(文件大小 >= 2 G) 断点续传 实际方案: 发送多次请求, 每次请求一部分文件数据, 然后通过续写将文件数据全部写入. 难点: 无法实现文件续写, ...
- springboot增加@EnableAsync注解,否则方法中的@Async注解没有生效
springboot增加@EnableAsync注解,否则方法中的@Async注解没有生效. @EnableFeignClients(basePackages = {"com.test&qu ...
- Python遥感影像叠加分析:基于一景数据提取另一数据
本文介绍基于Python中GDAL模块,实现基于一景栅格影像,对另一景栅格影像的像元数值加以叠加提取的方法. 本文期望实现的需求为:现有一景表示6种不同植被类型的.tif格式栅格数据,以及另一 ...
- WAV音频文件按秒切片段
wav音频文件按秒切片段 import wave def split_wav_by_seconds(input_file, output_file, start_second, end_second) ...
- .NET项目中使用HtmlSanitizer防止XSS攻击
.NET项目中使用HtmlSanitizer防止XSS攻击 前言 最近博客也是上线了留言板功能,但是没有做审核(太懒了),然后在留言的时候可以输入<script>alert('xss')& ...
- 【换源】git命令行迁移仓库
直接git clone的话,查看本地分支,会只有默认主分支,可能是master,也可以能是设置的. 查看所有分支 git branch -a * master remotes/origin/HEAD ...
- PyTorch程序练习(二):循环神经网络的PyTorch实现
一.RNN实现 结构原理 代码实现 import torch import torch.nn as nn class RNN(nn.Module): def __init__(self, input_ ...
- 实现Quartz.NET的HTTP作业调度
Quartz.NET作为一个开源的作业调度库,广泛应用于.NET应用程序中,以实现复杂的定时任务,本次记录利用Quartz.NET实现HTTP作业调度,通过自定义HTTP作业,实现对外部API的定时调 ...
- vulhub - INFOSEC PREP: OSCP
vulhub - INFOSEC PREP: OSCP 信息收集 nmap 192.168.157.0/24 nmap -sT --min-rate 10000 -p- 192.168.157.162 ...
- 六.黑马程序员-eclipse的使用和快捷键
1.Eclipse的概述 A: 是一个集成开发工具,专门针对java的 B: Eclipse 免费的 开源 C: MyEclipse 收费的 具体良好的插件扩展功能,针对插件收费2.Eclipse的使 ...