[Multimedia]useful command for ffprobeffplayffmpeg

news/2024/7/10 20:35:18 标签: ffmpeg

       本文主要介绍ffmpeg中的ffprobe,ffplay&&ffmpeg常用命令.在做多媒体开发时,非常实用:ffprobe可以查看媒体信息,ffplay可以播放,ffmpeg可以转换文件.

一、ffprobe篇

格式:ffprobe [输入文件名]

1.1查看mp4格式的文件

ffprobe E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 
=>
  Duration: 00:00:10.00, start: 0.000000, bitrate: 422 kb/s
  Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 1:1 DAR 3:2], 367 kb/s, 24 fps, 25 tbr, 12288 tbn, 50 tbc (d
efault)
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 47 kb/s (default)

  ->该视频文件的时长是10秒,开始播放时间是0,整个文件的比特率是422Kbit/s

  ->第一个流是视频流,编码格式是h264格式(封装格式为avc1),每一帧的数据表示为yuv420p,分辨率为720x480,这路流的比特率为367Kbit/s,帧率为每秒钟24帧

  ->第二个流是音频流,编码方式为aac(封装格式为MP4A),并且采用的Profile是LC规格,采样率是44.1KHz,声道是立体声,这路流的比特率47Kbit/s

1.2.显示帧信息(这里只讲解video帧信息)

ffprobe -show_frames E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 
=>
[FRAME]
media_type=video
stream_index=0
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=0
pkt_dts_time=0.000000
best_effort_timestamp=0
best_effort_timestamp_time=0.000000
pkt_duration=492
pkt_duration_time=0.040039        
pkt_pos=9452
pkt_size=31345
width=720                         
height=480
pix_fmt=yuv420p                   
sample_aspect_ratio=1:1
pict_type=I                       
coded_picture_number=0            
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=unknown
color_space=unknown
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[/FRAME]


[FRAME]
media_type=video                     ->media类型,这里为video
stream_index=0                       ->stream索引,通常video为0,audio为1
key_frame=0
pkt_pts=492
pkt_pts_time=0.040039                ->当前帧的pkt_pts_time=前一帧的pkt_pts_time+前一帧的pkt_duration_time,表示当前帧的时间戳
pkt_dts=492
pkt_dts_time=0.040039
best_effort_timestamp=492
best_effort_timestamp_time=0.040039
pkt_duration=491
pkt_duration_time=0.039958           ->当前帧pkt_duration_time=下一帧pkt_pts_time-当前帧pkt_pts_time,表示两帧的时间戳间隔
pkt_pos=41170
pkt_size=1129                       ->帧大小
width=720                           ->宽高
height=480
pix_fmt=yuv420p                     ->yuv格式
sample_aspect_ratio=1:1
pict_type=P                         ->帧类型
coded_picture_number=1              ->picture索引
display_picture_number=0
interlaced_frame=0                  ->interlaced
top_field_first=0
repeat_pict=0
color_range=unknown              ->range
color_space=unknown
color_primaries=unknown          ->primaries
color_transfer=unknown           ->transfer
chroma_location=left
[/FRAME]

1.3 -select_streams 

查看音频流或视频流,使用select_streams参数即可。下面只看video的:

ffprobe -show_frames VBB10--H.263-720x480-13.6M-AAC-約定.mov -select_streams v > video_frame_infor2.txt

1.4 -of xml

以xml形式输出

ffprobe -show_frames ./playback/20210926_144131_733_input.264 -select_streams v -of xml > decoder_inout_video_frame_infor.xml
->
<frame media_type="video" stream_index="0" key_frame="0" pkt_duration="48000" pkt_duration_time="0.040000" pkt_pos="319536" pkt_size="45856" width="1920" height="1080" pix_fmt="yuvj420p" pict_type="P" coded_picture_number="4" display_picture_number="0" interlaced_frame="0" top_field_first="0" repeat_pict="0" color_range="pc" color_space="bt470bg" color_primaries="bt470bg" color_transfer="smpte170m" chroma_location="left"/>
...

二、ffplay篇

格式:ffplay [输入文件名]

2.1.播放媒体文件

2.1.1 mp4 container

ffplay E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4

2.2播放视频流数据

2.2.1 h264 stream

ffplay E:\work\video_clip\2-bitstream\h264\input_dec_720_480_0xe8c83940.264

2.3.播放视频裸数据

ffplay -f 格式 -pixel_format 表示格式 -s 宽高 裸文件名

2.3.1播放yuv格式的视频帧

(1)nv12
ffplay -f rawvideo -pixel_format nv12 -s 360x640 E:\work\video_clip\3-yuv\input_enc_360_640_0xeb672000_nv12.yuv

(2)yuv420
ffplay -f rawvideo -pixel_format yuv420p -s 352x288 E:\work\video_clip\3-yuv\CIF\input_cif_352x288_yuv420_container.yuv

2.3.2 播放rgb视频帧

(1)rgb24
ffplay -f rawvideo -pixel_format rgb24 -s 480x480 E:\work\video_clip\3-rgb\

2.4.查看pixel format

ffplay -pix_fmts

2.5.选项

2.5.1 -vn 屏蔽视频

ffplay -vn E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4

2.5.2 -an 屏蔽音频

ffplay -an E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4

2.5.3 -x -y 强制设置视频显示窗口的宽带与高度

ffplay -x 360 -y 240 E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4

2.5.4 -fs 以全屏模式启动

ffplay -fs E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 

2.5.5 -autoexit 播放完毕后自动退出

ffplay -autoexit E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 

2.6.过滤器(filter) (-vf  视频过滤器)

2.6.1 -vf transpose=1 按顺时针旋转90度

ffplay E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -vf transpose=1

2.7.播放控制

2.7.1 按键s                 可以进入frame-step模式,即按s键一次就会播放下一帧图像

2.7.2 按键f                 全屏切换

三、ffmpeg

格式:ffmpeg -i [输入文件名] [参数选项] [输出文件]

3.1.码率控制(#-b:v 视频比特率)

ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -b:v 734K h264_720x480_out_734K.mp4

3.2.设置输出视频的分辨率(-s)

ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -s 1440x960 h264_1440x960.mp4

3.3.设置帧频(-r )

ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -r 30 h264_720x480_30fps.mp4

3.4.转换码流

(1)h264 to hevc
#-vcodec hevc
ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -vcodec hevc h265_720x480.mp4 

(2)hevc to h264
#-vcodec h264
ffmpeg -i E:\work\video_clip\1-container\mp4\h265\h265_720x480.mp4 -vcodec h264 h264_720x480.mp4

3.5.分离音视频流(-vcodec copy -an)

ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -vcodec copy -an h264_720x480.h264  //-an 提取视频流

3.6.转换成YUV原始文件(-vcodec rawvideo -an)

ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -vcodec rawvideo -an h264_720x480.yuv

3.7.截取一格式为jpg的图片

#-y 表示覆盖输出文件,***文件已经存在的话,不经提示就覆盖掉了;-n 不覆盖输出文件,如果一个给定的输出文件已经存在,则立即退出
#-f 表示输出格式,-t 表示时间,-s 分辨率
ffmpeg -i E:\work\video_clip\1-container\mp4\h264\h264_720x480.mp4 -y -f image2 -ss 8 -t 0.001 -s 720x480 720x480.jpg

3.8 将264裸流封装成mp4

ffmpeg -f h264 -i E:\work\video_clip\2-bitstream\h264\input_dec_1280_720_0xeb354b80.264 -vcodec copy E:\work\video_clip\2-bitstream\h264\h264_1280_720_0xeb354b80.mp4

3.9 将容器中的音频去掉

ffmpeg -i VID_20210427_131104.mp4 -y -f mp4 -an -codec copy -q:v 1 VID_20210427_131104_noaudio.mp4


http://www.niftyadmin.cn/n/1159900.html

相关文章

在Secure CRT中,使用vim中由于切换窗口而出现光标消失的解决方案

本人在使用Secure CRT的过程中&#xff0c;出现了这样一个问题&#xff1a;使用vim编程过程中&#xff0c;经常因为窗口的切换而出现光标不可见。 分析原因&#xff0c;可能跟我用的window8版本有关&#xff0c;我同事用的window7就没有这个问题。 下面是我亲身使用的解决方法&…

[Windows][Multimedia]ffmpeg build in MinGW

【MinGW篇】 一、下载 其地址&#xff1a;http://www.mingw.org/ 1.1 Download链接 1.2 下载按钮 二、安装 2.1 安装路径及快捷方式 2.2 下载进度 2.3 组件 这个选择msys和g编译器 2.4 在Installation中点Apply Changes 2.5 下载包(时间较长&#xff0c;需等待) 2.6 设置安…

EBS各个应用简称

&#xfeff;&#xfeff;模块全称 Banking Center 模块简称 FPT 服务器目录 FPT_TOP Billing Connect CUE CUE_TOP CADView-3D DDD DDD_TOP CPG - CDOA CPGC CPGC_TOP CRM 基础架构 JTF JTF_TOP CRM 自助管理系统 JTS JTS_TOP Capital Resource Logistics - Assets CUA CUA_TO…

[Multimedia]YUV(444,422,420) And YUV(Packed,Planar,Semi-Planar)

一、采样方式 YUV主流的采样方式有三种&#xff1a; (以黑点表示采样该像素点的Y分量&#xff0c;以空心圆圈表示采用该像素点的UV分量) 1.1 YUV444 (1)每一个Y对应一组UV分量 (2)单帧占用空间大小&#xff1a;w*h(Y) w*h(U) w*h(V) w*h*3 1.2 YUV422 (1)每两个Y共用一…

EBS应收(AR)模块常用表

&#xfeff;&#xfeff;select * from ar_batches_all 事务处理批 select * from ra_customer_trx_all INVOICE头 select * from ra_customer_trx_lines_all INVOICE行 select * from ra_cust_trx_line_gl_dist_all INVOICE分配 select * from ar_cash_receipts_all 收款 sel…

[c/c++]design mode

#include <Windows.h> #include <stdio.h>#include<list> #include<map>#include "alignment.h"using namespace std;#pragma pack(push) #pragma pack(1) //C语言中并没有bool类型变量。这是C中新增的系统类型 typedef enum _FLAG{FLAG_F…

OpenJudge计算概论-寻找山顶

/* 寻找山顶 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个mn的山地上&#xff0c;已知每个地块的平均高程&#xff0c;请求出所有山顶所在的地块&#xff08;所谓山顶&#xff0c;就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。 输入 第一…

mysql 高效分页控件及c#调用实例

第一、首先在mysql中创建一个存储过程 BEGIN/*selectSql VARCHAR(5000), --sql语句orderWhere VARCHAR(200), --排序条件pageSize int, -- 每页多少条记录pageIndex int 1 , -- 指定当前为第几页TotalPage int output , -- 返…