FFmpeg有啥用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg有啥用?相关的知识,希望对你有一定的参考价值。

参考技术A

FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等,核心功能作用如下。

视频采集功能

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 扮演什么角色(注意构建XlaOps 的函数没有记录在已发布的文档中)。此外,当我添加两个 XlaOps(使用 +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 具有更根本的意义。

除了标题问题之外,是否有使用多个XlaBuilders 的用例,或者您通常会为所有事情使用一个全局实例?

【问题讨论】:

【参考方案1】:

XlaBuilder 是用于构建 XLA 计算的 C++ API - 从概念上讲,这就像构建一个包含各种操作的函数,您可以在不同的输入数据上反复执行。

一些背景知识,XLA 用作创建在各种目标加速器(CPU、GPU、TPU、IPU 等)上运行的可执行 blob 的抽象层,在概念上类似于“加速器虚拟机”,与之前的概念相似像PeakStream 这样的系统或导致ArBB 的工作线。

XlaBuilder 是一种将操作排入“计算”(类似于函数)的方法,您希望针对 XLA 可以针对的各种加速器集运行该计算。此级别的操作通常称为“高级操作”(HLO)。

返回的XlaOp 表示您刚刚入队的操作的结果。 (旁白/书呆子:这是“构建器”API 中使用的一种经典技术,它在后台以“静态单一分配”形式表示程序、操作本身和结果 的操作可以统一为一个概念!)

XLA 计算与函数非常相似,因此您可以考虑使用 XlaBuilder 执行的操作,例如构建函数。 (顺便说一句:它们被称为“计算”,因为它们不仅仅是一个简单的函数——从概念上讲,它们是可以与外部“宿主”世界对话并相互对话的协程通过网络设施。)

因此,XlaOps 不能在 XlaBuilders 中使用这一事实可能在该上下文中更有意义 - 就像在构建函数时您无法在内部获取中间结果一样其他函数,你必须用函数调用/参数来组合它们。在XlaBuilder 你可以Call 另一个构建计算,这就是你可能使用多个构建器的原因。

正如您所注意到的,您可以选择将所有内容内联到一个“大型构建器”中,但程序通常被构造为组合在一起的函数,并最终从几个不同的“入口点”调用”。 XLA 目前积极地专注于它看到 API 用户使用的入口点,但这是一个类似于内联决策的设计工件,如果 XLA 认为这是正确的做法,它可以在概念上重用从多个调用者构建/调用的计算。通常将事物排入 XLA 是最自然的做法,但便于您从“外部世界”进行描述,并允许 XLA 在 Just-in 中内联并积极专门化您在执行它们时建立的“入口点”计算-时间编译时尚。

【讨论】:

感谢 cdleary。所以一个XlaBuilder就像程序员在写一个函数,每个XlaOp要么代表函数中的中间值,要么代表函数的返回值,而计算(大概XlaComputation)就是实际的final函数本身?你只能编写计算而不是XlaBuilders?

以上是关于FFmpeg有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 命令中的“破折号”选项有啥作用?

有啥方法可以加快 ffmpeg 处理时间

我使用时间戳/时基使用 libav(ffmpeg)进行帧搜索/读取有啥问题?

android中有啥方法可以使用FFMPEG库过滤掉噪声(低通滤波器)。有人能帮我吗

php有啥办法可以读取视频文件的长度

javacv跟opencv有啥区别