快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → FFmpeg笔记-基本使用

FFmpeg笔记-基本使用

时间:2020-02-11 17:28:15人气:作者:快盘下载我要评论

FFmpeg是目前最牛逼的开源跨平台音视频处理工具。

FFmpeg笔记-基本使用

准备知识

我不是音视频编解码出身的,对于这一块非常的不了解,导致在学习FFmpeg的时候云里雾里的,所以学习之前最好看些资料对音视频编解码有点认识。

[总结]FFMPEG视音频编解码零基础学习方法 - CSDN博客 [总结]视音频编解码技术零基础学习方法 - CSDN博客 视频格式那么多,MP4/RMVB/MKV/AVI 等,这些视频格式与编码压缩标准 mpeg4,H.264.H.265 等有什么关系? - 知乎 各种音视频编解码学习详解 - CSDN博客

安装

Windows和MacOS用户可以从Builds - Zeranoe FFmpeg下载编译好的FFmpeg,解压加入环境变量PATH即可使用。

同时安装包我上传到百度云中,还有一些测试用的视频:
链接: https://pan.baidu.com/s/1nwLh4hF 密码: v7yt

播放视频,FFplay

学习FFmpeg免不了要看效果,而windows的自带播放器又垃圾得一匹,而且我们会需要看视频的元数据,看他的编码,用一般的这播放器,能看但是不是很方便。其实FFmpeg自带了一个播放器FFplay!

FFplay是结合FFmpeg和SDL实现的一个简易的跨平台播放器。使用起来特别简单:

ffplay [选项] ['输入文件']

而且控制台会打印出视频的各种信息,对于我们查看视频转换结果非常有帮助。

FFplay具体文档:

ffplay Documentation FFplay使用指南 ffplay的快捷键以及选项

获取视频信息,FFprobe

FFplay命令中会打印出视频的元数据,那如果我们只是想获取这些数据而不想播放视频呢?比如在程序中我们想获取视频的时长,要用什么命令?用FFprobe命令。

ffprobe [选项] ['输入文件']

看输出一定觉得很熟悉,因为和FFplay打印出的信息一模一样:

FFmpeg

我们还可以使用一些参数:

-v quiet:不打印日志,这样默认的输出就不会显示了,就不会干扰我们想要输出的信息-print_format json:用JSON格式打印出信息。还支持xml,csv,flat,ini格式-show_format:打印出输入的格式信息-show_streams:打印出每个流的信息

默认的输出是比较简略的,我们可以使用-show_format-show_streams打印出我们想要的详细信息,比如:

ffprobe -v quiet -show_format -print_format json resBCSPA039_pre.mp4

Uploading file...

然后我们程序读取解析json,获取duration字段就是视频的时长。

视频操作,FFmpeg

ffmpeg命令的语法:

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

ffmepg支持多个输入源(文件,管道,网络流,采集设备),通过-i指定输入。ffmpeg支持多个输出,命令行中所有无法被解析为参数的字段都会被作为输出的url。

参数一般作用于且只作用于下一个指定的文件,所以参数的位置是非常重要的。所以全局生效的参数要在最前面。

ffmpeg命令完整的说明参考:

ffmpeg Documentation ffmpeg参数中文详细解释

ffmpeg的参数太多了,我们还是通过常用命令来学习会比较好。

ffmpeg例子

分离音视频

ffmpeg -i input_file -vcodec copy -an output_file_video  //只输出视频
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分输出音频

参数解释:

-i:指定输入文件-vcodec:指定视频编码器,这里指定copy是一个特殊值,表示复制输入的视频流到输出不做更改-an:关闭音频输出-vn:关闭视频输出

视频转码

ffmpeg -i input_file output_file

这是最简单的视频转码命令,ffmpeg会从input的内容推测格式,从output_file的后缀名推测格式,然后进行转码输出。

来看一个我在工作中接触的比较复杂的视频转码命令:

ffmpeg -i "#src#" -y -s 1920x1080 -vcodec libx264 -c:a libvo_aacenc -b:a 48k -ar 44100 -ac 2 -qscale 4 -f #targetFmt# -movflags faststart -map 0:v:0 -map 0:a? "#destDir#/1080p/#fileNameNoEx#.mp4"

参数解释:

-y:覆盖输出文件-s 1920x1080:设置帧的大小,也就是视频分辨率,格式为WxH-vcodec libx264:设置视频编码器,-codec:v libx264是另外一种写法-c:a libvo_aacenc:设置音频编码器-b:a 48k:设置音频的比特率-ar 44100:设置音频采样率为44100-ac 2:设置声道数-f #targetFmt#:设定输出的格式。如果不指定,则会输入文件从内容中推测,输出文件通过后缀名推测。-movflags faststart:把MOV/MP4文件的索引信息放到文件前面以支持边下边播-map 0:v:0:选择输入文件的第一个视频流输出-map 0:a?:选择输入文件的音频流输出,如果没有不报错qscale

相关文章

  • 利用ffmpeg将一个视频分割为多个视频片段

    利用ffmpeg将一个视频分割为多个视频片段,因为个人的一些需求,需要一个视频文件肯太大,需要分割为多个视频多段上传,所以就找各种方法,基本都是需要下载软件,但是我实在不想下载软件,就去寻找相关python代码,结果找了许久,还是没找到有用的的,最后才找到一个有效的方法,推荐给大家。截取视频中1:00开始,到2:00结束的视频片段,视频文件路径名为video.mp4,输出文件路径和名为cut1.mp4。ok了,到这里安装完成,在bin文件里面空白处,右键,点击在终端中打开。按照自己对应的系统下载压缩包就好...
  • Linux开发_CentOS7.4服务器安装NFS、NGINX服务器,ffmpeg、Qt环境

    Linux开发_CentOS7.4服务器安装NFS、NGINX服务器,ffmpeg、Qt环境,环境介绍:采用的是华为云的ECS弹性云服务器–镜像安装的CentOS7.4 64位 -----是服务器版,非桌面版哦。...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。