Replies: 2 comments 5 replies
-
I've progressed on this matter so that it can be deployed and running on iOS devices on ARM64 (Apple M processors), see the recipe below. At this point my test app on the iPad starts where it defines a pipeline in which the sink is to an AWS Kinesis video stream that is already created (which I've already verified on my MAC OSx). However, on the iPad it fails due to certificate issues see below:
I'm looking into possibly using the However, this seems to me as heavy handed solution. I'd rather find another option. Any suggestions? Regards, Recipe to get AWS Video Stream AWS Video Stream GStreamer plugin build and deployed for iOS platforms Build the AWS Video Stream GStreamer plugin as a static library libgstkvssink.a as well as all of its dependencies such as:
Adapt the XCode project(s) as to reference as to provide the library folder path(s) to those static libraries and directives for each static library. After which, provide the following code to declare & register the kvssink plugin. This is usually done in the gst_ios_init.m file, see GStreamer's iOS examples. ...
#if defined(GST_IOS_PLUGIN_KVSSINK)
GST_PLUGIN_STATIC_DECLARE(kvssink);
#endif
void
gst_ios_init (void)
{
...
#if defined(GST_IOS_PLUGIN_KVSSINK)
GST_PLUGIN_STATIC_REGISTER(kvssink);
#endif
...
} |
Beta Was this translation helpful? Give feedback.
-
I've troubleshooting the issue CA certificates when running on iOS devices. Typically those certificates are stored in Keychain but since iOS 13.0 and the Secure-Transport capabilities is deprecated and to use Network framework instead and thus libCURL doesn't have access the CA certificates stored in the Keychain.
As a workaround, I proceeded to bundle a CA certificates file with the app and for the app to set an environment variable which the AWS Kinesis video streamer code when preparing a CURL request when the certPath variable is undefined or empty. .../libkvscproducer/kvscproducer-src/src/source/Request.c STATUS createCurlRequest(HTTP_REQUEST_VERB curlVerb, PCHAR url, PCHAR body, STREAM_HANDLE streamHandle, PCHAR region, UINT64 currentTime,
UINT64 connectionTimeout, UINT64 completionTimeout, UINT64 callAfter, PCHAR certPath, PAwsCredentials pAwsCredentials,
PCurlApiCallbacks pCurlApiCallbacks, PCurlRequest* ppCurlRequest)
{
...
PCHAR caCertPath = (certPath != NULL && certPath[0] != 0) ? certPath : getenv(CACERT_PATH_ENV_VAR);
if (caCertPath != NULL) {
STRNCPY(pCurlRequest->requestInfo.certPath, caCertPath, MAX_PATH_LEN);
}
...
Unfortunately, I've arrived at the next impediment (issue) where AWS Kinesis Video Producer SDK C++ fails to start the sink. This time the error message is cryptic (at best) with logging set to trace levels.
The value 0x15000020 without a message isn't significant about where to proceed in investigating the cause or causes. I'd appreciate any insight for those whom support this project or from some that has become familiar with the implementation details on how to troubleshoot such issues with this project. Regards, Logged messages...
|
Beta Was this translation helpful? Give feedback.
-
The GStreamer project supports Apple's iOS platform* such as iPhone and iPad devices whereas the AWS Kinesis Video streams producer SDK project (referred to as this SDK project) already supports Mac OS platform, but I haven't found any documentation/topic about building and deploying the AWS kvssink plugin for iOS platform.
For building this SDK project, I followed the guidelines along with option to build the GStreamer plugin (kvssink). This produces a dynamic library (libgstkvssink.dylib).
I use an iPad app to validate GStreamer in which I can provide a GStreamer pipeline using some of the common GStreamer plugins to ensure that GStreamer on iPad works.
When I include the libgstkvssink.dyilb into the iPad and when I put the kvssink directive into the pipeline, the app fails because it lacks dependencies such libgstreamer-1.0.0.dylib & libgstbase-1.0.0.dylib.
My questions for this discussion group:
I'm reaching out to this group before exploring into other avenues. One of which is to incorporate the kvssink as a GStreamer's subproject is built into GStreamer as a static library. Thus GStreamer iOS package contains the kvssink as static libraries alongside the other common plugins of the other subprojects.
Regards,
Steven Belbin
Beta Was this translation helpful? Give feedback.
All reactions