goliveapi-postdata.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "goliveapi-postdata.hpp"
  2. #include <nlohmann/json.hpp>
  3. #include "system-info.hpp"
  4. #include "models/multitrack-video.hpp"
  5. GoLiveApi::PostData
  6. constructGoLivePost(QString streamKey,
  7. const std::optional<uint64_t> &maximum_aggregate_bitrate,
  8. const std::optional<uint32_t> &maximum_video_tracks,
  9. bool vod_track_enabled)
  10. {
  11. GoLiveApi::PostData post_data{};
  12. post_data.service = "IVS";
  13. post_data.schema_version = "2023-05-10";
  14. post_data.authentication = streamKey.toStdString();
  15. system_info(post_data.capabilities);
  16. auto &client = post_data.capabilities.client;
  17. client.name = "obs-studio";
  18. client.version = obs_get_version_string();
  19. client.vod_track_audio = vod_track_enabled;
  20. obs_video_info ovi;
  21. if (obs_get_video_info(&ovi)) {
  22. client.width = ovi.output_width;
  23. client.height = ovi.output_height;
  24. client.fps_numerator = ovi.fps_num;
  25. client.fps_denominator = ovi.fps_den;
  26. client.canvas_width = ovi.base_width;
  27. client.canvas_height = ovi.base_height;
  28. }
  29. auto &preferences = post_data.preferences;
  30. if (maximum_aggregate_bitrate.has_value())
  31. preferences.maximum_aggregate_bitrate =
  32. maximum_aggregate_bitrate.value();
  33. if (maximum_video_tracks.has_value())
  34. preferences.maximum_video_tracks = maximum_video_tracks.value();
  35. return post_data;
  36. }