
GStreamer
文章平均质量分 89
FREEDOM_X
这个作者很懒,什么都没留下…
展开
-
GStreamer——gst-launch-1.0(man)
【代码】GStreamer——gst-launch-1.0(man)原创 2024-07-08 10:25:36 · 598 阅读 · 0 评论 -
GStreamer——gst-launch-1.0
gst-launch-1.0 是一个构建和运行基本 GStreamer 管道的工具。在其最简单的形式中,一个 PIPELINE-DESCRIPTION 是由感叹号 (!) 分隔的元素列表。属性可以以 property=value 的形式附加到元素上。有关可能的 PIPELINE-DESCRIPTIONS 更完整的描述,请参阅下面的管道描述部分或咨询 GStreamer 文档。请注意,gst-launch-1.0 主要是一种调试工具。您不应该在它的基础上构建应用程序。原创 2024-07-03 15:27:23 · 1935 阅读 · 0 评论 -
GStreamer——教程——Android教程1:Link against GStreamer
它展示了,除了Java和C之间的互连(遵循标准的JNI程序)之外,将GStreamer支持添加到Android应用程序并不比将其添加到桌面应用程序复杂。它加载libgstreamer_android.so,其中包含所有GStreamer方法,以及libtutorial-1.so,其中包含本教程的C部分,如下所述。此目录包含通常的Android NDK结构:一个用于Java代码的src文件夹,一个用于C代码的jni文件夹和一个用于UI资源的res文件夹。确保在运行时此方法是可访问的是你的责任。原创 2024-06-24 11:29:10 · 1017 阅读 · 0 评论 -
GStreamer——教程——播放教程9:Digital audio pass-through
除了常见的模拟格式外,高端音频系统通常还接受数字形式的压缩或未压缩数据。这样做很方便,因为音频信号从计算机传输到扬声器时,其形式更能抵抗干扰和噪声,从而获得更高的质量。这种连接通常通过S/PDIF电缆进行,该电缆可以是光纤的(带有TOSLINK连接器)或者是同轴的(带有RCA连接器)。S/PDIF也被称为IEC 60958类型II(1998年之前称为IEC 958)。在这种方案中,GStreamer不需要执行音频解码;它只需输出编码数据,以直通模式工作,并让外部音频系统执行解码。原创 2024-06-24 10:31:46 · 1076 阅读 · 0 评论 -
GStreamer——教程——播放教程8:Hardware-accelerated video decoding
视频解码是非常消耗CPU的一个任务,尤其是1080P这种高分辨率的高清节目。幸运的是,现在的显卡都带了可编程的GPU,如果我们用GPU用来做视频解码,那么CPU就可以解放出来做其他的任务了。低功耗的CPU是无法做解码这样的工作的,这时硬件的配合就是必须的了。目前来说(2016年6月),每个GPU的制造商都提供了访问它们的硬件的方法(API),不幸的是各家并不相同,并没有一个强制的标准。VAAPI(视频加速API):最初由英特尔在2007年设计,针对基于Unix的操作系统上的X窗口系统,现在已开源。原创 2024-06-24 10:25:17 · 1967 阅读 · 0 评论 -
GStreamer——教程——播放教程7:Custom playbin sinks
playbin可以通过手动选择其音频和视频sink进行进一步定制。这允许应用程序仅依赖playbin提取和解码媒体数据然后自行管理数据的渲染/演示。这篇教程展示了:如何替换playbin的sink。如何使用一条复杂的pipeline作为sink。playbinaudio-sink和video-sink。应用程序仅需要初始化适当的GstElement并将其传递给playbin的这两个属性。然而这个属性仅允许使用单个element作为sink。原创 2024-06-24 10:17:36 · 739 阅读 · 0 评论 -
GStreamer——教程——播放教程6:Audio visualization
在playbin里面运行音频可视化是非常容易的。当遇到一个只有音频的流时,只需要正确地设置playbin的一些标志就行了。它会自己创建必要的element然后显示的。如果你想要增加实际的element的趣味性,你要自己实例化它然后通过vis-plug属性来告诉playbin。本教程GStreamer注册的所有关于可视化的element,选择了goom并传给了playbin。原创 2024-06-24 10:09:28 · 968 阅读 · 0 评论 -
GStreamer——教程——播放教程5:Color Balance
如果playbin 里面的任何一个element支持了这个接口,playbin 就仅仅简单地把应用的设置传给element,否则就会在pipeline中增加一个色彩平衡的element。另外,通道列表的获得后是根据指定的名字来解析获得通道的。这个接口允许查询可用的色彩平衡通道(GstColorBalanceChannel),包括它们的名字和值得有效区间,然后调整当前的值。然后就获得当前通道的值,修改它但确保它的值有效,使用gst_color_balance_set_value()来设置。原创 2024-06-24 10:02:25 · 619 阅读 · 0 评论 -
GStreamer——教程——播放教程4:Progressive streaming
当流启动,将从互联网获取数据,为了保证流畅的播放,保留了一小块未来数据缓冲区(见基础教程12:流式传输然而,数据将在它被播放或渲染后立即丢弃(程序中不会存在过去的数据缓冲)。这意味着,假如用户想要从过去的某个时刻开始回放,数据需要重新下载。为流媒体量身定制的媒体播放器,例如Youtube,通常将所有下载的数据存储在本地,以防意外情况。通常会使用一个图形窗口来展示当前文件的下载进度。playbin通过DOWNLOAD标记提供了类似的功能,为了更快的播放已下载的数据,playbin。原创 2024-06-24 09:55:15 · 793 阅读 · 0 评论 -
GStreamer——教程——播放教程3:Short-cutting the pipeline
在控制台窗口中,您应该会看到一条消息,指示媒体存储的位置,以及表示下载部分和当前位置的文本图表。如果您需要帮助来运行此代码,请参阅为您的平台运行教程部分:[Mac OS X]、[Windows][1]、[iOS]或[android]。将基于这个caps实例化下一个pipeline的下一个元素,假如caps没有被正确设置会影响整个pipeline的运行(一个常见的现象就是。的配置和Basic tutorial 8: Short-cutting the pipeline中的完全一致:caps被设置为。原创 2024-06-24 09:44:55 · 520 阅读 · 0 评论 -
GStreamer——教程——播放教程2:Subtitle management
我们已经知道(通过之前的教程)容器文件可以拥有多个音视频流,并且我们可以通过修改和属性从中选择要播放的流。切换字幕流也同样简单。值得注意的是,就像音频和视频一样,playbin负责为字幕选择正确的解码器,并且GStreamer的插件结构允许添加对新格式的支持就像复制文件一样简单。这些细节都对应用程序开发者不可见。除了内嵌在容器中的字幕,playbin还提供了从外部URI添加额外字幕流的可能性。这篇教程打开了一个包含了5个字幕流的文件,并且通过其他文件添加了一个字幕流(希腊语)。原创 2024-06-24 09:32:40 · 932 阅读 · 0 评论 -
GStreamer——教程——播放教程1:Playbin usage
往往,多音频、视频和字母流能够被嵌入在一个单独的文件中。最常见的情况是电影,它含有一个视频和音频流(立体声或5.1声道被视作单个流)。为了适应不同的语言,使用一个视频流和多个音频流的电影也越来越常见。这种情况下,用户选择一个音频流,应用程序将播放它而忽略其他的音频流。为了能够选择适当的流,用户需要知道这些流的确切信息,例如它们的语言。这些信息以一种“metadata”的格式被内嵌在流中,这篇教程将展示如何检索它。字幕也可以与音频和视频一起嵌入到文件中,关于字幕的处理细节将在播放教程2:字幕管理中讨论。原创 2024-06-18 16:00:51 · 1080 阅读 · 0 评论 -
GStreamer——教程——基础教程16:Platform-specific elements
除了Windows之外,它是大多数平台上推荐的视频接收器(在Windows上,推荐使用d3d11videosink)。特别是在Android和iOS上,它是唯一的可用视频接收器。在使用像playbin或autovideosink这样的元素时,通常不需要担心这个问题,但是,当您需要使用仅在特定平台上可用的接收器之一时,本教程会提示您一些特殊情况。在使用像playbin或autovideosink这样的跨平台元素时,您不必担心它们,但如果手动实例化它们,了解它们的个人特性是有好处的。方式的调整/颜色空间转换。原创 2024-06-18 14:40:55 · 1199 阅读 · 0 评论 -
GStreamer——教程——基础教程14:Handy elements
它取代了旧的解码bin元素。此元素为多个流同时提供队列,并通过允许一些队列在没有其他数据流接收数据时增长,或者允许一些队列丢弃未连接到任何东西的数据(而不是像更简单的队列那样返回错误)来简化它们的管理。经验法则是,每当使用像autovideosink这样Caps在设计时未知的元素,或者像解码用户提供的文件那样可能因外部因素而变化的元素时,始终使用videoconvert。queue2执行上面列出的queue的两个任务,此外,它还能够在磁盘文件上存储接收到的数据(或部分数据),以便以后检索。原创 2024-06-18 14:26:30 · 938 阅读 · 0 评论 -
GStreamer——教程——基础教程13:Playback speed
快进是一种以高于媒体正常(预期)速度播放的技巧;而慢动作则使用低于预期的速度。反向播放也是同样的方式,但从流的末尾开始到开头。所有这些技术所做的就是改变播放速率,这是一个等于1.0的变量用于正常播放,大于1.0(绝对值)的速度用于快速模式,小于1.0(绝对值)的速度用于慢速模式,正数表示正向播放,负数表示反向播放。GStreamer提供了两种改变播放速率的机制:Step事件和Seek事件。Step事件允许跳过给定数量的媒体,同时改变后续的播放速率(仅设置为正值)。原创 2024-06-18 14:02:55 · 1266 阅读 · 0 评论 -
GStreamer——教程——基础教程12:Streaming
在流媒体播放时,媒体数据块解码后立即排队等待呈现。这意味着,如果某个数据块延迟(在互联网上非常常见的情况),则呈现队列可能会耗尽,导致媒体播放停滞。通用解决方案是构建一个“缓冲区”,即允许在开始播放之前将一定数量的媒体数据块排队。这样,虽然播放开始会稍有延迟,但如果某些数据块延迟,由于队列中有更多的数据块等待,播放不会受到影响。事实证明,这个解决方案已经在GStreamer中实现,但之前的教程并没有从中受益。原创 2024-06-18 13:50:03 · 1017 阅读 · 0 评论 -
GStreamer——教程——基础教程10:GStreamer tools
这些工具位于GStreamer二进制文件的bin目录中。您需要转到此目录才能执行它们,因为它没有被添加到系统的PATH环境变量中(以避免过多地污染它)。只需打开终端(或控制台窗口),转到您的GStreamer安装的bin目录(再次阅读安装GStreamer部分以找出它在哪里), 您可以开始输入本教程中给出的命令了。在Linux,您应该使用安装在您的 分发,工具应该安装一个名为gstreamer1在Fedora风格发行版上,或在Debian/Ubuntu风格。分布。原创 2024-06-18 12:50:23 · 1500 阅读 · 0 评论 -
GStreamer——教程——基础教程9:Media information gatheringGoal
GstDiscoverer是pbutils库(插件基础工具)中的一个实用对象,它接受一个URI或一组URI,并返回关于它们的信息。它可以在同步或异步模式下工作。在同步模式下,只需调用一个函数,gst_discoverer_discover_uri(),它会阻塞直到信息准备就绪。由于这种阻塞,对于基于GUI的应用程序来说通常不太有趣,因此使用本教程中描述的异步模式。恢复的信息包括编解码器描述、流拓扑(流和子流的数量)和可用的元数据(如音频语言)。原创 2024-06-18 12:28:17 · 1092 阅读 · 0 评论 -
GStreamer——教程——基础教程8:Short-cutting the pipeline
应用程序可以通过几种方式与GStreamer管道中流动的数据进行交互。本教程描述了最简单的一种方式,因为它使用了专为这个目的创建的元素。用于将应用程序数据注入GStreamer管道的元素是appsrc,而其对应元素,用于将GStreamer数据提取回应用程序的是appsink。为了避免混淆名称,可以从GStreamer的角度来考虑:appsrc只是一个普通的源,它提供的数据仿佛是从天而降(实际上是由应用程序提供的)。原创 2024-06-17 14:10:45 · 681 阅读 · 0 评论 -
GStreamer——教程——基础教程7:Multithreading and Pad Availability
GStreamer是一个多线程的框架,这意味着在内部,它根据需要创建和销毁线程,例如,将流的处理从应用程序线程解耦。此外,插件也可以自由创建线程来处理它们的任务,例如视频解码器可以创建四个线程以充分利用CPU的四个核。最重要的是,应用程序在创建pipeline的时候可以明确的指定它的一个分支(pipeline的一部分)运行在不同的线程上(例如同时进行音频和视频的解码)。这使用queue插件完成,它的sink pad只负责将数据入队,并且在另一个线程中src pad将数据出队并传递给其余插件。原创 2024-06-17 13:05:43 · 890 阅读 · 0 评论 -
GStreamer——教程——基础教程6:Media formats and Pad Capabilities
正如已经展示的那样,Pads允许信息进入和离开一个元素。因此,一个Pad的Capabilities(或简称Caps)指定了可以通过该Pad传输的信息类型。例如,“分辨率为320x200像素、每秒30帧的RGB视频”,或者“每样本16位、5.1声道、每秒44100样本的音频”,甚至包括像mp3或h264这样的压缩格式。原创 2024-06-17 11:31:49 · 828 阅读 · 0 评论 -
GStreamer——教程——基础教程5:GUI toolkit integration
在这里,我们使用gst_structure_new()创建一个新的结构,并将其命名为tags-changed,以避免在我们想要发送其他应用程序消息的情况下混淆。最后,到目前为止,我们已经注册了一个handle_message函数,每当总线上出现一条消息时就会调用它,这迫使我们解析每条消息以查看它是否对我们感兴趣。注意,在停止状态中,我们将管道设置为就绪状态。在将控制权转移给GTK+之前,我们使用g_timeout_add_seconds()再次注册回调,这次是带有超时的回调,所以它每秒被调用一次。原创 2024-06-17 11:19:34 · 998 阅读 · 0 评论 -
GStreamer——教程——基础教程4:Time management
GstQuery是一种机制,允许向元素或 pad 询问 一条信息。在此示例中,我们询问 pipeline 是否正在寻找允许(某些来源,如直播,不允许查找)。如果它是允许的,那么,一旦movie 播放了十秒钟,我们使用查找跳到不同的位置。在前面的教程中,一旦我们设置并运行了pipeline , 我们的主要功能只是等待接收ERROR或EOS通过 bus。在这里,我们修改这个函数以定期唤醒并查询pipeline 中的流位置,以便我们可以打印它 屏幕。这类似于媒体播放器会做的事情,更新定期的用户界面。原创 2024-06-17 10:57:40 · 785 阅读 · 0 评论 -
GStreamer——教程——基础教程3:Dynamic pipelines
正如您将要看到的,本教程中的管道在设置为播放状态之前尚未完全构建。这没关系。如果我们不采取进一步行动,数据将到达管道末端,管道将生成错误消息并停止。但我们将采取进一步行动.....在这个例子中我们将打开一个多路复用的文件,音频和视频被存储在同一个容器文件中。负责打开此类容器的element称为解复用器,容器格式的一些示例有Matroska(MKV)、Quick Time(QT、MOV)、Ogg或Advanced Systems Format(ASF、WMV、WMA)。原创 2024-06-17 10:31:05 · 1241 阅读 · 0 评论 -
GStreamer——教程——基础教程2:GStreamer concepts
本教程展示了:如何使用() 创建element如何使用()创建一个空的pipeline。如何使用()向pipeline中添加element。如何使用()连接element。原创 2024-06-14 17:13:41 · 880 阅读 · 0 评论 -
GStreamer——教程——基础教程1:Hello World
这个函数将解析一条文本形式表示的pipeline并将其转化成一条真实的pipeline,使用起来十分便利。事实上,这个功能是非常方便,有一个完全围绕它构建的工具,您将获得非常熟悉(请参阅。是一个特殊的 element,它具备一个pipeline的所有特点,既有source,又有sink。如果您输入了错误的URI,或者文件不存在,或者您缺少一个插件,GStreamer提供了几种通知机制,但我们在本例中唯一要做的就是在出错时退出,所以不要期望太多反馈。,它是我们要播放的媒体的URI。尝试将其更改为某些内容。原创 2024-06-14 15:11:33 · 972 阅读 · 0 评论 -
GStreamer安装——iOS
它们被分组到框架中,这就是我们发布GStreamer和 它对iOS(和OS X)的依赖 传统的linux开发,我们强烈建议使用SDK 模板,因为它们在您的项目上设置了一些允许Xcode的变量 像在传统linux中一样查找、使用和链接GStreamer 开发。iOSSDK,如果它还没有包含在您的Xcode版本中, 可以从下载选项卡下的Xcode首选项菜单下载。在模板所做的其他一些事情中,这是为了在SDK支持的所有平台上保持开发一致而做出的决定。安装后,创建新的Xcode项目时,您应该会看到 模板类别下的。原创 2024-06-12 15:39:21 · 1320 阅读 · 0 评论 -
GStreamer安装——Android
您的设备上现在应该可以使用名为“Android教程1”的新应用程序,并带有GStreamer徽标。项目现在可以运行了。使用的Gradle构建系统中的NDK支持 Android Studio仍处于测试阶段,因此推荐的构建方式 使用GStreamer SDK仍然是使用“ndk-build”。开发机器是您开发Android应用程序的地方,然后您将其部署在目标机器上,目标机器显然应该是Android设备。该项目应该自动构建,一旦成功完成,应该可以运行运行>运行“教程X”的教程,前提是连接了设备并启用了USB调试。原创 2024-06-12 15:37:10 · 2097 阅读 · 0 评论 -
GStreamer编译安装——使用Meson从源代码编译
对于希望处理GStreamer代码本身和/或修改它的开发人员,或者希望快速尝试尚未在GStreamer正式版本中的功能的应用程序开发人员,这是推荐的设置。在mono存储库合并不同的GStreamer模块之前 单独的git存储库,并且有一个单独的meta-builder项目 调用。命令,您可以将构建目录指定为 参数。如果您想针对即将到来的开发或稳定的分支进行构建或开发 您应该使用包含mono的GStreamer模块的。, 可用于构建特定的GStreamer版本或构建未发布的版本 GStreamer代码。原创 2024-06-12 15:26:24 · 1728 阅读 · 0 评论 -
GStreamer编译安装——使用Cerbero从源代码编译
从版本1.15.2开始,Cerbero支持构建所有GStreamer配方, 所有强制依赖项(如glib、libffi、zlib等),以及一些外部的 与Visual Studio的依赖关系。此命令使用包管理器(如果可用)安装构建系统中缺失的部分,并在为Windows/MinGW或Android构建时下载必要的工具链。您应该将cerbero git目录添加到防病毒软件中排除的文件夹列表中,否则当Autotools执行重命名和删除等文件操作时,您将获得随机构建失败。东西可能会工作,也可能会坏掉,你可以保留碎片。原创 2024-06-12 15:14:26 · 1010 阅读 · 0 评论 -
GStreamer安装——Mac OS X
当您这样做时,它会警告您,但无论如何都有一个安装选项。否则,您可以转到系统偏好设置→安全和隐私→常规并选择允许从“任何地方”安装软件包的选项。如果您直接使用GCC(或CLANG)而不是XCode,您可以遵循类似的方法,为编译器和链接器提供标头和库搜索路径。原因是在这种情况下,我们直接链接到框架中包含的GStreamer库,而不是框架本身(这里有一点不同)。它已经包含在OS X的更高版本中。来表示库 搜索路径(就像我们在XCode中做的那样),构建相同的示例,并要求 必需的GStreamer标志。原创 2024-06-12 15:08:55 · 1421 阅读 · 0 评论 -
GStreamer安装——Windows
你 将需要DVD刻录软件),将文件挂载到虚拟DVD设备中 (您将需要DVD虚拟化软件)或解压文件 是一个常规的压缩文件(您将需要解压软件 了解ISO格式)。在Windows 8和Windows 10上,可能需要在安装后注销并重新登录到您的帐户,以便Visual Studio获取新定义的环境变量。每个版本的Visual Studio都会发生这种情况,而运行时DLL是 每个版本的Visual Studio都不同。此属性表包含标头和库所在的目录,以及编译器和链接器的必要选项,因此您无需更改项目中的任何其他内容。原创 2024-06-12 15:06:29 · 2709 阅读 · 0 评论 -
GStreamer安装——Linux
如果您使用其他GStreamer库,例如视频库,您必须在上述字符串中的gstream er-1.0之后添加额外的包(例如,视频库的gstream er-video-1.0)。在每个教程的源代码底部,您将按所需顺序找到该特定教程的命令,包括所需的库。如果您的应用程序是在libtools的帮助下构建的,例如使用时 Automake/autoconf作为构建系统,你必须运行 来自。教程的源代码可以从 教程页面转换为文本文件,但为方便起见,它也可用 在GIT存储库的。使用您感兴趣的教程的文件名 (原创 2024-06-12 14:59:37 · 1067 阅读 · 0 评论 -
GStreamer应用程序——第一个应用程序
本章将总结您在前几章中学到的所有内容。它描述了一个简单的GStreamer应用程序的所有方面,包括初始化库、创建元素、将元素打包到管道中以及播放此管道。通过完成所有这些,您将能够构建一个简单的Ogg/Vorbis音频播放器。原创 2024-06-12 14:41:37 · 964 阅读 · 0 评论 -
GStreamer应用程序——Buffers and Events
向上传递事件既用于应用程序-元素交互,也用于元素-元素交互,以请求流状态的更改,例如查找。简单的例子是创建一个缓冲区,分配内存,放入数据,并传递给下一个元素。该元素读取数据,做一些事情(比如创建一个新缓冲区并解码到其中),并取消引用缓冲区。流经管道的数据由缓冲区和事件的组合组成。缓冲区包含将流经您创建的管道的数据。源元素通常会创建一个新缓冲区,并通过pad将其传递到链中的下一个元素。元素可以就地修改缓冲区,即不分配新的缓冲区。缓冲区可以是只读的,等等。当没有元素引用缓冲区时,此重新计数将用于销毁缓冲区。原创 2024-06-12 14:21:35 · 365 阅读 · 0 评论 -
GStreamer应用程序——Pads 和 capabilities(功能)
请注意,有一个明显的差异之间的垫可能的能力(即通常你发现的垫模板的上限,因为他们显示在gst-inspect),允许的上限的pad(可以是相同的pad的模板上限或其子集,取决于对等pad的可能上限)和最后协商的上限(这些描述流或缓冲区的确切格式,只包含一个结构,没有可变位,如范围或列表,即它们是固定的上限)。同样,当流结束时,它将删除pad。对于pad,它可以是可能的上限列表(通常是pad模板功能的副本),在这种情况下,pad尚未协商,或者是当前流过该pad的媒体类型,在这种情况下,pad已经协商过了。原创 2024-06-12 14:16:54 · 841 阅读 · 0 评论 -
GStreamer应用程序——Bus
这意味着通过总线进行的管道与应用程序之间的交互是异步的,因此不适合一些实时用途,如音频轨道之间的交叉淡出、(理论上)无间隙播放或视频效果。请注意,如果您使用的是默认的GLib主循环集成,您可以连接总线上的“message”信号,而不是附加监视器。只需以message::的形式连接到感兴趣的信号,其中是特定的消息类型(下一节将解释消息类型)。对于某些消息,例如,只有顶级管道发出的消息对大多数应用程序来说可能很有趣(例如,用于状态更改通知)。这样,GLib主循环将检查总线上的新消息,并在有消息时通知您。原创 2024-06-12 12:21:40 · 779 阅读 · 0 评论 -
GStreamer应用程序——Bins
Bins允许您将一组链接的元素组合成一个逻辑元素。您不再处理单个元素,而是只处理一个元素,即Bin。当您构建复杂的管道时,会发现这非常强大,因为它允许您将管道拆分成更小的块。Bin还将管理其中包含的元素。它将对元素执行状态更改以及收集和转发总线消息。管道:管道是一个通用的容器,用于管理包含的元素的同步和总线消息。顶层bin必须是管道,因此每个应用程序至少需要一个这样的管道。应用程序程序员可以创建包含执行特定任务的元素的自定义bin。原创 2024-06-12 12:20:25 · 871 阅读 · 0 评论 -
GStreamer应用程序——元素
对于应用程序程序员来说,元素最好被可视化为黑盒子。在一端,你可能会放入一些东西,元素对它进行处理,然后在另一端输出其他东西。例如,对于一个解码器元素,你可以输入编码后的数据,然后元素会输出解码后的数据。在下一章(参见Pads和功能),你将学习更多关于元素中数据输入和输出的知识,以及如何在应用程序中进行设置。原创 2024-06-12 12:19:23 · 701 阅读 · 0 评论 -
GStreamer应用程序——初始化
使用 GST_VERSION_MAJOR、GST_VERSION_MINOR 和 GST_VERSION_MICRO 宏可以获取你正在构建的 GStreamer 版本,或者使用 gst_version 函数来获取你的应用程序链接的版本。我们将使用这些对象的可视化表示,以便我们可以可视化您稍后将学习构建的更复杂的管道。如本段所示,您可以使用 GOption 表来定义您的应用程序特定的命令行选项,并将此表与 gst_init_get_option_group 函数返回的选项组一起传递给 GLib 初始化函数。原创 2024-06-12 12:16:37 · 392 阅读 · 0 评论