title:AmazonAWSKinesisVideoStreamswithKVSdemoexamplecategories:[LinuxC]tags:[AmazonCloudPlatform]date:2021/12/22作者:hackett微信公众号:OvertimeApeKinesisVideoStreams不仅仅用于存储视频数据。您还可以使用它来实时监控在云中接收到的视频流。您可以在AWS管理控制台中监控实时流,或开发您自己的监控应用程序以使用KinesisVideoStreamsAPI库显示实时视频。1.对象模型KinesisVideoStreamsCProducerLibrary基于称为平台独立代码库(PIC)的通用组件,可在GitHub上获取,网址为https://github.com/awslabs/am…。PIC包含与平台无关的低级业务逻辑。KinesisVideoStreamsC生产者库使用额外的API层包装PIC,允许特定于场景和特定于平台的回调和事件。KinesisVideoStreamsC生产者库在PIC之上具有内置组件:设备信息提供程序–公开可直接提供给PICAPI的DeviceInfo结构。有一组易于配置的提供程序,包括应用程序场景优化的提供程序,它们根据应用程序处理的流的数量和类型优化内容存储,以及根据可用RAM量配置的所需缓存量。StreamInfoProvider–公开一个StreamInfo结构,它可以直接提供给PICAPI。有一组易于配置的提供程序,特定于应用程序类型以及常见类型的流媒体场景。这包括视频、音频、音频/视频多轨等提供者。这些场景中的每一个都有默认值,您可以根据您的应用程序需求定义这些值。CallbackProvider——公开一个可以直接提供给PICAPI的ClientCallbacks结构。这包括一组易于配置的回调提供程序,用于网络(基于CURL的API回调)、授权(AWSCredentialsAPI)、错误回调的流式重试等。回调提供程序API采用一系列参数进行配置,例如AWS区域和授权信息(通过IoTCredentials或通过AWSAccessKeyId、SecretKey、SessionToken)。如果您的应用程序需要进一步处理特定的回调以实现某些特定于应用程序的逻辑,您可以使用自定义回调来增强回调提供程序。FrameOrderCoordinator–帮助多轨场景的音频和视频同步。它具有默认行为,您可以自定义这些行为以处理特定于应用程序的逻辑。它还简化了在提交给较低级别??的PICAPI之前首先在PIC帧结构中封装帧元数据。对于非多轨场景,该组件直接传递给PICputFrameAPI。C库提供以下对象来管理向KinesisVideoStreams发送数据的过程:KinesisVideoClient–包含有关设备的信息并维护回调以报告KinesisVideoStreams事件。KinesisVideoStream–表示包含有关视频流的参数的信息,例如名称、数据保留期、媒体内容类型等。2.环境准备为macOS安装以下构建依赖项:Autoconf2.69(licenseGPLv3+/Autoconf:GNUGPLversion3orlater)CMake3.7or3.8Pkg-ConfigFlex2.5.35Apple(flex-31)orlaterBison2.4(GNULicense)Automake1.15.1(GNULicense)GNULibtool(AppleInc.versioncctools-898)xCode(macOS)/clang/gcc(xcode-selectversion2347)JavaDevelopmentKit(JDK)(ForJavaJNIcompilation)Lib-Pkg为Ubuntu安装以下构建依赖项:安装Git:sudoapt-getinstallgit$git--versiongitversion2.14.1安装CMake:sudoapt-getinstallcmake$cmake--versioncmakeversion3.9.1安装Libtool:sudoapt-getinstalllibtool2.4.6-2安装libtool-bin:sudoapt-getinstalllibtool-bin$libtool--versionlibtool(GNUlibtool)2.4.6由GordonMatzigkeit撰写,1996安装GNUAutomake:sudoapt-getinstallautomake$automake--versionautomake(GNUautomake)1.15安装GNUBison:sudoapt-getinstallbison$bison-Vbison(GNUBison)3.0.4安装G++:sudoapt-getinstallg++g++--versiong++(Ubuntu7.2.0-8ubuntu3)7.2.0安装curl:sudoapt-getinstallcurl$curl--versioncurl7.55.1(x86_64-pc-linux-gnu)libcurl/7.55.1OpenSSL/1.0.2gzlib/1.2.11libidn2/2.0.2libpsl/0.18.0(+libidn2/2.0.2)librtmp/2.3安装pkg-config:sudoapt-getinstallpkg-config$pkg-config--version0.29.1安装Flex:sudoapt-getinstallflex$flex--versionflex2.6.1安装OpenJDK:sudoapt-getinstallopenjdk-8-jdk$java-versionopenjdkversion"1.8.0_171"setJAVA_HOME环境变量:exportJAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/运行构建脚本:./install-script3、下载并编译KVS下载:创建一个目录,然后克隆示例源代码git从GitHub仓库clone--recursivehttps://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git编译:在下载的源码中创建build目录,执行cmakemkdir-pamazon-在buildkinesis-video-streams-producer-c/buildcdamazon-kinesis-video-streams-producer-c/buildcmake..//这里cmake可能会失败,被屏蔽了,最好自带梯子你可以使用以下选项传递给cmake..-DBUILD_DEPENDENCIES-是否从源构建依赖库-DBUILD_TEST=TRUE-构建单元/集成测试,可能有助于确认对您的设备的支持。./tst/webrtc_client_test-DCODE_COVERAGE-启用覆盖范围报告-DCOMPILER_WARNINGS-启用所有编译器警告-DADDRESS_SANITIZER-使用AddressSanitizer构建-DMEMORY_SANITIZER-使用MemorySanitizer构建-DTHREAD_SANITIZER-使用ThreadSanitizer构建-DUNDEFINED_BEHAVIOR_SANITIZER-使用UndefinedBehaviorSanitizer构建-DALIGNED_MEMORY_MODEL-为仅对齐内存模型的设备构造。默认为关闭。完成后,返回构建并执行make构建WebRTCC开发包及其提供的示例。制作示例应用程序kinesis_video_cproducer_video_only_sample将文件夹samples/h264SampleFrames中的h.264编码视频帧发送到KinesisVideoStreams。以下命令将10秒的视频帧循环发送到KinesisVideoStreams:./kinesis_video_cproducer_video_only_sampleYourStreamName10如果您指定要从不同的文件夹(例如MyH264FramesFolder)发送H.264编码帧,则可以运行带有以下参数的命令:./kinesis_video_cproducer_video_only_sampleYourStreamName10MyH264FramesFolder觉得文章还不错的可以给个“三连”,文章会同步到你的个人微信公众号【超时猿】我是hackett,下次见
