概要
- ffplay は、FFMPEG ライブラリと SDL ライブラリをベースに開発されたマルチメディア プレーヤーです。その主な目的は、コーデック/フォーマット/フィルターやその他のライブラリなど、FFMPEG のさまざまな API をテストすることです。
- ffplay の設計ロジックをマスターすることは、プレーヤー開発者にとってエクスペリエンスを向上させるのに非常に役立ちます。Bilibili の ijkplayer は、ffplay に基づいて二次的に開発されたものです。コマンド形式
- ffplay [オプション] [入力 URL]
この記事の利点、無料の C++ オーディオおよびビデオ学習教材パッケージ、技術ビデオ/コード (オーディオおよびビデオ開発、インタビューの質問、FFmpeg、webRTC、rtmp、hls、rtsp、ffplay、コーデック、プッシュプル ストリーム、srs を含む) )↓↓↓ ↓↓↓下記からどうぞ↓↓無料で読むには記事下部をクリック↓↓
メインオプション
オプション |
説明する |
-x幅 |
ブロードバンドを強制的に表示します。 |
-y 高さ |
高度を強制的に表示します。 |
-sサイズ |
フレーム サイズ設定には、フレーム ストレージ (WxH 形式) が表示されます。これは、生の YUV などのフレーム サイズ (WxH) を含まないビデオにのみ適用されます。このパラメータは廃止されました。代わりに -video_size を使用してください。 |
-fs |
全画面モードで起動します。 |
-アン |
オーディオを無効にする (音は再生されません) |
-vn |
ビデオを無効にする (ビデオを再生しない) |
-sn |
字幕を無効にする(字幕を表示しない) |
-ss pos |
設定された秒に従って位置を決めてドラッグし、時間単位に注意してください: '55' 55 秒、'12:03:45' 、12 時間 03 分 45 秒、'23.189' 23.189 秒など |
-t 期間 |
再生する映像・音声の長さ、-ssオプションなどの時間単位を設定 |
-バイト |
バイト単位で位置を決めてドラッグします。 |
-seek_interval 間隔 |
左/右ボタンの位置決めドラッグ間隔 (秒単位) をカスタマイズします。デフォルト値は 10 秒です。 |
-nodisp |
グラフィック表示ウィンドウを閉じると、ビデオは表示されなくなります |
-国境がない |
縁なしウィンドウ |
-ボリュームボリューム |
開始音量を設定します。音量範囲 [0 ~ 100] |
-f fmt |
設定された形式で強制的に解析します。たとえば、-f s16le |
-window_title タイトル |
ウィンドウのタイトルを設定します (デフォルトは入力ファイル名です) |
-ループ番号 |
再生ループ数を設定する |
-showmode モード |
表示モードを設定します。使用可能なモード値は、ビデオを表示する場合は 0、音声波形を表示する場合は 1、音声スペクトルを表示する場合は 2 です。デフォルトは 0 です。ビデオが存在しない場合は、自動的に 2 が選択されます。 |
-vf フィルターグラフ |
ビデオフィルターを設定する |
-フィルターグラフの |
オーディオフィルターを設定する |
-i 入力URL |
入力URL |
高度なオプション
オプション |
説明する |
-pix_fmt形式 |
format はピクセル形式を設定します。このオプションは非推奨になり、プライベート オプションが優先されます。 -pixel_format を試してください。 |
-統計 |
ストリームの継続時間、エンコードパラメータ、ストリーム内の現在位置、オーディオ/ビデオ同期デルタの表示を含む、複数の再生統計を出力します。これはデフォルトで有効になっていますが、明示的に無効にするには、-nostats を指定する必要があります。 |
-速い |
非標準化仕様のマルチメディア互換最適化 |
-genpts |
ポイントを生成します。 |
-同期タイプ |
同期タイプは、メイン クロックをオーディオ (type=audio)、ビデオ (type=video)、または外部 (type=ext) に設定します。デフォルトはメイン クロックとしてオーディオです。 |
-ast audio_stream_specifier |
-ast 3 などのオーディオ ストリーム インデックスを指定すると、ストリーム インデックス 3 のオーディオ ストリームが再生されます。 |
-vst video_stream_specifier |
-vst 4 などのビデオ ストリーム インデックスを指定すると、ストリーム インデックス 4 のビデオ ストリームが再生されます。 |
-sst 字幕ストリーム指定子 |
-sst 5 などの字幕ストリーム インデックスを指定すると、ストリーム インデックス 5 の字幕ストリームが再生されます。 |
-自動終了 |
ビデオの再生が終了したら終了します。 |
-exitonkeydown |
キーボードの任意のキーを押して再生を終了します |
-exitonmousedown |
マウスで任意のキーを押して再生を終了します |
-コーデック:メディア指定子コーデック名 |
設定されたマルチメディア×××を強制的に使用します。media_specifier の使用可能な値は、a (オーディオ)、v (ビデオ)、s サブタイトルです。例: -codec:v h365 ビデオを強制的に h365 でデコードします。 |
-acodec コーデック名 |
設定した音声×××を音声デコードに強制的に使用する |
-vcodec コーデック名 |
設定したビデオ×××をビデオデコードに強制的に使用します |
-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分钟。 |
鼠标右键单击 |
拖动与显示宽度对应百分比的文件进行播放 |
鼠标左键双击 |
全屏切换 |
应用范例
播放媒体文件
- 打开网络直播流,可以使用命令
ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
从2秒播放一个视频,播放时长为10秒钟,播放完成后自动退出ffplay,播放器的窗口标题为”test time”,
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
- 强制使用mp3×××解码aac的音频,将会报错:
ffplay -acodec mp3 test.mp4 - 当视频流中出现多个Program时,播放Program与常规的播放方式则有所不同,需要指定对应的流,可以通过vst、ast、sst参数指定,例如希望播放Program 13中的音视频流,则通过如下命令行指定:
ffplay -vst 4 -ast 5 ~/Movies/movie/ChinaTV-11.ts ffplay的数据可视化分析应用 - 当播放视频时体验×××是如何解码每个宏块的,可以使用命令
ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 20 -t 10 -autoexit Titanic.ts
显示窗口内容
在输出的视频信息中,可以看到不同颜色的方块,下面来说明一下这些颜色代表着什么信息:
通过ffplay查看B帧预测与P帧预测信息,希望将信息在窗口中显示出来,使用命令
ffplay -vismv pf Titanic.ts
显示效果如图
通过图中的箭头可以看到p帧运动估计的信息
而vismv参数则是用来显示图像解码时的运动向量信息的,参数可以设置三种类型的运动向量信息显示
这个vismv参数将会在未来被替换掉,未来更多的是使用codecview这个filter来进行设置,如上面
图像,也可以通过下面这条命令完成
ffplay -flags2 +export_mvs Titanic.ts -vf codecview=mv=pf+bf+bb
当播放音频文件时,不确定文件的声音是否正常,噪声数据等分析,可以直接使用ffplay播放音频文件,播放的时候将会把解码后的音频数据以音频波形显示出来:
ffplay -showmode 1 Titanic.ts
过滤器(filter)
在多媒体处理中,filter的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。比如:视频翻转,旋转,缩放等。
语法:[input_link_label1] [input_link_label1]... filter_name=parameters [output_link_label1] [output_link_label2] ...
过滤器图link label:是标记过滤器的输入或输出名称
- 视频过滤器-vf 将原视频按顺时针旋转90度
ffplay -i test.mp4 -vf transpose=1 将原视频垂直翻转
ffplay -i test.mp4 -vf vflip transpose=1 将以下两个效果叠加
ffplay -i test.mp4 -vf vflip,transpose=1 - 音频过滤器-af 实现快速播放,声音速度是原始速度的1.5倍
ffplay -i test.mp4 -af atempo=1.5
本文福利, 免费领取C++音视频学习资料包、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓