/// <summary> /// This method starts the live encoding<para /> /// /// API endpoint: /// https://bitmovin.com/docs/encoding/api-reference/sections/encodings#/Encoding/PostEncodingEncodingsLiveStartByEncodingId /// </summary> /// <param name="encoding">The encoding that should be started and checked until it is running</param> /// <param name="startLiveEncodingRequest">The request object that is sent with the start call</param> private async Task StartLiveEncodingAndWaitUntilRunning(Models.Encoding encoding, StartLiveEncodingRequest startLiveEncodingRequest) { await _bitmovinApi.Encoding.Encodings.Live.StartAsync(encoding.Id, startLiveEncodingRequest); await WaitUntilEncodingIsInState(encoding, Status.RUNNING); }
public async Task RunExample(string[] args) { _configProvider = new ConfigProvider(args); _bitmovinApi = BitmovinApi.Builder .WithApiKey(_configProvider.GetBitmovinApiKey()) .WithLogger(new ConsoleLogger()) .Build(); var encoding = await CreateEncoding("Live encoding example", "Live encoding with RTMP input"); var input = await GetRtmpInput(); var inputFilePath = "live"; var output = await CreateS3Output(_configProvider.GetS3OutputBucketName(), _configProvider.GetS3OutputAccessKey(), _configProvider.GetS3OutputSecretKey()); // Add an H.264 video stream to the encoding var h264VideoConfig = await CreateH264VideoConfiguration(); var h264VideoStream = await CreateStream(encoding, input, inputFilePath, h264VideoConfig, 0); // Add an AAC audio stream to the encoding var aacConfig = await CreateAacAudioConfiguration(); var aacAudioStream = await CreateStream(encoding, input, inputFilePath, aacConfig, 1); await CreateFmp4Muxing(encoding, output, $"/video/${h264VideoConfig.Height}p", h264VideoStream); await CreateFmp4Muxing(encoding, output, $"/audio/${aacConfig.Bitrate! / 1000}kbs", aacAudioStream); var dashManifest = await CreateDefaultDashManifest(encoding, output, "/"); var hlsManifest = await CreateDefaultHlsManifest(encoding, output, "/"); var liveDashManifest = new LiveDashManifest() { ManifestId = dashManifest.Id }; var liveHlsManifest = new LiveHlsManifest() { ManifestId = hlsManifest.Id }; var startLiveEncodingRequest = new StartLiveEncodingRequest() { DashManifests = new List <LiveDashManifest>() { liveDashManifest }, HlsManifests = new List <LiveHlsManifest>() { liveHlsManifest }, StreamKey = StreamKey }; await StartLiveEncodingAndWaitUntilRunning(encoding, startLiveEncodingRequest); var liveEncoding = await WaitForLiveEncodingDetails(encoding); Console.WriteLine("Live encoding is up and ready for ingest. " + $"RTMP URL: rtmp://{liveEncoding.EncoderIp}/live StreamKey: {liveEncoding.StreamKey}"); /* * This will enable you to shut down the live encoding from within your script. * In production, it is naturally recommended to stop the encoding by using the Bitmovin dashboard * or an independent API call - https://bitmovin.com/docs/encoding/api-reference/sections/encodings#/Encoding/PostEncodingEncodingsLiveStopByEncodingId */ Console.WriteLine("Press any key to shutdown the live encoding..."); Console.ReadKey(); Console.WriteLine("Shutting down live encoding."); await _bitmovinApi.Encoding.Encodings.Live.StopAsync(encoding.Id); await WaitUntilEncodingIsInState(encoding, Status.FINISHED); }
public async Task <string> StartLiveAsync(string id, StartLiveEncodingRequest s) { var postUrl = string.Format("{0}/{1}/live/start", _url, id); return(await _restClient.PostAndGetIdAsync(postUrl, s)); }
public string StartLive(string id, StartLiveEncodingRequest s) { var postUrl = string.Format("{0}/{1}/live/start", _url, id); return(_restClient.PostAndGetId(postUrl, s)); }