前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >六个常用的FFmpeg命令

六个常用的FFmpeg命令

作者头像
用户1324186
发布2019-07-31 16:03:05
4.6K0
发布2019-07-31 16:03:05
举报
文章被收录于专栏:媒矿工厂

本文为媒矿工厂编译的技术文章

原标题:Six FFmpeg Commands You Can’t Live Without

作者:Jan Ozer

翻译整理:甘文耀

引言

FFmpeg是领先的多媒体框架,本帖将展示六个常用的FFmpeg命令。FFmpeg的官网下载地址为:https://ffmpeg.org/download.html。

1、基础命令

代码语言:javascript
复制
ffmpeg -i input.mp4 output.mp4

命令解释:

  1. ffmpeg 执行ffmpeg程序,如果你没有将ffmpeg加入环境变量,那么你需要输入ffmpeg的完整路径。
  2. -i input.mp4 指定输入文件,FFmpeg支持多数容器格式,包括MP4,.ts,MOV,AVI,Y4M,MKV等。
  3. output.mp4 输出文件

如果你没有指定音频或者视频的编码译码器,那么FFmpeg会根据容器格式使用默认的编码译码器及其参数。例如,输入一个1080p,容器格式为MP4的文件,FFmpeg会使用H.264视频编码译码器(码率为9~10 Mbps),AAC音频编码译码器(码率约为130Kbps),250帧的关键帧间隔,High profile版本,present参数选择为medium的x264。

2、不重新编码就能转换容器格式

可能你正在使用的某个应用只支持MOV容器格式,而你的源文件的容器格式为MP4。你可以使用Adobe Premiere Pro完成上述格式转换,但是Premiere Pro在转换时一定会重新编码,因此很耗时。而使用下面这条FFmpeg命令可以改变容器格式却不需要重新编码:

代码语言:javascript
复制
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mov

命令解释(上述已解释过的命令就不再重述,下同):

  1. -c:v copy 指定视频的编码译码器为copy,这告诉FFmpeg直接把压缩后的视频流复制到新的文件而不重新编码。
  2. -c:a copy 指定音频的编码译码器为copy,这告诉FFmpeg直接把压缩后的音频流复制到新的文件而不重新编码。

3、转换.ts文件的容器格式

对于.ts扩展名的MPEG-2容器格式的文件,你需要增加一项命令在传输流文件中处理MPEG-2/4 ADTS头:

代码语言:javascript
复制
ffmpeg -i input.ts -bsf:a aac_adtstoasc -c:v copy -c:a copy outputfromts.mp4

命令解释:

  1. -bsf:a aac_adtstoasc 处理ADTS转换。较新版本的FFmpeg会自动增加这条命令。

4、不重新编码就能裁剪视频

你可能需要裁剪视频中的部分内容,使用Adobe Premiere Pro来裁剪视频需要渲染以及编码,因此很耗时。而使用下面这条FFmpeg命令可以快速裁剪视频:

代码语言:javascript
复制
ffmpeg -ss 00:00:05 -i input.mp4 -t 00:00:03 -c:v copy -c:a copy excerpt.mp4

命令解释:

  1. -ss 00:00:05 从视频第5秒开始裁剪。
  2. -t 00:00:05 裁剪的视频时长为5秒,如果你不设置这项命令,视频会从-ss设置的开始时间一直裁剪到视频末尾。

当编码译码器设为copy时,FFmpeg会根据关键帧进行查找,因此设置的时间不会完全精准,在多数应用场景下这不会有问题,但是如果你需要精准的时间设置,你可能需要其他视频编辑器。

5、转换为原始格式

一些工具只支持原始格式(如YUV或者Y4M),或者当使用新的编码译码器如AV1,而多数工具不支持直接输入AV1编码的文件,因此你需要将你的文件转换为原始格式:

代码语言:javascript
复制
ffmpeg -i input.mp4 -pix_fmt yuv420p -vsync 1 output.y4m

命令解释:

  1. -pix_fmt yuv420p 指定格式为YUV420p。
  2. -vsync 1 这条命令告诉FFmpeg在输出文件中保持输入文件中音频和视频的同步关系。

6、转换格式并调整视频分辨率

将文件转换为YUV/Y4M的同时,如果需要调整视频分辨率,可以使用这条命令:

代码语言:javascript
复制
ffmpeg -i input.mp4 -s 1920x1080 -sws_flags lanczos -pix_fmt yuv420p -vsync 1 output.y4m

命令解释:

  1. -s 1920x1080 把视频分辨率调整为1920x1080。
  2. -sws_flags lanczos 分辨率缩放方法使用Lanczos。

总结

以上就是常用的六条FFmpeg命令,如果你经常测试视频编码和质量指标,你会发现命令行和FFmpeg非常重要,两者的组合简化并加速了测试和分析工作的流程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档