FFMPEG完美入门资料---002---FFmpeg 支持能力说明

news2024/12/28 4:25:09

FFMPEG入门资料---001---介绍和参数说明_音视频开发老马的博客-CSDN博客

接着上文写:

2.3.1 FFmpeg 对编码解码器的支持 ffmpeg 支持的编解码器种类共有 280 多种, 涵盖了几乎所有常见音视频编码格式, 能解码几乎所有的音视频, 每种音视频编解码器的实现都在 libavcodec 目录下有具体的 C 语言实现。

  • 注:编码器和解码器的名称不是完全匹配的,因此有些编码器没有对应相同名称的解码器,反之, 解码器也一样。即使编码和解码都支持也不一定是完全对应的,例如 h263 解码器对应有 h263p 和 h263 编码器。

2.3.2 FFmpeg 对容器格式的支持 ffmpeg 支持对绝大多数的容器格式的读写操作,共计 190 多种, 涵盖了互联网上各 种常见媒体格式及日常生活中及专业应用中的各种媒体格式。 2.3.3 FFmpeg 对过滤器的支持

Filters说明
aformatConvert the input audio to one of the specified formats.
anullPass the source unchanged to the output.
aresampleResample audio data.
ashowinfoShow textual information for each audio frame.
abufferBuffer audio frames, and make them accessible to the filterchain.
anullsrcNull audio source, never return audio frames.
abuffersinkBuffer audio frames, and make them available to the end of the filter graph.
anullsinkDo absolutely nothing with the input audio.
copyCopy the input video unchanged to the output.
cropCrop the input video to width:height❌y.
drawboxDraw a colored box on the input video.
fadeFade in/out input video
fieldorderSet the field order.
fifoBuffer input images and send them when they are requested.
formatConvert the input video to one of the specified pixel formats.
gradfunDebands video quickly using gradients.
hflipHorizontally flip the input video.
lutCompute and apply a lookup table to the RGB/YUV input video.
lutrgbCompute and apply a lookup table to the RGB input video.
lutyuvCompute and apply a lookup table to the YUV input video.
negateNegate input video.
noformatForce libavfilter not to use any of the specified pixel formats for the input to the next filter.
nullPass the source unchanged to the output.
overlayOverlay a video source on top of the input.
padPad input image to width:height[❌y[:color]] (default x and y: 0, default color: black).
pixdesctestTest pixel format definitions.
scaleScale the input video to width:height size and/or convert the image format.
selectSelect frames to pass in output.
setdarSet the frame display aspect ratio.
setptsSet PTS for the output video frame.
setsarSet the pixel sample aspect ratio.
settbSet timebase for the output link.
showinfoShow textual information for each video frame.
slicifyPass the images of input video on to next video filter as multiple slices.
splitPass on the input to two outputs.
transposeTranspose input video.
unsharpSharpen or blur the input video.
vflipFlip the input video vertically.
bufferBuffer video frames, and make them accessible to the filterchain.
colorProvide an uniformly colored input, syntax is: [color[:size[:rate]]]
movieRead from a movie source.
nullsrcNull video source, never return images.
rgbtestsrcGenerate RGB test pattern.
testsrcGenerate test pattern.
buffersinkBuffer video frames, and make them available to the end of the filter graph.
nullsinkDo absolutely nothing with the input video.

2.3.4 FFmpeg 对图像颜色空间的支持 ffmpeg 支持常见的图像颜色空间,并且在 libavswcale 中定义了颜色空间转换的相关 函数实现各种颜色模式的互转。 2.4 FFmpeg 功能及使用说明 2.4.1 ffplay 对多媒体的支持能力验证

一、视频 3gp 177X144 支持播放, 在 windows 下播放正常, 但是在 linux 下面偶有 BUG 如果 发现画面无法显示而声音可以播放的情况下 可以试着切换全屏或者切换分辨率。

AVI208X176支持
320X240支持
720X400支持
720X576支持
DAT352X288支持
DiVX720X576支持
MKV320X240支持
352X288支持
704X304支持
720X576支持
MP4320X240支持
352X288支持
720X400支持
MPG320X240支持
352X288支持
480X576支持
720X576支持
720X480支持
VOB352X288支持
XVID720X576支持
MOV支持
RMVB支持

二、音频

AC348KHZ支持
APE11KHZ支持
22KHZ支持
44KHZ支持
48KHZ支持
MP332KHZ64Kbps支持
32KHZ128KbpS支持
32KHZ160Kbps支持
32KHZ192Kbps支持
32KHZ320Kbps支持
44KHZ64Kbps支持
44KHZ128Kbps支持
44KHZ160Kbps支持
44KHZ192Kbps支持
44KHZ320Kbps支持
48KHZ64Kbps支持
48KHZ128Kbps支持
48KHZ160Kbps支持
48KHZ192Kbps支持
48KHZ320Kbps支持
OGG32KHZ128Kbps支持
32KHZ192Kbps支持
44KHZ64Kbps支持
44KHZ128Kbps支持
44KHZ192Kbps支持
48KHZ64Kbps支持
44KHZ128Kbps支持
44KHZ192Kbps支持
WAV11KHZ支持
22KHZ16Kbps支持
44KHZ16Kbps支持
48KHZ16Kbps支持
WMA8KHZ16Kbps支持
11KHZ16Kbps支持
16KHZ16Kbps支持
22KHZ16Kbps支持
44KHZ16Kbps支持
48KHZ16Kbps支持

三、图像

PNG支持
JPG支持
JPEG支持
GIF支持
BMP支持

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

2.4.2 FFmpeg 格式转换

第一步:准备媒体

前面已经讲的很清楚了, ffmpeg 如何安装不在赘述。 准备好相应的文件, 如图 2-1 所示。

第二步:启动 ffmpeg 由于做的是格式转换,在 ffserver 上不能直观的看见结果,故我是在 linux 下进行的。 打开终端,值得一提的是格式转换需要超级用户才能进行,故在命令行输入:su,<回车>, 输入密码进入超级用户, 本例中, 以 FFmpeg 将 test.avi 转换为 test.mpg。 在命令行中输 入:./ffmpeg –i test.avi –r 25 –s 720x400 test.mpg<回车>。 其中原格式分辨率为 320x240, 将转为 720x400, -r 前面已经解释其含义, 表示设置帧频为 25。 转换成功后如图 2-2 所 示,前后两种格式播放效果如图 2-3 所示。相应的,转换为其他格式做相应的变化即可。

同时还可以在转换格式时进行强制的音视频转换, 如–vcodec + 格式, 将会强制将 视频按指定格式编码, -acodec +格式, 将会强制按指定格式编码音频信息。 在转换中有 很多其他参数可以指定,如码率、分辨率、帧率等,具体按照 ffmpeg 的参数说明指定参 数即可。 但有一条转低不转高的原则需要注意, 即品质差的音视频转换不建议转换到品 质好的音视频。

再说说如何在转换视频的时候将音频合成到视频中, 且覆盖其原来的音频。 这个现 在摸索出两种方法。 方法一:需要两条命令实现, 先在命令行中输入:

./ffmpeg –i test.avi -an –r 25 test.mpg <回车>

此时将生成一个没有声音的 test.mpg 视频, 再在命令行中输入:

./ffmpeg –i test.mpg –i test.mp3 –r 25 test1.mpg<回车>

此时将会生成一个名为 test1.mpg 的视频。 该视频播放时视频为 test.avi 的视频, 但音频 变为了 test.mp3 的音频了。 方法二:只要一条指令即可实现。 在命令行中输入:

./ffmpeg –i test.avi –i test.mp3 –vcodec copy –acodec copy –r 25 test2.mpg<回车>

此时将会生成一个名为 test2.mpg 的视频, 播放时其视频为 test.avi 的视频, 音频为 test.mp3。 –vcodec copy 为 force video codec(‘copy’ to copy stream)。 有一点需要注意, 文件命名不能有空格, 否则会导致编译时不能通过。 另外, -an 为不能使音频记录。 第三步:播放媒体 播放我们转换的媒体, 看看是否满足我们当初的愿望, 不出什么差错的话, 是完全 能够满足我们的要求的。 2.4.3 FFmpeg 视频截图 截取一张 300x200 尺寸大小的格式为 jpg 的一张图片:

./ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg

要截取指定时间的图片, 如 5 秒之后的:

./ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg

其中, -ss 后的单位为秒, 也可写成:-ss 00:00:05。 把视频的前 30 帧转换为一个动态的 gif 图。 需要说明的是, 转换成功之后, 如果用 ffplay 播放是看不出效果的, 建议换成其他图片播放器播放。 其转换命令为:

 ./ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif

也可以从视频中的第 10 秒开始截取后面的 5 秒内容转换为一个无限重播的动态 gif 图。 其命令为:

./ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif

上面两种动态 gif 都是只播一次, 想让其一直播, 可再加一个参数:-loop_output 0。

2.4.4 FFmpeg 屏幕录制

屏幕录制其命令为:

./ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg

其他相关参数可自行添加。 需要说明的是, 各个版本的 ffmpeg 对屏幕录制的命令不一。 如果你只想录制一个应用程序窗口或者桌面上的一个固定区域, 那么可以指定偏移位置 和区域大小。 使用 xwininfo -frame 命令可以完成查找上述参数。 注:ffmpeg 的屏幕录制功能只能在 Linux 环境下有效。 并且在配置时需要添加 –enable-x11grub 指令, 默认关闭。 2.4.5 FFmpeg 音视频采集 把摄像头的实时视频录制下来, 存储为文件

./ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf

录音, 其命令为:

./ffmpeg –i /dev/dsp -f oss test.mp3

2.5 FFmpeg 应用实例 2.5.1 用 FFserver 从文件生成流媒体 一、安装 ffmpeg 在 ubuntu 下, 运行 sudo apt-get ffmpeg 安装 ffmpeg, 在其他 linux 操作系统下, 见 ffmpeg 的编译过程(编译完成后可执行自动安装)。 二、准备预播放的媒体文件 如 test.Mp3,在本文档中,默认放入用户文件夹下得 Music 文件夹内.(直接从设备采 集不在本文档叙述范围之内) 三、修改 ffserver 配置信息 ffserver 配置文件为: /etc/ffserver.conf 打开, 填写配置信息.配置信息包括三方面:

  • 1.端口绑定等基本信息,在/etc/ffserver.conf 中有详细注释,在此不再重复,最终配 置信息为:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

2.媒体文件配置信息.本信息根据具体的媒体文件类型直接在配置文件中取消注释 掉相应文件类型的配置信息, 然后填写文件路径即可:

# MP3 audio
<Stream test.mp3> 
File "/home/xiaoma/Music/test.mp3"
Format mp2
NoVideo
</Stream>

四、启动 ffserver

在终端中运行如下代码来启动ffserver

sudo ffserver -f /etc/ffserver.conf

五、播放流媒体 在浏览器中输入http://127.0.0.1:8090/test.mp3即可播放音乐. 在终端中输入 ffplay http://localhost:8090/test.mp3 可播放流媒体. 2.5.2 用 FFserver 从设备生成实时流 一、准备媒体 按照上节步骤安装 ffmpeg,保证摄像头和声卡可用, 将从摄像头和声卡获取音视频 信息。 二、修改 ffserver 配置信息 ffserver 配置文件为: /etc/ffserver.conf 打开, 填写配置信息.配置信息包括三方面:

  • 1.端口绑定等基本信息,在/etc/ffserver.conf 中有详细注释,在此不再重复,最终配 置信息为:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000

2.fend(传冲信息),在文件播放中,基本不用动本配置信息,只需要根据具体情况分 配缓冲文件.最终配置信息如下:

 <Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 2M
ACL allow 127.0.0.1
</Feed>

(中间会有很多很多配置信息,都是关于音视频的,有些配置还不懂,慢慢摸索吧)

<Stream test1.mpg> 
Feed feed1.ffm
 Format mpeg
 AudioBitRate 32
 AudioChannels 1
 AudioSampleRate 44100
VideoBitRate 64
 VideoBufferSize 40
 VideoFrameRate 3
 VideoSize 160x128 
 VideoGopSize 12
 </Stream>
 # Flash
 <Stream test.swf>
 Feed feed1.ffm
 Format swf
 VideoFrameRate 2 
VideoIntraOnly
NoAudio
 </Stream>

三、启动 FFserver

在终端中运行如下代码来启动 ffserver.

sudo ffserver -f /etc/ffserver.conf

四、启动 ffmpeg 本例中, 以 ffmpeg 作为实时摄像头采集输入.在命令行中输入:

./ffmpeg -f video4linux2 -r 25 -i /dev/video0 /tmp/feed1.ffm 

如果有音频设备, 则采集音频的命令如下:

./ffmpeg -f oss -i /dev/dsp -f video4linux2 -r 25 -i /dev/video0 /tmp/feed1.ffm 

(音频格式参数自己配置) 五、播放流媒体 在浏览器中输入 http://127.0.0.1:8090/test1.mpg 即可播放音乐. 在终端中输入 ffplay http://localhost:8090/test.swf 可播放流媒体.

作者:张芳涛 

 

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

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

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

相关文章

月交付破万,长安深蓝成造车新势力“头部玩家”

近日&#xff0c;造车新势力纷纷公布2022年12月交付数据。通过数据&#xff0c;我们发现众多造车新势力都取得了不错的成绩&#xff0c;“头部玩家”的门槛甚至提升至万辆。与此同时&#xff0c;“排位”形势也与往年大相径庭&#xff0c;其中最令人意外的是2022年发布的深蓝品…

ESP8266+MicroPython开发:使用ESP8266+Thonny烧录MicroPython固件

使用ESP8266Thonny烧录MicroPython固件下载固件下载安装Thonny在Thonny烧录固件测试Thonny简单使用下载固件 MicroPython下载网址 根据ESP8266的flash选择&#xff0c;一般选择如图所示 自己随便选择一个版本下载&#xff0c;注意记住自己的下载路径 下载安装Thonny Thonn…

【vue系列-05】vue的生命周期(详解)

深入理解vue的生命周期一&#xff0c;vue的生命周期1&#xff0c;创建流程1.1&#xff0c;beforeCreate1.2&#xff0c;created2&#xff0c;挂载流程2.1&#xff0c;beforeMount2.2&#xff0c;mounted3&#xff0c;更新流程3.1&#xff0c;beforeUpdate3.2&#xff0c;update…

ConvNeXt V2论文翻译:ConvNeXt V2与MAE激情碰撞

文章目录摘要1 简介2 相关工作3 全卷积掩码自编码器4 全局响应归一化5 ImageNet实验6 迁移学习实验7 结论摘要 论文链接&#xff1a;ConvNeXt V2 在改进的架构和更好的表示学习框架的推动下&#xff0c;视觉识别领域在21世纪20年代初实现了快速现代化和性能提升。例如&#xf…

评价类模型(层次分析法与模糊评价模型)

一、评价类模型 综合评价的基本理论和数据预处理&#xff1a; 评价对象评价指标权重系数综合评价模型评价者 二、AHP法—层次分析法 通过打分解决评价类问题&#xff0c;两两比较&#xff0c;推算权重。 %function RIAHPRI(n) %利用MATLAB求随机一致性指标; i0;CI0;Azer…

pyqt5下的QInputDialog跟QFileDialog以及关闭主窗口子窗口自动关闭

QInputDialog 具体的参数可以参考&#xff1a; Qt&#xff1a;30---QInputDialog标准输入对话框_mb6128aabee41d4的技术博客_51CTO博客 官网连接&#xff1a; QInputDialog Class | Qt Widgets 5.15.12 这里只介绍QInputDialog.getText 代码实现&#xff1a; from PyQt5.…

【从零开始学爬虫】采集食品行业最新报价数据

l 采集网站 【场景描述】采集食品行业最新报价数据。 【源网站介绍】中国报告大厅网休闲食品行业数据频道提供休闲食品行业数据信息&#xff0c;在此有大量休闲食品行业数据信息可供选择&#xff0c;是一个可以帮助休闲食品行业了解数据的平台。 【使用工具】前嗅ForeSpider…

hbase2.x orphan regions on filesystem

问题描述&#xff1a;orphan regions on filesystem 可以通过主master web页面的HBCK Report查看 也可以通过hbck2工具查看 # 查看指定表 hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta default:tableName # 查看命名空间下所有…

Git分支开发中的问题

前言我们在开发中&#xff0c;经常是很多人开发同一份代码&#xff0c;早期没有git工具的时候那可真是噩梦&#xff0c;要复制来复制去&#xff0c;不止繁琐&#xff0c;还容易出错&#xff0c;所以后来涌现了各种代码工具&#xff0c;Svn&#xff0c;Git等等&#xff0c;而Git…

一、mysql基础、MySQL的安装及卸载、DML、DQL

MySQL基础 1、数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果&#xff0c;当然文件存储也有它的弊端。 假设在文件中存储以下的数据&#xff1a; 姓名 年龄 性别 住址 张三 23 男 北京西三…

干货|app自动化测试之Andriod WebView如何测试

Hybrid App&#xff08;混合模式移动应用&#xff09;是介于 Web-app、Native-app 之间的 app&#xff0c;本质上是 Native-app 中嵌入 WebView 组件&#xff0c;在 WebView 组件里可以访问 Web App。Hybrid App 在给用户良好交互体验的同时&#xff0c;还具备了 Web App 的跨平…

Python数学建模问题总结(2)数据可视化Cookbook指南【源自Google可视化团队】

今天跟大家分享一套谷歌数据可视化团队形成的全面的数据可视化指南&#xff0c;涵盖了设计原则、图表分类、图表的选用、样式设计、交互设计、仪表板设计等方面。一、可视化问题不论你是从事数据相关工作&#xff0c;还是业务相关工作&#xff0c;或多或少都会需要用到数据可视…

docker 部署maven服务器用于项目的部署和发布

书接上文 现状: 已经搭建好了maven远程服务器,并将自己的项目从自己的pc部署到maven远程服务器.假设了kie-server集群可以每个node都连接这个远程服务器 要做的: 1.创建kie-server集群的时候设置环境变量. 2.看是否能连上自己搭建的maven服务器.3.如果2 ok 把kie-server需要…

干货|app自动化测试之Appium 原理 与 JsonWP 协议分析

想要使用 Appium 进行测试&#xff0c;那么就一定要先了解Appium的原理。Appium 不仅能够实现移动端的 JSONWP&#xff0c;并且延伸到了 Selenium 的 JSONWP&#xff0c;它能够控制不同移动设备的行为&#xff0c;例如通过会话安装和卸载 APP。Appium 原理图中依赖关系解释&…

MySQL高级 【视图】

目录 1&#xff1a;视图 1.1&#xff1a;介绍 1.2&#xff1a;语法 1.3&#xff1a;检查选项 1.4&#xff1a;视图的更新 1.5&#xff1a;视图作用 1.6&#xff1a;案例 1&#xff1a;视图 1.1&#xff1a;介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。…

一文看懂什么是「低代码」!低代码真的能取代程序员吗?

早在数年前&#xff0c;亚马逊、微软、阿里、腾讯等国内外巨头公司就已纷纷入局“低代码”赛道&#xff0c;而很多人连低代码是什么&#xff0c;究竟有什么用都不太知道。 本文就从概念讲起&#xff0c;结合三个生动的行业案例&#xff0c;一文讲通“什么是低代码”。 文章有…

【强训】Day03

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、选择二、编程1. 字符串中找出连续最长的数字串2. 数组中出现次数超过一半的数字答案1. 选择2. 编程普通小孩也要热爱生活&#xff01; 一、选择 以下代码运行输出的是&#xff08;&#xff09; public class …

都2023了,为什么选择Nacos,这篇文章让你入门Nacos

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 Nacos入门 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 ♨️如果文章有什么…

传奇开服一条龙GEE引擎登录器配置教程

1、首先我们打开我们版本文件夹找到登录器文件夹进入找到GEE登录器配置器&#xff08;MakeGameLogin.exe&#xff09;打开2、接下来开始填写我们的主列表和备列表&#xff0c;这时候我们要自己创建一个列表&#xff0c;因为登录器自带的列表肯定是读取不了的&#xff0c;我们在…

Speckle核心概念【3D数据引擎】

本节将详细介绍你的3D数据如何发送到 Speckle 并存储在 Speckle 中。 无论你是 Speckle 的新手还是只是需要复习&#xff0c;这都是一个很好的起点&#xff01; 1、关于Speckle术语 我们尽量使本指南简单明了&#xff0c;删除了技术语言&#xff0c;除非绝对必要。 值得注意的…