ffmpeg 常用命令

1.从文件中获取音频数据和视频数据

1.1 从文件中抽取音频数据

ffmpeg -i test.mp4 -vn -acodec copy test.aac
-i url (input) // 输入的文件地址
-vn // 阻止文件中的所有视频流
-acodec // 编解码器 https://blog.csdn.net/NewTWG/article/details/86393378 
	copy // 编码同原始音频

ffmpeg -i test.mp4 -vn  -acodec copy test.wav

1.2 从文件中抽取视频数据

ffmpeg -i test.mp4 -vcodec copy -an NoSoundVideo.mp4
-i url (input) // 输入的文件地址
-an // 阻止文件中的所有音频流

ffmpeg -i test.mp4 -vcodec copy -an NoSoundVideo.h264

ffmpeg -i test.mp4 out.yuv

2.格式转换

2.1 aac 转 wav

ffmpeg -i audio.aac audio.wav

2.2 wav 转 aac

2.3 wav 转 PCM

ffmpeg -i input.wav -f s16be -ar 8000 -ac 1 -acodec pcm_s16be output.pcm

-f format // 格式 // https://blog.csdn.net/xifens/article/details/73188987
-ar freq // 采样频率
-ac channels // 采样通道数
-acodec codec // 编解码器 https://blog.csdn.net/NewTWG/article/details/86393378

2.4 pcm 转 wav

ffmpeg -f s16be -ar 8000 -ac 1 -acodec pcm_s16be -i output.pcm output.wav

2.5 rgba 转 bmp

ffmpeg -pix_fmt rgba -s 640x480 -i test.yuv test.bmp

2.6 mp4 转 yuv

1. 转换
ffmpeg -i xx.mp4 -s 1080x1920 -pix_fmt yuv420p xx.yuv
-s:设置yuv数据的分辨率
-pix_fmt:设置yuv数据的具体格式
2.播放
ffplay -f rawvideo -video_size 1080x1920 -i xx.yuv
ffplay -f rawvideo -video_size 864x486 -pix_fmt yuv420p xx.yuv

2.7 yuv 转 mp4

ffmpeg -pix_fmt bgra -s 1080x1920 -i engine_bgra.yuv output.mp4

2.8 视频保存成一组图片

ffmpeg -i output.mp4 -f image2 output_%05d.png

2.9 查询 ffmpeg 支持哪些视频格式

ffmpeg -pix_fmts

2.10 查询 ffmpeg 支持哪些音频采样格式

ffmpeg -sample_fmts
name   depth
u8        8
s16      16
s32      32
flt      32
dbl      64
u8p       8
s16p     16
s32p     32
fltp     32
dblp     64
s64      64
s64p     64
ffmpeg 其他参数查询

在这里插入图片描述

3.播放软件

音频原始数据可以使用 : audacity
视频原始数据可以使用:YUV player

4. 采集电脑设备音视频数据

4.1 查看当前电脑支持 directshow 的设备

ffmpeg -list_devices true -f dshow -i dummy

在这里插入图片描述

4.2 使用摄像头录制视频

ffmpeg -f dshow -i video="Integrated Camera" camera.mp4

4.3 用 ffplay 实时播放摄像头采集到的画面

ffplay -showmode 0 -f dshow -i video="Integrated Camera"

5. 滤镜

给视频增加帧号水印

ffmpeg -i input.mp4 -vf "drawtext=fontfile=C\\:/Windows/fonts/consola.ttf:fontsize=72:fontcolor='white':text='%{frame_num}':boxcolor=0x000000AA:box=1:x=860-text_w/2:y=960" -y -c:a copy output.mp4

6. ffprobe

6.1 查看视频中音频或视频每一帧的码率

ffprobe -v error -select_streams v:0 -show_entries frame=pkt_size -of csv=p=0 xx.mp4
ffprobe -v error -select_streams a:0 -show_entries frame=pkt_size -of csv=p=0 xx.mp4

6.2 获取视频中是否有 b 帧

windows 平台
ffprobe -show_frames xxx.mp4 | findstr "pict_type"
linux 平台
ffprobe -show_frames xxx.mp4 | grep "pict_type"

在这里插入图片描述

6.3 打印每一帧数据信息

ffprobe -i url -show_frames -select_streams v -show_entries frame=width,height,pict_type
  1. show_frames 打印每一帧的信息
    视频是这些数据
[FRAME]
media_type=video
stream_index=1
key_frame=0
pkt_pts=1987033
pkt_pts_time=1987.033000
pkt_dts=1987017
pkt_dts_time=1987.017000
best_effort_timestamp=1987033
best_effort_timestamp_time=1987.033000
pkt_duration=16
pkt_duration_time=0.016000
pkt_pos=165322
pkt_size=5368
width=1920
height=1080
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=P
coded_picture_number=10
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=tv
color_space=smpte170m
color_primaries=smpte170m
color_transfer=smpte170m
chroma_location=left
[/FRAME]

音频是这些数据

[FRAME]
media_type=audio
stream_index=0
key_frame=1
pkt_pts=1986995
pkt_pts_time=1986.995000
pkt_dts=1986995
pkt_dts_time=1986.995000
best_effort_timestamp=1986995
best_effort_timestamp_time=1986.995000
pkt_duration=21
pkt_duration_time=0.021000
pkt_pos=171036
pkt_size=356
sample_fmt=fltp
nb_samples=1024
channels=1
channel_layout=mono
[/FRAME]
  1. select_streams 打印哪路流的数据,可以指定只打印视频
  2. show_entries 选择打印哪些项,比如width,height,pict_type。中间通过逗号分割

x.其他

拉取一段时间的音视频数据

ffmpeg -i http:/xxx.com/obj/yyy.mp4 -t 30  xxx.mp4

ffplay 使用硬件加速播放视频

ffplay.exe -vcodec hevc_qsv -i filePath

硬件可以用下面框中的名字
在这里插入图片描述

ffplay 常用快捷键

音量控制

静音 : M 键可切换 静音 / 非静音 状态 ;
减少音量 : 9 或 / 按键 , 减少音量 ;
增加音量 : 0 或 * 按键 ,增加音量 ;

参考文献

https://dangger.github.io/2015/10/30/index.html
https://blog.csdn.net/Tang_Chuanlin/article/details/85234841

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值