三、ffplay、ffmpeg日常食用的简单姿势

[TOC]

开始前的BB

这三个工具来说 ffplay和ffmpeg是很经典的两个,ffprobe日常用的比较少,ffplay和ffmpeg那可真是日常使用,下面只列举了一些平常经常用到的命令行,以及ffmpeg命令行帮助的方法

码农第三滚坑委提醒您:装逼千万条,基础第一条;不敲命令行,脸上两行泪

请先系好安全带以及准备一个视频文件(温馨提示 最好找个比较好看点的视频,因为调试过程中会一直直直直直直看到这个视频,换视频又太费时间,所以我建议大家开始的时候找个一比较耐看的视频 比如 点击下载)
<u></u>

愿天堂没有爱情

温馨提示 请用命令行进入ffmpeg下载解压后的目录的bin目录下,比如:

image

飙车ing...

帮助命令

帮助命令的帮助

ffmpeg -h
这个是最简单的帮助命令

image

这个部分 上面configuration是说当前用的ffmpeg的编译设置选项,--disable-XXX就是禁用XXX的意思 --enable-XXX就是启用XXX的意思,相信凭大家的机制一眼就看懂了

中间的部分是每个组件的详细版本号

usage 是说明使用ffmpeg命令行的格式,也就是
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

简单来讲就是

ffmpeg [一些选项] [[输入文件的选项] -i 输出文件的路径] {[输出文件的选项] 输出文件路径}

大家如果对于类Unix命令行不太熟悉,可以选择先记下这个格式,下面我们写的时候再看

image

获取帮助
-h 打印基本的选项
-h long 这个选项会打印的非常全,一般控制台显示不下 建议输出为文本看,比如ffmpeg -h full > ffmpeg_full.log
-h type=name 这个type的选项可以为decoder/encoder/demuxer/muxer/filter/bsf中的任意一个,name的话就是里面一个详细的格式,通过这个命令可以来查看是否支持指定格式,比如
ffmpeg -h decoder=h264

image

这边显示的支持h264的解码器的列表 除自带的以外,还开启了X264的解码支持

查看支持的formats/decoders

查看支持的formats/decoders等:

//支持的封装格式(合并&&分离)
ffmpeg -formats 
//合并
ffmpeg -muxers
//分离
ffmpeg -demuxers

//支持的过滤器
ffmpeg -filters

//支持的编解码器
ffmepg -codecs
//支持的解码器
ffmpeg -decoders
//支持的编码器
ffmpeg -encoders

//支持的硬编解列表
ffmpeg -hwaccels

//位流格式
ffmpeg -bsfs

//像素格式
ffmpeg -pix_fmts

//采样格式
ffmpeg -sample_fmts

查看具体支持某一种格式,类似这样

ffmpeg -h muxer=flv
image

如果不支持 就是unknown了

image

其他的还有

ffmpeg -h filter=atempo

ffmpeg -h encoder=libx264

之类
帮助的用法大概就是这样

FFPlay

命令格式

ffplay 是一个播放器 他的命令格式为:
ffplay [options] [input_url]

主要命令

主要选项有

选项  说明
-x width    强制显示宽带。
-y height   强制显示高度。
-s size 帧尺寸 设置显示帧存储(WxH格式),仅适用于类似原始YUV等没有包含帧大小(WxH)的视频。该参数已经被废弃,请尝试用-video_size代替
-fs 以全屏模式启动。
-an 禁用音频(不播放声音)
-vn 禁用视频(不播放视频)
-sn 禁用字幕(不显示字幕)
-ss pos 根据设置的秒进行定位拖动,注意时间单位:比如'55' 55 seconds, '12:03:45' ,12 hours, 03 minutes and 45 seconds, '23.189' 23.189 second
-t duration 设置播放视频/音频长度,时间单位如 -ss选项
-bytes  按字节进行定位拖动。
-seek_interval interval 自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒
-nodisp 关闭图形化显示窗口,视频将不显示
-noborder   无边框窗口
-volume vol 设置起始音量。音量范围[0 ~100]
-f fmt  强制使用设置的格式进行解析。比如-f s16le
-window_title title 设置窗口标题(默认为输入文件名)
-loop number    设置播放循环次数
-showmode mode  设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。缺省为0,如果视频不存在则自动选择2
-vf filtergraph 设置视频滤镜
-af filtergraph 设置音频滤镜

高级命令

高级选项

-pix_fmt format 格式设置像素格式。此选项已被弃用,有利于私有选项,try -pixel_format
-stats  打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。
-fast   非标准化规范的多媒体兼容优化
-genpts 生成pts。
-sync type  同步类型 将主时钟设置为audio(type=audio),video(type=video)或external(type=ext),默认是音频为主时钟。
-ast audio_stream_specifier 指定音频流索引,比如-ast 3,播放流索引为3的音频流
-vst video_stream_specifier 指定视频流索引,比如-vst 4,播放流索引为4的视频流
-sst subtitle_stream_specifier  指定字幕流索引,比如-sst 5,播放流索引为5的字幕流
-autoexit   视频播放完毕后退出。
-exitonkeydown  键盘按下任何键退出播放
-exitonmousedown    鼠标按下任何键退出播放
-codec:media_specifier codec_name   强制使用设置的多媒体解码器,media_specifier可用值为a(音频), v(视频)和s字幕。比如-codec:v h265 强制视频采用h265解码
-acodec codec_name  强制使用设置的音频解码器进行音频解码
-vcodec codec_name  强制使用设置的视频解码器进行视频解码
-scodec codec_name  强制使用设置的字幕解码器进行字幕解码
-autorotate 根据文件元数据自动旋转视频。默认情况下启用,若需禁用则使用-noautorotate
-framedrop  如果视频不同步则丢弃视频帧。当主时钟非视频时钟时默认开启。若需禁用则使用 -noframedrop
-infbuf 不限制输入缓冲区大小。尽可能快地从输入中读取尽可能多的数据。播放实时流时默认启用,如果未及时读取数据,则可能会丢弃数据。此选项将不限制缓冲区的大小。若需禁用则使用-noinfbuf

播放控制

播放控制

选项  说明
q, ESC  退出播放
f   全屏切换
p, SPC  暂停
m   静音切换
9, 0    9减少音量,0增加音量
/, *    /减少音量,*增加音量
a   循环切换音频流
v   循环切换视频流
t   循环切换字幕流
c   循环切换节目
w   循环切换过滤器或显示模式
s   逐帧播放
left/right  向后/向前拖动10秒
down/up 向后/向前拖动1分钟
page down/page up   拖动上一个/下一个。或者如果没有章节向后/向前拖动10分钟。
鼠标右键单击  拖动与显示宽度对应百分比的文件进行播放
鼠标左键双击  全屏切换

举个🌰?

BB这么多 来几个使用的例子

播放本地文件

最直接的:
ffplay test_video.mp4

image
image

这边我们看到,在命令行里输出里一些有关视频的信息,在新的窗口里已经播放出来了视频

我们加上一些上面的参数后 也可以这种播
ffplay -window_title "mirs ffplay" -ss 2 -t 10 -autoexit test.mp4

效果大家自己去根据上面的提示和自己实际动手操作一下,我这就不说了

啦啦啦 打我啊
播放网络流

食用方式与楼上一样

ffplay rtmp://live.hkstv.hk.lxdns.com/live/hks1

(偷懒是真滴舒服)

舒服
视频旋转播放

ffplay -i test_video.mp4 -vf transpose=1

image
视频反转播放

(镜面)
ffplay test_video.mp4 -vf hflip

image

(上下)
ffplay test_video.mp4 -vf vflip

image

ps:视频旋转和反转可以组合食用 (听说巧克力和牛奶更配哟)

变速播放
音频变速视频不变速 (1.5倍食用更佳)

ffplay -i test_video.mp4 -af atempo=1.5

视频变速音频不变速

ffplay -i test_video.mp4 -vf setpts=PTS/1.5

音视频一起变速(3倍!!!)

ffplay -i test_video.mp4 -vf setpts=PTS/3 -af atempo=3

效果自己运行看 (留个疑问 根据参数猜原理)

FFmpeg

终于到ffmepg了,我们首先来吧他常用的参数分个类

常用参数

主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
-t   时间长度

视频参数:
-vframes 设置要输出的视频帧数
-b 设定视频码率,默认为200Kbit/s
-b:v 视频码率
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
-vf 视频滤波器

音频参数:
-aframes 设置要输出的音频帧数
-b:a 音频码率
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
-af 音频滤波器

使用示例

分离视频音频流

分离音频
ffmpeg -i test_video.mp4 -acodec copy -vn audio.aac
然后...

image

分离视频
ffmpeg -i test_video.mp4 -vcodec copy -an video.mp4

image
提取H264

ffmpeg -i test_video.mp4 -vcodec copy -an test_copy.264

提取AAC

ffmpeg -i test_video.mp4 -acodec copy -vn test.aac

改变编码格式

ffmpeg -i test_video.mp4 -vcodec copy -acodec copy test_copy.ts

修改帧率

ffmpeg -i test_video.mp4 -r 15 output.mp4

修改码率

ffmpeg -i test_video.mp4 -b:v 1.5M output2.mp4

修改音频码率

ffmpeg -i test_video.mp4 -b:a 192k output2.mp4

修改音视频码率

ffmpeg -i test_video.mp4 -b:v 1.5M -b:a 192k output2.mp4

修改分辨率

ffmpeg -i test_video.mp4 -s 640x480 output.mp4

提取PCM

ffmpeg -i test.mp4 -f s16le audio.pcm

提取YUV

提取3秒 分辨率和原来的一致
ffmpeg -i test_video.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
提取3秒 指定分辨率
ffmpeg -i test_video.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv

提取RGB

提取3秒数据,分辨率转为320x240
ffmpeg -i test_video.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb

RGB和YUV转换

ffmpeg -s 968x544 -pix_fmt yuv420p -i yuv420p_orig.yuv -pix_fmt rgb24 orig.rgb

常用的命令和选项基本都在这边了,可以根据自己的需求去选择不同的命令行实现功能

接下来,我们就开始着手自己写一个视频播放器了(想想是不是还有点小激动)

那撸多!啥事gay!

未完持续。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容