public static void Main(string[] args) { /////////////////////////////////////////////////////////////////////////// /// Check if a filename was passed as an argument /////////////////////////////////////////////////////////////////////////// if (args.Length == 0) { Console.WriteLine("Usage: bcdi <filename>"); return; } /////////////////////////////////////////////////////////////////////////// /// Check if the file exists /////////////////////////////////////////////////////////////////////////// string strFullPath = args[0]; string strFilenameNoExt = Path.GetFileNameWithoutExtension(strFullPath); if (!File.Exists(strFullPath)) { Console.WriteLine("***ERROR: File '{0}' doesn't exist.", strFullPath); return; } /////////////////////////////////////////////////////////////////////////// /// Set up API authentication information /// /// This is expecting a file called api.json to be in the current user's /// home directory. The content should look like this: /// { /// "AccountID" : "YourAccountID", /// "ClientID" : "YourClientID", /// "ClientSecret" : "YourClientSecret" /// } /////////////////////////////////////////////////////////////////////////// var myAPIAuth = APIAuthentication.FromFile((Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/account_config.json")); /// in case the api.json file wasn't found set some dummy defaults if (myAPIAuth == null) { Console.WriteLine("Error getting API authentication info, using invalid generic values."); myAPIAuth = new APIAuthenticationInfo(); myAPIAuth.AccountID = "1234"; myAPIAuth.ClientID = "5678"; myAPIAuth.ClientSecret = "abcd"; } /////////////////////////////////////////////////////////////////////////// /// Obtain Access Token from OAUTH API /////////////////////////////////////////////////////////////////////////// Console.Write("Getting the OAUTH token: "); var theToken = new OAuthToken(myAPIAuth.ClientID, myAPIAuth.ClientSecret); Console.WriteLine("Done."); /////////////////////////////////////////////////////////////////////////// /// Use CMS API to create the video asset /////////////////////////////////////////////////////////////////////////// CMS cmsAPI = new CMS(theToken, myAPIAuth.AccountID); Console.Write("Creating Brightcove asset for '{0}': ", strFilenameNoExt); string strVideoID; try { strVideoID = cmsAPI.CreateVideo(strFilenameNoExt); } catch (CMS.BrightcoveAPIException e) { Console.WriteLine("Exception: {0}", e.Message); return; } Console.WriteLine("Done (ID {0}).", strVideoID); /////////////////////////////////////////////////////////////////////////// /// Use Source File Upload API to create a S3 upload URL for the video /// and use the AWS S3 API to upload the local file(s) /////////////////////////////////////////////////////////////////////////// SourceFileUpload sfuUploader = new SourceFileUpload(theToken, myAPIAuth.AccountID, strVideoID); string strVideoURL = sfuUploader.UploadFile(strFullPath); /////////////////////////////////////////////////////////////////////////// /// Use Dynamic Ingest API to ingest uploaded file into Video Cloud /////////////////////////////////////////////////////////////////////////// Console.WriteLine("\nExecuting Dynamic Ingest."); DynamicIngest myDI = new DynamicIngest(theToken, myAPIAuth.AccountID); string strJSONContent = "{" + " \"master\": {"+ " \"url\": \""+ strVideoURL + "\"" + " },"+ //" \"callbacks\": [ \"https://hookb.in/vaPPdpMX\" ]" + " \"capture-images\": true"+ "}"; Console.WriteLine("API response: {0}", myDI.IngestMediaAsset(strVideoID, strJSONContent)); Console.WriteLine("Done."); }