ffprobe使用指令 && ffmpeg m3u8转mp4
ffprobe -i 输⼊视频路径 -v quiet -print_format json -show_format -show_streams
ffprobe -select_streams v -show_packets -of json 1.ts
如果是⾳频,改 -select_streams a
如果要选择⾳轨,可以这样 -select_streams a:0
ffprobe -select_streams a:0 -show_packets -of json 1.ts
ffprobe主要⽤来查看多媒体⽂件的信息。本⽂带领⼤家学习ffprobe的常⽤命令。
常⽤参数⽐较多,可以使⽤ffprobe --help来查看详细的帮助信息
帮助信息即使ffprobe的常⽤的操作参数,也是ffprobe的基础参数。例如查看log,查看每⼀个⾳频数据包含信息或者
视频数据包信息,查看每⼀个流有多少帧以及每⼀个流有多少⾳视频包,查看视频像素点的格式等等。
下⾯根据以上的输出参数重点举⼏个栗⼦:
-show_packets 和 -show_data
使⽤ffprobe -show_packets input.mp4:
-show_packets查看的多媒体数据包信息使⽤PACKET标签扩起来了,其中包含的信息内容如下表所⽰:packet字段说明
字段 说明
codec_type 多媒体类型,如视频包、⾳频包等
stream_index 多媒体的stream索引
pts 多媒体的显⽰时间值
pts_time根据不同格式计算过的多媒体的显⽰时间
dts多媒体解码时间值
dts_time根据不同格式计算后的多媒体解码时间值
duration多媒体包占⽤的时间值
duration_time根据不同格式计算后的多媒体包占⽤的时间值
size多媒体包的⼤⼩
pos多媒体包所在的⽂件偏移位置
flags多媒体包标记,如关键包与⾮关键包的标记
除了以上字段和信息之外,还可以通过ffprobe -show_data -show_packets input.mp4组合参数来查看包中的具体数据,输出结果
我就不截图展⽰了,就是在每个packet数据下⾯有⼀段data数据。
通过ffprobe读取packets来进⾏对应的数据分析,使⽤-show_packets和-show_data配合可以进⾏更
-show_format命令
通过ffprobe -show_format 命令可以查看多媒体饿封装格式,其使⽤FORMAT标签扩起来显⽰:
对输出信息关键字段说明:
字段 说明
nb_stream 多媒体中包含的流的个数
nb_programs 节⽬数
format_name使⽤的封装模块的名称
format_long_name封装的完整的名称
start_time媒体⽂件的起始时间
duration媒体⽂件的总时间长度
size媒体⽂件的⼤⼩
bit_rate媒体⽂件的码率
-show_frames
通过ffprobe -show_frames 命令可以查看视频⽂件中的帧信息,输出的帧信息使⽤FRAME标签扩起来:
字段 说明
media_type帧的类型(视频、⾳频、字幕等)
key_frame 是否关键帧
pkt_pts Frame包的pts
pkt_pts_time Frame包的pts的时间显⽰
pkt_dts Frame包的dts
pkt_duration Frame包的时长
pkt_pos Frame包所在⽂件的偏移位置
width 帧显⽰的宽度
height 帧显⽰的⾼度
pix_fmt 帧的图像⾊彩格式
pict_type 帧类型
-show_streams
通过ffprobe -show_frames 命令可以查看视频⽂件中的帧信息,输出的帧信息使⽤STREAM标签扩起来:
字段 说明
index 流所在的索引区域
codec_name 编码名
codec_long_name编码全名
profile 编码的profile
level 编码的level
has_b_frame 包含B帧信息
codec_type 编码类型
codec_time_base编码的时间戳计算基础单位
pix_fmt 图像显⽰的⾊彩格式
coded_width 图像的宽度
coded_height 图像的⾼度
codec_tag_string编码的标签数据
r_frame_rate 实际帧率
avg_frame_rate 平均帧率
time_base 时间基数(⽤来计算timestamp)
bit_rate 码率
max_bit_rate 最⼤码率
nb_frames 帧数
格式化 ffprobe的命令的输出格式
默认的输出格式都是以key - value的格式的显⽰⽅式,由于每个⼈的阅读习惯不⼀样,有⼈认为⽅便有⼈认为不⽅便;ffprobe⽀
持多种格式的输出,包括XML、INI、JSON、CSV、FLAT等。
如何定制输出格式呢,ffprobe -print_format 或者 ffprobe -of 来格式化。举个栗⼦:
ffprobe -of xml -show_streams input.mp4
m3u8指定时间转换mp4
./ffmpeg -i 'xxx.mp4' -ss 01:04:30 -to 01:10:05 -c copy output.mp4