FFmpeg音视频学习(一)—— FFmpge常用命令

FFmpeg基本介绍

FFmpeg是一个开源多媒体框架,可以跨平台运行。

目录及作用:
在这里插入图片描述
libavcodec 提供了一系列编码器的实现。
libavdevice 提供了访问捕获设备和回放设备的接口。
libavfilter 音频的后期处理,提供各种音视频过滤器。
libavformat 对多媒体格式的解析与封装,实现在流协议、容器格式及其本IO访问。
libavutil 包括了hash器,解码器和各种工具函数。
libavresample 对音频进行重采样。
libswresample 实现了混音和重采样。
libswscale 实现了色彩转换和缩放功能。


FFmpeg常用命令

  • 基本信息查询命令
    在这里插入图片描述

  • 录制命令
    ffmpeg -f dshow -i video="screen-capture-recorder" -r 30 orcas.yuv
    -f 指定采集数据的库 (Mac:avfoundation / Windows:dshow)
    -r帧率
    -i 可通过ffmpeg -f dshow -list_devices true -i dummy查询到设备名称
    -i video="{设备名}"
    原本我的电脑只有摄像头和一个乱码的设备。
    推荐使用screen-capture-recorder
    下载: https://sourceforge.net/projects/screencapturer/files/latest/download在这里插入图片描述
    录制过程中会显示视频的基本信息
    在这里插入图片描述
    播放命令ffplay -s 1280x720 -pix_fmt bgr0 orcas.yuv
    yuv播放时需要设置分辨率和像素采样方式(与录制的相同)。

  • 分解/复用命令
    可进行多媒体格式的转换:
    ffmpeg -i orcas.mp4 -vcodec copy -acodec copy orcas.mov
    -i: 输入文件
    -vcodec copy:视频编码处理方式
    -acodec copy:音频编码处理方式

    在这里插入图片描述
    抽取视频:ffmpeg -i orcas.mov -an -vcodec copy out.h264
    抽取音频:ffmpeg -i orcas.mov -vn -acodec copy out.aac

  • 处理原始数据命令
    FFmpeg提取YUV数据:
    ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
    -an:不包含音频
    -c:v:对视频进行编码
    rawvideo:原始视频
    -pix_fmt:像素采样方式
    -b:码率 -b:a 64k -b:v 753k
    又称比特率 bps,即每秒传输的bit数,文件大小(bit)/ 时长(s)/ 1024 = kbps

    播放:ffplay -s 1280x720 -ipx_fmt yuv420p out.yuv

    FFmpeg提取PCM数据:
    ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
    -vn:不包含视频
    ar:audio rate 音频采样率
    -ac 2:audio channel 2指双声道
    -f s16le:数据存储格式,s有符号(正负),每个数值16位表示,Little-endian低字节序

    播放:ffplay -ar 44100 -ac 2 -f s16le out.pcm

  • 剪裁与合并命令
    裁剪:ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
    -ss:从哪个时间点开始裁剪
    -t:裁取多少时间 s

    合并:ffmpeg -f concat -i inputs.txt out.flv
    concat:拼接
    xxx.txt:文件列表(需要拼接的视频),格式:file ‘文件名’ 独立一行

  • 图片/视频互转命令
    视频转图片:ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
    -r帧率 每秒转出图片的数量
    image2一种格式

    图片转视频:ffmpeg -i image-%3d.jpeg out.mp4

  • 直播相关命令
    直播推流:ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
    -re 减慢帧率 用于保持帧率同步

    直播拉流:ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

    拉了段CCTV1的视频:
    ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy cctv.m3u8
    在这里插入图片描述

  • 滤镜命令
    拿到解码后的数据帧过滤,再编码输出。

    裁剪:
    ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

    -vf crop:视频滤镜 crop
    in_w-200:in_h-200 输入视频的宽和高各减200,还可设置:x:y参数
    -c:v libx264:视频编码器 libx264
    -c:a copy:表示音频编码不做处理 直接copy


FFmpeg处理音视频流程

在这里插入图片描述
将编码的数据包传送给解码器,解码器产生未压缩的帧(原始视频等)
可通过滤波进一步处理,过滤后帧被传递到编码器,输出编码的数据包
再传递给复用器,将编码的数据包写入输出文件

通俗一点讲一般处理音视频的本质就是解码、处理、编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值