FS#62686 - [obs-studio] obs needs mbedtls to livestream to Facebook as of May 1, 2019

Attached to Project: Community Packages
Opened by Eric Fontaine (ericfont) - Monday, 20 May 2019, 19:10 GMT
Last edited by Jonathan Steel (jsteel) - Sunday, 16 June 2019, 07:14 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Jonathan Steel (jsteel)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 3
Private No

Details

Description:

Arch's obs build is unable to stream to Facebook Live now with the following error:

```
info: [rtmp stream: 'test_stream'] Connecting to RTMP URL rtmps://rtmp-api.facebook.com:443/rtmp/...
info: RTMP_Connect1, no SSL/TLS support
info: [rtmp stream: 'test_stream'] Connection to rtmps://rtmp-api.facebook.com:443/rtmp/ failed: -2
```

This failure is because as of May 1, 2019, Facebook live now mandates the use of RTMPS (which is RTMP *with* SSL): https://developers.facebook.com/docs/graph-api/changelog/breaking-changes/#live-api-4-24

```
RTMP — On May 1st, 2019, the Real-time Messaging Protocol (RTMP) will be deprecated from the Live API, GoLive Dialog, and Publisher Pages. RTMPS (RTMP over a TLS/SSL connection) will continue to be supported.
```

This can be fixed by adding to the package mbedtls to the list of dependencies in the pkgbuild script:

depends=('ffmpeg' 'jansson' 'libxinerama' 'libxkbcommon-x11'
'qt5-x11extras' 'curl' 'jack' 'gtk-update-icon-cache')

I don't think mbedtls should merely be in the "optional dependencies" section, because mbedtls must be present when compiling. This is because obs's cmake script tries to search for the mbedtls package prior to compiling: https://github.com/obsproject/obs-studio/blob/be8ddc06a2f8d31ff67813e2a39025ab4d8a2675/cmake/Modules/FindMbedTLS.cmake

Note that simply installing the mbedtls package and then trying to run arch's obs build still fails to communicate to facebook RTMPS. Rather I had to manually compile obs from git after installing arch's mbedtls package.

Additional info:
* arch package version 23.1.0-1
* attached log file of running arch's obs build and attempting to stream to facebook
* link to upstream bug report: some descriptions of the bug can be found by searching google for the error message: https://www.google.com/search?q=obs+RTMP_Connect1%2C+no+SSL%2FTLS+support

Steps to reproduce: start obs, run configuration wizard to use facebook live, copy your facebook live stream key from your facebook into obs's wizard, and try to run obs's wizard test stream
This task depends upon

Closed by  Jonathan Steel (jsteel)
Sunday, 16 June 2019, 07:14 GMT
Reason for closing:  Implemented
Additional comments about closing:  23.2.1-1
Comment by Eric Fontaine (ericfont) - Monday, 20 May 2019, 20:01 GMT Comment by Michael Goulet (compiler-errors) - Thursday, 30 May 2019, 11:51 GMT
I can confirm that `mbedtls` needs to be present at build-time.

Building with `mbedtls` and including it as a package dependency should be sufficient. Alternatively, mbedtls support can also be statically-linked (with the `-DSTATIC_MBEDTLS` flag, see https://github.com/obsproject/obs-studio/blob/master/plugins/obs-outputs/CMakeLists.txt#L6), meaning the package would ship with mbedtls baked in and eliminating the extra package dependency.... though I don't see why statically linking `mbedtls` into the obs binary should be necessary over just adding a package dependency for mbedtls.

Loading...