ffmpeg学习

  • 播放带headers的地址
    ffplay “http://liveali-mls-ysp.cctv.cn/hls/LSvmu8iNbE5Eg0zp20C3MqpJ210903LSTtpuMUVyIsI7ujio6yIzM8210903cd/playlist.m3u8?wsSecret=8a7594e787b383b581f7e14eac80b10b&wsTime=1631004069” -user_agent “qqlive” -headers “UID:8c94f3a35bf311eb90a46c92bfd79530”

通用选项 (规则:ffplay 播放地址 -参数名 参数值)

  • -h, -?, -help,–help [arg]
    • 查看帮助
    • ffprobe -h decoder=vorbis -hide_banner将显示音频解码器vorbis的详细信息
  • -L
    • 显示版权信息
    • ffprobe -L -hide_banner
  • -version
    • 显示ffprobe的banner信息
  • -formats (formats-格式)
    • 查看是否支持对应的视频文件格式,即封装或者容器格式
    • 同 ffmpeg -formats ffplay -formats
    • 输入
      • ffprobe -formats
    • 输出
      • 第一列是多媒体文件封装格式的解封装(Demuxing)支持与封装(Muxing)支持,分别用D和M表示
        • D 表示只支持解封装该格式,但不支持封装成该格式
        • E 表示只支持封装成该格式,但是不支持解封装该格式
        • D E 表示封装和解封装都支持该格式
      • 第二列是媒体文件格式
      • 第三列是文件格式的详细说明
  • -muxers (muxers-封装)
    • 等同于只展示 D 的 ffprobe -formats ,表征ffmpeg支持封装哪些格式的多媒体文件
  • -demuxers (demuxers-解封装)
    • 等同于只展示 E 的 ffprobe -formats,表征ffmpeg支持解析哪些格式的多媒体文件
  • -devices
    • 列举平台相关的输入输出设备支持,输入设备指的是音视频采集设备类型,输出设备指的是渲染设备类型
    • 输入
      • ffprobe -devices
    • 输出
      • 第一列是设备类型
        • D 表示输入设备,即音视频采集设备类型
        • E 表示输出设备,即渲染设备类型
      • 第二列是设备类型名称
      • 第三列是设备类型的详细介绍
    • 不同的平台上,设备采集和渲染采用不同的技术,因此,对于此命令在不同的平台执行结果不同
      • Windows :支持dshow、lavfi、vfwcap
        • 查看本机(windows)所支持的dshow设备,可以使用ffmpeg -list_devices true -f dshow -i dummy
      • mac:AVfoundation是苹果设备上音视频采集的独有技术
        • 查看本机(mac)所支持的avfoundation设备,可以使用ffmpeg -list_devices true -f avfoundation -i dummy
      • liunx:alsa 是Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持
  • -codecs (codecs-编解码器)
    • 命令输出ffmpeg支持的所有编解码器:音频、视频、字幕的编解码
    • 输入
      • ffprobe -codecs
    • 输出
      • 第一列是编解码器功能描述
        • D 表示支持解码 E 表示支持编码
        • V 表示是视频编解码器 A 表示是音频编解码器 S 表示是字幕编解码器
        • I 表示编解码只产生I帧,只进行帧内编码,而不进行帧间编码
        • L 表示编码方式是有损压缩 S 表示编码方式是无损压缩
      • 第二列是编码器名称
      • 第三列是编码器的简单描述
    • 备注:在音视频领域内,音频编码和视频编码所采用的技术基本上来说是完全不同的,因此一个编码器只会针对音频或者视频,不可能既包含音频编码算法又包含视频编码算法
  • -decoders (decoders-解码器)
    • 命令输出ffmpeg支持的所有解码器:音频、视频、字幕的解码器
    • 输入
      • ffprobe -decoders
    • 输出
      • 第一列是解码器功能描述
        • V 表示是视频解码器 A 表示是音频解码器 S 表示是字幕解码器
        • F 表示解码器采用帧层面的多线程解码技术 S 表示解码器采用片层多线程解码技术 X 表示解码器是实验性质的
      • 第二列是解码器名称
      • 第三列是解码器的简单描述
  • -encoders (encoders-编码器)
    • 命令输出ffmpeg支持的所有编码器
    • 输入
      • ffprobe -encoders
    • 输出
      • 同ffprobe -decoders
  • -bsfs
    • 命令输出所有支持的比特流滤镜
      • 比特率滤镜:操作的是编码后的流数据,可以在不解码的前提下执行比特流层面的修改
    • 输入
      • ffprobe -bsfs
  • -protocols (protocols-协议)
    • 命令输出支持的文件协议,分为input和output,也就是支持解input中描述的协议,支持按照output中描述的这些协议发送数据
    • 输入
      • ffprobe -protocols
    • 常用协议:rtmp、hls、http、rtp、tee
  • -filters (filters-过滤器)
    • 命令显示libavfilter中支持的所有滤镜
    • 输入
      • ffprobe -filters
  • -pix_fmts (pix-像素)
    • 命令输出ffmpeg支持的所有像素格式,即编码前或者编码后的数据格式,一般有yuv格式和rgb格式
      • 其中yuv420p是最常用的格式,因为h.264解码后就是这种格式的数据
    • 输入
      • ffprobe -pix_fmts
    • 输出
      • 第一列是像素格式的属性
        • I 表示支持输入该格式
        • O 表示支持输出该格式
        • H 表示支持硬件加速
        • P 调色板格式
        • B 比特流格式
      • 第二列是像素格式名称
      • 第三列是像素格式包含了多少个组成部分
        • 比如yuv420p包含: 亮度分量y 和 两个色度分量u和v,因此为3
        • rgb24包含:r红,g绿,蓝b三原色,因此也为3
        • rgba在红绿蓝三原色的基础上,加上了alpha通道,因为为4
      • 第四列是平均一个像素点需要多少位来表示
        • yuv420p,以4*4的像素矩阵举例有16个像素点,那么亮度分量y有16个点,每个点y分量占8bit,因此总共有128bit表示y分量,
        • 对于yuv420p的色度分量因为经过降采样,u,v分量在水平和垂直方向都是y分量的1/2,那么u和v分别都只有4个点,每个点占8bit,因此共有32bit表示u分量,32bit表示v分量。
        • 总体来说,16个像素点一共使用了128+32+32=192bit,分配到16个像素点,那么每个像素点得12bit,正如命令输出的最后一列所示
      • 备注:yuv420p中的p指代y、u、v三个组分如何存储的
  • -layouts (layouts-布局)
    • 命令列出了所有支持的音频声道分布
      • 最常见的是mono单声道、stereo立体双声道、5.1声道、7.1声道
    • 输入
      • ffprobe -layouts
  • -sample_fmts (sample - 样本)
    • 命令输出ffmpeg中支持的音频采样数据格式,分为两部分
    • 输入
      • ffprobe -sample_fmts
    • 输出
      • 第一列:音频采样数据格式名称
        • u表示无符号整数,s表示有符号整数,flt表示单精度浮点数,dbl表示双精度浮点数,
        • 而后面的数字表示的采样深度,与第二列意思相同,p指的是数据存储方式位planner,相对于packet打包方式来说的,这两种方式在于存在多个成分时,比如双声道数据有两个声道,两个声道的数据在planner的存储方式就是先存储第一个声道的数据,然后再存储第二个声道的数据;
        • packet打包方式是两个声道的数据交错存放,先放一部分第一个声道数据,然后放一部分第二个声道数据,再放一部分第一个声道数据…如此反复直到存储完成。
      • 第二列 表示采样深度,即一个音频采样点用多少bit表示
    • 注意:视频数据同样也存在这两种数据存放方式,也以pix_fmt的名称也以p为结尾来区分,带p为planner存储方式,各组分按序先后存放,不带p表示数据交错存放
  • -colors
    • 命令枚举了ffmpeg支持的颜色名称以及对应的rgb值
    • 输入
      • ffprobe -colors
  • -hide_banner (hide-隐藏)
    • 用于禁止打印横幅(版权信息、库版本等banner信息)
    • 可和其他命令结合使用 如:ffprobe -hide_banner -colors
    • 输入
      • ffprobe -hide_banner
  • -cpuflags flags (global)
    • 允许设置和清楚cpu标志,一般不使用
    • 输入
      • ffmpeg -cpuflages mmx
  • -report (report-报告)
    • 用于将完整的命令行和控制台输出存储到当前目录中名为program-YYYYMMDD-HHMMSS.log的文件中,该文件对于错误报告很有用,还可以-loglevel调试
    • 输入
      • ffprobe -hide_banner 1.mp4 -report
    • 输出
      • 会将信息都存储到当前运行目录下的 ffprobe-日期.log文件
  • -loglevel [flags+]loglevel | -v [flags+]loglevel
    • 设置库使用的日志记录级别和标志
    • 示例: ffmpeg -loglevel repeat+level+verbose -i 1.mp4 2.mp4 -report
      • 输出了文件1.mp4转封装到2.mp4过程中的所有操作信息
  • -sources device[,opt1=val1[,opt2=val2]…]
    • 显示自动检测到的输入设备的来源
  • -sinks device[,opt1=val1[,opt2=val2]…]
    • 显示自动检测到的输出设备接收器

主要选项

  • -sections
    • 打印sections的结构和信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值