FFmpeg有啥用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg有啥用?相关的知识,希望对你有一定的参考价值。
参考技术AFFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等,核心功能作用如下。
视频采集功能
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可
以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
ffmpeg在Linux下的视频采集
在Linux平台上,ffmpeg对V4L2的视频设备提供了很好的支持,如:
./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为/dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口(WWW.PC841.COM 百事网),将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
ffmpeg在windows下的视频采集
在windows下关于ffmpeg视频采集的资料非常少,但是ffmpeg还是支持windows下视频采集的。ffmpeg支持windows下video for windows(VFW)设备的视频采集,不过VFW设备已经过时,正在被WDM的视频设备所取代,但是ffmpeg还没有支持WDM的计划,不过好像有将WDM转为VFW的工具,因此ffmpeg还是可以在windows下进行视频采集的。
视频格式转换功能
ffmpeg视频转换功能。视频格式转换,比如可以将多种视频格式转换为flv格式,可不是视频信号转换 。
ffmpeg可以轻易地实现多种视频格式之间的相互转换(wma,rm,avi,mod等),例如可以将摄录下的视频avi等转成视频网站所采用的flv格式。
视频截图功能
对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅。
给视频加水印功能
使用ffmpeg 视频添加水印(logo)。
XlaBuilder 有啥用?
【中文标题】XlaBuilder 有啥用?【英文标题】:What is XlaBuilder for?XlaBuilder 有什么用? 【发布时间】:2022-01-17 05:25:48 【问题描述】:XLA 类XlaBuilder
有什么用? The docs 描述它的界面,但不提供动机。
文档中的演示文稿,以及源代码中XlaBuilder
上方的评论
// A convenient interface for building up computations.
暗示它只是一个实用程序。然而,这似乎并不能解释它在其他地方的行为。例如,我们可以构造一个XlaOp
和一个XlaBuilder
通过例如
XlaOp ConstantLiteral(XlaBuilder* builder, const LiteralSlice& literal);
在这里,我不清楚builder
扮演什么角色(注意构建XlaOp
s 的函数没有记录在已发布的文档中)。此外,当我添加两个 XlaOp
s(使用 +
或 Add
)时,似乎必须使用相同的构建器构建操作,否则我会看到
F tensorflow/core/platform/statusor.cc:33] Attempting to fetch value instead of handling error Invalid argument: No XlaOp with handle -1
确实,XlaOp
保留了XlaBuilder
的句柄。这向我表明XlaBuilder
具有更根本的意义。
除了标题问题之外,是否有使用多个XlaBuilder
s 的用例,或者您通常会为所有事情使用一个全局实例?
【问题讨论】:
【参考方案1】:XlaBuilder
是用于构建 XLA 计算的 C++ API - 从概念上讲,这就像构建一个包含各种操作的函数,您可以在不同的输入数据上反复执行。
一些背景知识,XLA 用作创建在各种目标加速器(CPU、GPU、TPU、IPU 等)上运行的可执行 blob 的抽象层,在概念上类似于“加速器虚拟机”,与之前的概念相似像PeakStream 这样的系统或导致ArBB 的工作线。
XlaBuilder
是一种将操作排入“计算”(类似于函数)的方法,您希望针对 XLA 可以针对的各种加速器集运行该计算。此级别的操作通常称为“高级操作”(HLO)。
返回的XlaOp
表示您刚刚入队的操作的结果。 (旁白/书呆子:这是“构建器”API 中使用的一种经典技术,它在后台以“静态单一分配”形式表示程序、操作本身和结果 的操作可以统一为一个概念!)
XLA 计算与函数非常相似,因此您可以考虑使用 XlaBuilder
执行的操作,例如构建函数。 (顺便说一句:它们被称为“计算”,因为它们不仅仅是一个简单的函数——从概念上讲,它们是可以与外部“宿主”世界对话并相互对话的协程通过网络设施。)
因此,XlaOp
s 不能在 XlaBuilder
s 中使用这一事实可能在该上下文中更有意义 - 就像在构建函数时您无法在内部获取中间结果一样其他函数,你必须用函数调用/参数来组合它们。在XlaBuilder
你可以Call
另一个构建计算,这就是你可能使用多个构建器的原因。
正如您所注意到的,您可以选择将所有内容内联到一个“大型构建器”中,但程序通常被构造为组合在一起的函数,并最终从几个不同的“入口点”调用”。 XLA 目前积极地专注于它看到 API 用户使用的入口点,但这是一个类似于内联决策的设计工件,如果 XLA 认为这是正确的做法,它可以在概念上重用从多个调用者构建/调用的计算。通常将事物排入 XLA 是最自然的做法,但便于您从“外部世界”进行描述,并允许 XLA 在 Just-in 中内联并积极专门化您在执行它们时建立的“入口点”计算-时间编译时尚。
【讨论】:
感谢 cdleary。所以一个XlaBuilder
就像程序员在写一个函数,每个XlaOp
要么代表函数中的中间值,要么代表函数的返回值,而计算(大概XlaComputation
)就是实际的final函数本身?你只能编写计算而不是XlaBuilder
s?以上是关于FFmpeg有啥用?的主要内容,如果未能解决你的问题,请参考以下文章
我使用时间戳/时基使用 libav(ffmpeg)进行帧搜索/读取有啥问题?