FFPlay命令全集合

FFPlay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器。

ffplay工具下载并播放视频,可以辅助卡看流信息。

官网下载地址:http://ffmpeg.org/download.html#build-windows

下载build好的exe程序:

此处下载的是:ffmpeg-20200403-52523b6-win64-static.zip

下载后解压,ffplay.exe就在文件夹bin中

在这里插入图片描述

1 FFPlay

打开命令窗口,进入ffplay.exe的目录中:或者把bin添加到环境变量

命令参考:https://www.cnblogs.com/renhui/p/8458802.html

格式:ffplay [选项] [‘输入文件’] 参考以上链接说明
在这里插入图片描述

1.1 播放视频

ffplay http://mp4.res.hunantv.com/mediafiles/wiad_creative/532/1469975702.mp4

可以本地也可以网络流。
在这里插入图片描述
播放网络流:

ffplay rtsp://xxxxxxxxxxxx进行播放

1.2 播放音频

播放mp3

ffplay shy.mp3

播放pcm

ffplay -ar 44100 -ac 1 -f s16le -i xxx.pcm

各个参数:
-ar 表示采样率
-ac 表示音频通道数
单声道是 1,Android 中为 AudioFormat.CHANNEL_IN_MONO
双声道是 2,Android 中为 AudioFormat.CHANNEL_IN_STEREO
-f 表示 pcm 格式,sample_fmts + le(小端)或者 be(大端)
sample_fmts可以通过ffplay -sample_fmts来查询
-i 表示输入文件,这里就是 pcm 文件

1.3 播放日志等级设置

loglevel参数控制:
ffplay -loglevel trace http://mp4.res.hunantv.com/mediafiles/wiad_creative/532/1469975702.mp4
想要更详细看到日志,可以看到请求头和网络包
在这里插入图片描述对应源码定义类型:
在这里插入图片描述
每个级别定义的数值代表了严重程度,数值越小代表越严重。
默认的级别是AV_LOG_INFO。
此外,还有一个级别不输出任何信息,即AV_LOG_QUIET

1.4 ffplay音画同步

ffplay也是一个视频播放器,所以不得不提出来的一个问题是:音画同步。ffplay的音画同步的实现方式其实有三种,分别是:以音频为主时间轴作为同步源,以视频为主时间轴作为同步源,以外部时钟为主时间轴作为同步源。

首先需要说明的是,播放器接收到的视频帧或者音频帧,内部都是会有时间戳(PTS时钟)来标识它实际应该在什么时刻展示,实际的对齐策略如下:

比较视频当前的播放时间和音频当前的播放时间,如果视频播放过快,则通过加大延迟或者重复播放来降低视频播放速度,如果视频播放满了,则通过减小延迟或者丢帧来追赶音频播放的时间点。

关键就在于音视频时间的比较和延迟的计算,当前在比较的过程中会设置一个阈值,如果超过预设的阈值就应该作出调整(丢帧或者重复渲染),这就是整个对齐策略。

在使用ffplay的时候,我们可以明确的指定使用那种对齐方式,比如:

ffplay pm.mp4 -sync audio

上面这个命令显式的指定了使用以音频为基准进行音视频同步的方式播放视频文件,当然这也是ffplay的默认播放设置。

ffplay pm.mp4 -sync video

上面这个命令显式的指定了使用以视频为基准进行音视频同步的方式播放视频文件。

ffplay pm.mp4 -sync ext

上面这个命令显式的指定了使用外部时钟为基准进行音视频同步的方式播放视频文件

2 FFMpeg命令

主要是视频流转换输出用
命令格式:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[options][`-i’ input_file]]… {[options] output_file}…
1、参数选项:
(1) -an: 去掉音频
(2) -acodec: 音频选项, 一般后面加copy表示拷贝
(3) -vcodec:视频选项,一般后面加copy表示拷贝
2、格式:
(1) h264: 表示输出的是h264的视频裸流
(2) mp4: 表示输出的是mp4的视频
(3)mpegts: 表示ts视频流

2.1 转流

H264视频转ts视频流

ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts

H264视频转mp4

ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4

ts视频转mp4

ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4

mp4视频转flv

ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv

2.2 转音频

转MP3为wav

ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wav

m4a为wav

ffmpeg -i input.m4a -acodec pcm_s16le -ac 2 -ar 44100 output.wav

wav与PCM的相互转换

ffmpeg -i input.wav -f s16le -ar 44100 -acodec pcm_s16le output.raw

PCM转wav

ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input.raw output.wav

ffmpeg -i ad.m4a -ar 48000 -ac 2 -f s16le ad_48000_2_s16le.pcm

ffmpeg -i ad.m4a -ar 48000 -ac 2 -f s16le ad_48000_2_s16le.pcm

aac to ac3:

ffmpeg -i audio.aac -acodec ac3 audio.ac3

ffmpeg -i input.wav -acodec ac3 output.ac3

提取左右声道的视频

ffmpeg -i ad.mp4 -af “pan=stereo|c1=FR” -y ad-right.mp4

ffmpeg -i ad.mp4 -af “pan=stereo|c0=FL” -y d-left.mp44

2.3 拉流

网络流转本地文件:

ffmpeg -i http://www.xxx.com/xxx.m3u8 name.mp4

ffmpeg强制使用TCP方式处理rtsp流 ,输出都cc.ts

ffmpeg -rtsp_transport tcp -i rtsp://182.131.121.48:12059/CMSBK/0021.ts cc.ts

2.4 推流

本机推流:UDP封装的MPEG-TS

ffmpeg -re -i sintel.ts -f mpegts udp://127.0.0.1:8880

ffmpeg -stream_loop 3 -re -i D:\apache\Apache24\htdocs\chongsheng1.mp4 -f mpegts udp://172.31.10.9:8880

本机推流:首先经过RTP封装,然后经过UDP封装的MPEG-TS

ffmpeg -re -i sintel.ts -f rtp_mpegts udp://127.0.0.1:8880

ffmpeg -stream_loop 3 -re -i D:\apache\Apache24\htdocs\chongsheng1.mp4 -f rtp_mpegts udp://172.31.10.9:8880

本地推流:RTP协议流(视频流)

ffmpeg -re -i D:\apache\Apache24\htdocs\chongsheng1.mp4 -c:v copy -an -f rtp_mpegts rtp://172.31.10.9:8881

本地推流:RTP协议流(音频流)

ffmpeg -re -i D:\apache\Apache24\htdocs\chongsheng1.mp4 -vn -acodec copy -f rtp_mpegts rtp://172.31.10.9:8881

本地推流:RTP协议流(音视频流)

参考:https://www.codenong.com/cs106467422/

ffmpeg -re -i D:\apache\Apache24\htdocs\chongsheng1.mp4 -c:v copy -an -f rtp_mpegts rtp://172.31.10.9:8881 -vn -acodec copy -f rtp rtp://172.31.10.9:8882

2.3 抽帧

每隔10秒抽帧:

ffmpeg -skip_frame nokey -i D:\videos\jljt_hevc_aac_60fps.ts -vf select=‘not(mod(floor(t-start_t),10))+gt(t-start_t,selected_n*10)’,scale=128:72,tile=8x8 -an -vsync 0 keyframes%03d.png

每隔5秒抽帧:

ffmpeg -skip_frame nokey -i http://xxxx.m3u8 -vf select=‘(isnan(prev_selected_t)+gte(t-prev_selected_t,5))(not(mod(floor(t-start_t),10))+gt(floor(t-start_t),selected_n10))’,scale=400:200,tile=6x6 -an -vsync 0 vod_new/test3_1/%d.jpg

2.5 图像转换

图片转yuv:

ffmpeg -i C:\Users\Administrator\Desktop\screenshot1.png -s 1920x1080 -pix_fmt yuvj420p C:\Users\Administrator\Desktop\screenshot1.yuv

yuv转JPG:

ffmpeg -pix_fmt yuvj420p -s 1920x1080 -i C:\Users\Administrator\Desktop\screenshot1.yuv C:\Users\Administrator\Desktop\b.jpg

2.6 编码

YUV编码H264:

ffmpeg -s 1920x1080 -i src01_1920x1080.yuv -b:v 7776k -r 25 -vcodec libx264 -x264opts ssim src01_1920x1080_0.150.h264

YUV编码mpg:

ffmpeg -s 1920x1080 -i src01_1920x1080.yuv -b:v 7776k -r 25 -vcodec mpeg2video src01_1920x1080_0.150.mpg

2.7 MP4转H264

ffmpeg -i D:\zhibo\video\douyin.mp4 -vcodec copy -bsf h264_mp4toannexb -f h264 douyin.h264

说明:

-i douyin.mp4 :是输入的MP4文件

-vcodec copy:从MP4封装中进行拷贝

-bsf h264_mp4toannexb:从MP4拷贝到annexB封装

-f h264:采用h.264格式

douyin:输出的文件名称

ffmpeg.exe -i http://mobaliyun.res.mgtv.com/new_video/2022/05/10/1295/60DF4C8228F500CE5584E23968DE2739_20220510_1_1_1241.mp4?sftc=vnds1_vtp4 -vcodec copy -bsf h264_mp4toannexb -f h264 douyin.h264

H264转Mp4

ffmpeg -i test.264 -vcodec copy -f mp4 test.mp4

2.8 H264 转YUV

ffmpeg -i src01_1920x1080_0.150.h264 src01_1920x1080_0.150_264.yuv

ffmpeg -i src01_1920x1080_0.150.mpg src01_1920x1080_0.150_mpg2.yuv

2.9 图片和yuv 转换

ffmpeg -s 1280x720 -pix_fmt yuv420p -i yuv420p_1280x720.yuv -pix_fmt rgb24 rgb24_1280x720.rgb

ffplay -pixel_format rbg24 -video_size 1280x720 -i rgb24_1280x720.rgb

ffmpeg -i a.jpg -s 640x480 -pix_fmt yuv422p a.yuv

ffmpeg -pix_fmt yuv422p -s 640x480 -i a.yuv b.jpg

3 推流

3.1 打包成HLS点播流

ffmpeg -i ad.mp4 -c:v libx264 -c:a copy -f hls m3u8\ad.m3u8
打包后的流放到服务器即可访问

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:1.920000,
ad1.ts
#EXTINF:3.680000,
ad2.ts
#EXTINF:2.560000,
ad3.ts
#EXTINF:1.800000,
ad4.ts
#EXTINF:1.680000,
ad5.ts
#EXT-X-ENDLIST

-segment_time每隔十秒切一个文件

ffmpeg -i dnf.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list video/index.m3u8 -segment_time 10 video/%03d.ts

4 获取帧信息

ffprobe -show_frames We_Are_Young.mp4 > frames.info

在这里插入图片描述

统计I帧数量

keyframe=1 : key frame

pict_type=I : I-frame

cat frames.info | grep “pict_type=I” |wc -l

统计视频帧数量

cat frames.info | grep “media_type=video” |wc -l

ffprobe -show_format -show_streams filename

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS未响应服务问题的解决(电脑连着网但浏览器访问不了网页)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

vue视频流播放,支持多种视频格式,如rmvb、mkv

先将视频转码为ts ffmpeg -i C:\test\3.rmvb -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls C:\test\a\output.m3u8 后端配置接口 import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.spring…

从 0 开始实现一个 SpringBoot + Vue 项目

从 0 开始实现一个 SpringBoot Vue 项目 从 0 开始实现一个 SpringBoot Vue 项目 软件和工具创建 SpringBoot 后端项目创建 MySQL 数据库配置文件实现增删改查接口 Model 层mapper 层service 层controller 层测试 实现项目功能接口 代码测试 创建 Vue 前端 安装 Node.js配置…

每日一题洛谷P1423 小玉在游泳c++

#include<iostream> using namespace std; int main() {double s;cin >> s;int n 0;double sum 0;double k 2;while (sum < s) {sum k;n;k * 0.98;}cout << n << endl;return 0; }

flutter跨端UI框架简介

flutter跨端UI框架简介 简介 Flutter是由Google开发的开源应用开发框架&#xff0c;主要用于构建高性能、跨平台的移动、Web和桌面应用程序。Flutter使用Dart语言&#xff0c;提供了一套丰富的Widgets&#xff0c;使开发者能够快速创建美观的用户界面。其最大特点是热重载功能…

java提取系统应用的日志中的sql获取表之间的关系

为了获取到对应的sql数据&#xff0c;分了三步骤 第一步&#xff0c;获取日志文件&#xff0c;解析日志文件中的查询sql&#xff0c;递归解析sql&#xff0c;获取表关系集合 递归解析sql&#xff0c;获取表与表之间的关系 输出得到的对应关联关系数据 第二步&#xff0c;根据获…

16_动态提示窗口_协程延时

创建动态提示窗口DynamicWnd.cs 编写代码 using UnityEngine; using UnityEngine.UI; //功能 : 动态窗口界面 public class DynamicWnd : WindowsRoot{public Animation tipsAni;public Text txtTips;protected override void InitWnd() {base.InitWnd();//在启动时先隐藏提示…

路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)

近期因公司新办公区建设&#xff0c;原有的爱快路由器的SDWAN功能实现分支之间互联的服务还需要继续使用。在原有的小型网络中&#xff0c;使用的爱快路由器当作网关设备&#xff0c;所以使用较为简单,如下图所示。 现变更网络拓扑为三层网络架构&#xff0c;但原有的SDWAN分支…

隐私保护+性能优化,RyTuneX 让你的电脑更快更安全

RyTuneX 是一款专为 Windows 10 和 11 用户量身打造的系统优化工具&#xff0c;采用先进的 WinUI 3 框架开发&#xff0c;以其现代化的设计风格和强大的功能集合脱颖而出。这款工具不仅界面简洁美观&#xff0c;还提供了多样化的系统优化选项&#xff0c;旨在帮助用户最大化设备…

java上传图片功能实现

1 MinIO核心概念 下面介绍MinIO中的几个核心概念&#xff0c;这些概念在所有的对象存储服务中也都是通用的。 对象&#xff08;Object&#xff09; 对象是实际的数据单元&#xff0c;例如我们上传的一个图片。 存储桶&#xff08;Bucket&#xff09; 存储桶是用于组织对象的命…

深入MapReduce——引入

引入 前面我们已经深入了HDFS的设计与实现&#xff0c;对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值&#xff0c;一定是需要从数据中挖掘出价值才行&#xff0c;这就需要我们拥有海量数据的计算处理能力。 下面我们还是…

解决npm install安装出现packages are looking for funding run `npm fund` for details问题

当我们运行npm install时&#xff0c;可能会收到类似以下的提示信息&#xff1a;“x packages are looking for funding.” 这并不是错误提示&#xff0c;也不会影响项目的正常运行。其实实在提醒有一些软件包正在寻求资金支持。 根据提示输入npm fund可以查看详细的信息&#…

小米Vela操作系统开源:AIoT时代的全新引擎

小米近日正式开源了其物联网嵌入式软件平台——Vela操作系统&#xff0c;并将其命名为OpenVela。这一举动在AIoT&#xff08;人工智能物联网&#xff09;领域掀起了不小的波澜&#xff0c;也为开发者们提供了一个强大的AI代码生成器和开发平台。OpenVela项目源代码已托管至GitH…

2025_1_22打卡

402. 移掉 K 位数字 - 力扣&#xff08;LeetCode&#xff09; 279. 完全平方数 - 力扣&#xff08;LeetCode&#xff09;

【搞机】GMK-G3因特尔n100处理器核显直通win10虚拟机

环境 系统&#xff1a;Proxmox Virtual Environment 8.1.3 Linux内核&#xff1a;Linux version 6.5.13-6-pve (buildproxmox) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC PMX 6.5.13-6 (2024-07-26T12:34Z) CPU&#x…

MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理

论文链接&#xff1a;https://arxiv.org/pdf/2501.07227v1 1. 摘要及主要贡献点 摘要&#xff1a; 视频因果推理旨在从因果角度对视频内容进行高层次的理解。然而&#xff0c;目前的研究存在局限性&#xff0c;主要表现为以问答范式执行&#xff0c;关注包含孤立事件和基本因…

2024“博客之星”——我的博客成长与技术洞察

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 一、引言二、个人成长与突破盘点&#xff08;一&#xff09;技能提升与知识拓展&#xff08;二&#xff09;创作风格与影响力提升&#xf…

KOC营销2.0:出海品牌在2025年春节的创新故事讲述

在全球化日益加深的今天&#xff0c;春节已不再是中国独有的节日符号&#xff0c;它逐渐成为了世界各地文化交融的一部分。对于出海品牌而言&#xff0c;春节不仅是连接中国消费者与海外市场的桥梁&#xff0c;更是展示品牌文化深度与创意的重要契机。KOC营销作为新时代的传播策…

最新-CentOS 7安装1 Panel Linux 服务器运维管理面板

CentOS 7安装1 Panel Linux 服务器运维管理面板 一、前言二、环境要求三、在线安装四、离线安装1.点击下面1 Panel官网链接访问下载&#xff0c;如未登录或注册&#xff0c;请登录/注册后下载2.使用将离线安装包上传至目标终端/tem目录下3.进入到/tem目录下解压离线安装包4.执行…

基于springboot+vue的高校社团管理系统的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…