FFmpeg常见的音视频处理方法

众所周知在音视频的处理方面,FFmpeg是一款非常强大的自由软件,它是一个开源免费跨平台的视频和音频流软件工具,它提供了录制、转换以及流化音视频的完整解决方案。目前各大云厂商在音视频处理的底层能力也是基于开源ffmpeg各自再做优化与改进来实现音视频相关处理的,本文简单介绍下几种比较实用的ffmpeg常见命令方法。

首先了解下FFmpeg由几个组件组成:

  • 命令行应用程序
    • ffmpeg:用于对视频文档或音频档案转换格式
    • ffplay:一个简单的播放器,基于SDL与FFmpeg库
    • ffprobe:用于显示媒体文件的信息Mediainfo
  • 函数库
    • libswresample:用于音频重采样和格式转换等功能
    • libavcodec:包含全部FFmpeg音频/视讯编解码库
    • libavformat:包含demuxers和muxer库
    • libavutil:包含一些工具库
    • libpostproc:对于视讯做前处理的库
    • libswscale:对于影像作缩放的库
    • libavfilter:包含多媒体处理常用的滤镜功能

FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异 这里不再赘述,使用前建议先参考参数及编解码器的叙述。此外参数明细可用ffmpeg -h显示;编解码器名称等明细可用ffmpeg -formats显示。一些常用的参数也可以通过网上查找相关资料获取。

1. 直播推流:将本地mp4文件推流到直播域名

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://livepush.domain/live/streamName

2. 拉流转推:将一路在线直播流转推到另外一个推流地址上

ffmpeg -i '拉流地址' -acodec copy -vcodec copy -f flv '推流地址' 

3. 拉直播流保存本地文件

ffmpeg -i rtmp://liveplay.domain/live/streamName -c copy dump.flv

4. 文件格式转换

ffmpeg -i in.mov -vcodec copy -acodec copyout.mp4  // mov --> mp4
ffmpeg -i in.flv -vcodec copy -acodec copyout.mp4  // flv --> mp4

ffmpeg -i in.gif -vf scale=420:-2,format=yuv420p out.mp4  // gif --> mp4

ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3   // wav --> mp3

5. 旋转视频,例如将视频顺时针旋转90度:

ffmpeg -i in.mp4 -vf rotate=PI/2 out.mp4   

6. 视频剪辑,当需要截取一个长视频的其中某一段内容,比如从一个视频的第10秒开始,截取6秒的内容,也就是10~16秒的内容,输入一个out.mp4文件:

ffmpeg -i in.mp4 -ss 00:00:10 -t 00:00:06 -acodec aac -vcodec h264 -strict -2 out.mp4 
  //•	-ss 指定裁剪的开始时间,精确到秒   •	-t 被裁剪后的时长

7. 视频缩放,当需要把一个高分辨率的视频处理成一个低分辨率的视频,以达到减小视频体积的目的。举个例子:把一个源视频为1080*1920的视频缩小到720*960 :

ffmpeg -i in.mp4 -vf scale=720:960 -acodec aac -vcodec h264 out.mp4  // 1080*1920-->720*960

8. 调节视频帧率,比如将源视频25fps调整到15fps :

ffmpeg -i in.mp4 -r 15 out.mp4

9. 视频添加水印

ffmpeg -i out.mp4 -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" watermask.mp4
   // -vf中的 movie 指定logo位置。scale 指定 logo 大小。overlay 指定 logo 摆放的位置

10. 提取音频流

ffmpeg -i input.mp4 -acodec copy -vn out.aac

11. 提取视频流

 ffmpeg -i input.mp4 -vcodec copy -an out.h264

12. 音视频合并

 ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4

ffmpeg相当强大,以上只是介绍了部分比较常见实用的命令供大家借鉴,在音视频处理上使用ffmpeg可以实现很多功能,一些常见参数说明放在下面附录,完全的说明可以查询ffmpeg的官方资料:http://ffmpeg.org/ffmpeg-filters.html 。

附录:

主要参数

  • -i设置输入文件名。
  • -f设置输出格式。
  • -y若输出文件已存在时则覆盖文件。
  • -fs超过指定的文件大小时则退出转换。
  • -ss从指定时间开始转换。
  • -title设置标题。
  • -timestamp设置时间戳。
  • -vsync增减Frame使影音同步。

图像参数

  • -b设置图像流量,默认为200Kbit/秒。
  • -r设置帧率值,默认为25。
  • -s设置画面的宽与高。
  • -aspect设置画面的比例。
  • -vn不处理图像,于仅针对声音做处理时使用。
  • -vcodec设置图像图像编解码器,未设置时则使用与输入文件相同之编解码器。

声音参数

  • -ab设置的每channel流量。
  • -ar设置采样率。
  • -ac设置声音的Channel数。
  • -acodec设置声音编解码器,未设置时与图像相同,使用与输入文件相同之编解码器。
  • -an不处理声音,于仅针对图像做处理时使用。
  • -vol设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值