Skip to content
This repository was archived by the owner on Jan 7, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
9a9124e
Update Program.cs
mihaidu Dec 10, 2017
b3ef8ae
Update Program.cs
mihaidu Dec 11, 2017
eb909d2
Added WatermarkedStoregeConn to FunctionDeploy
midumitr Dec 14, 2017
ac785ae
Changed storeconn to WatermarkedStorageConn
midumitr Dec 14, 2017
2affdf6
Added missing app settings to deployment script and functionapp PUBLI…
midumitr Dec 14, 2017
ea6c0a8
ActionProvider - changed storage Conn from StorageConn to Watermarked…
midumitr Dec 14, 2017
9b48ddd
added Watermark storagename to create final assets in a secondary me…
midumitr Dec 14, 2017
ba2e14b
Updated AddWatermarkedMediaFiletoAsset to add the assets to secondary…
midumitr Dec 14, 2017
ccef47b
Added check asset status based only on assetId
midumitr Dec 14, 2017
8a8dc4d
Update CheckAssetStatus function
midumitr Dec 14, 2017
1b7ac6d
Added check status CheckAssetStatus
midumitr Dec 14, 2017
b039997
Updated watermarked push container location
midumitr Dec 14, 2017
e7963a5
Corrected some misspelling.
midumitr Dec 15, 2017
162319e
Small properties rename and spell checking.
midumitr Dec 15, 2017
5d6e57e
Updated deply template for UnifiedProcess logic app
midumitr Dec 15, 2017
9098aac
more spell checking.
midumitr Dec 15, 2017
d191122
Added proper deserialization of entities to all the actions and crete…
midumitr Dec 15, 2017
112ed65
Changeded embebedcode to EmbeddedCode
midumitr Dec 15, 2017
86137db
Changed Embeddedcode to Code
midumitr Dec 15, 2017
03390e8
Updated packages
midumitr Dec 16, 2017
c7868e3
Updated packages
midumitr Dec 16, 2017
cf74746
Rename AssetID to AssetId
midumitr Dec 16, 2017
a7ae44e
Added Summary
midumitr Dec 16, 2017
c8d8ffc
Added parameter validation for request body of StartNewJob
midumitr Dec 16, 2017
c27dc55
update
midumitr Dec 16, 2017
7b14761
1
midumitr Dec 16, 2017
7613c5b
Updated GetPreprocessorJobData cache exception
midumitr Dec 16, 2017
45e3f10
Update StartNewJob
midumitr Dec 16, 2017
cdec4c6
Update StartNewJob
midumitr Dec 16, 2017
b040d15
Delete WaterMarkActions.cs
mihaidu Dec 16, 2017
bb91b5a
Update
midumitr Dec 16, 2017
2230eab
Merge branch 'dev' of https://github.com/mihaidu/MB-ForensicWatermark…
midumitr Dec 16, 2017
13d62b5
Update
midumitr Dec 16, 2017
2c51937
Update 1
midumitr Dec 16, 2017
33e241a
`
midumitr Dec 16, 2017
bf22d5d
Update Master
midumitr Dec 16, 2017
b307c05
Update
midumitr Dec 16, 2017
b1114a2
1
midumitr Dec 16, 2017
cb68504
a
midumitr Dec 18, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions MB-ForensicWatermark/ActionsProvider/AMS/AMSProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ namespace ActionsProvider.AMS
class AMSProvider : IAMSProvider
{
string _WaterMarkStorageConStr;
string _WatermarkedStorageName;
CloudMediaContext _mediaContext;
CloudStorageAccount _WaterMArkStorageAccount;
CloudBlobClient _WaterMArkStorageBlobClient;
Expand All @@ -42,7 +43,7 @@ private string GetBlobSasUri(CloudBlobClient stClient, string containerName, str
string sasBlobToken = blob.GetSharedAccessSignature(sasConstraints);
return blob.Uri + sasBlobToken;
}
public AMSProvider(string TenantId, string ClientId, string ClientSecret, Uri AMSApiUri, string WaterMarkStorageConStr, string AMSStorageConStr,string PUBLISHWATERKEDCOPY, int sasTtl)
public AMSProvider(string TenantId, string ClientId, string ClientSecret, Uri AMSApiUri, string WaterMarkStorageConStr, string WatermarkedStorageName, string AMSStorageConStr,string PUBLISHWATERKEDCOPY, int sasTtl)
{
AzureAdClientSymmetricKey clientSymmetricKey = new AzureAdClientSymmetricKey(ClientId, ClientSecret);
var tokenCredentials = new AzureAdTokenCredentials(TenantId, clientSymmetricKey, AzureEnvironments.AzureCloudEnvironment);
Expand All @@ -53,6 +54,7 @@ public AMSProvider(string TenantId, string ClientId, string ClientSecret, Uri AM
_WaterMArkStorageAccount = CloudStorageAccount.Parse(WaterMarkStorageConStr);
_WaterMArkStorageBlobClient = _WaterMArkStorageAccount.CreateCloudBlobClient();
_WaterMarkStorageConStr = WaterMarkStorageConStr;
_WatermarkedStorageName = WatermarkedStorageName;
//AMS Stoarge
_AMSStorageAccount = CloudStorageAccount.Parse(AMSStorageConStr);
_AMSStorageBlobClient = _AMSStorageAccount.CreateCloudBlobClient();
Expand Down Expand Up @@ -123,13 +125,13 @@ private ManifestInfo GetManifest5Jobs(ManifestInfo manifestInfo,IAsset theAsset,
VideoInformation video = CreateVideoInformationK28JobNode(file.Name, theAsset, AssetLocatorPath);
manifestInfo.VideoInformation.Add(video);
//Watermarked
foreach (var code in manifestInfo.EnbebedCodes)
foreach (var code in manifestInfo.EmbeddedCodes)
{
var wmp4Name = System.Web.HttpUtility.UrlPathEncode(video.FileName);
code.MP4WatermarkedURL.Add(new MP4WatermarkedURL()
{
FileName = video.FileName,
WaterMarkedMp4 = GetBlobSasUri(_AMSStorageBlobClient,"watermarked", $"{theAsset.Id}/{code.EmbebedCode}/{wmp4Name}", allAccess, _SASTTL)
WaterMarkedMp4 = GetBlobSasUri(_WaterMArkStorageBlobClient,"watermarked", $"{theAsset.Id}/{code.Code}/{wmp4Name}", allAccess, _SASTTL)
});
}
}
Expand All @@ -155,39 +157,39 @@ private async Task<string> CreateSharedAccessPolicyAsync(string queueName, strin
return accessSignature;

}
public async Task<ManifestInfo> GetK8SJobManifestAsync(string AssetID, string JobID, List<string> codes)
public async Task<ManifestInfo> GetK8SJobManifestAsync(string AssetId, string JobId, List<string> codes)
{
string AssetLocatorPath = "";
string EmbedderNotificationQueue = await CreateSharedAccessPolicyAsync("embeddernotification", JobID);
string PreprocessorNotificationQueue = await CreateSharedAccessPolicyAsync("preprocessorout", JobID);
string EmbedderNotificationQueue = await CreateSharedAccessPolicyAsync("embeddernotification", JobId);
string PreprocessorNotificationQueue = await CreateSharedAccessPolicyAsync("preprocessorout", JobId);
ManifestInfo myData = new ManifestInfo
{
JobID = JobID,
AssetID = AssetID,
JobId = JobId,
AssetId = AssetId,
EmbedderNotificationQueue = EmbedderNotificationQueue,
PreprocessorNotificationQueue = PreprocessorNotificationQueue,
//Video information
VideoInformation = new List<VideoInformation>(),
//Enbebedcodes
EnbebedCodes = new List<EnbebedCode>()
//EmbeddedCodes
EmbeddedCodes = new List<EmbeddedCode>()
};
foreach (var code in codes)
{
myData.EnbebedCodes.Add(new EnbebedCode()
myData.EmbeddedCodes.Add(new EmbeddedCode()
{
EmbebedCode = code,
Code = code,
MP4WatermarkedURL = new List<MP4WatermarkedURL>()
});
}
//AMS
IAsset currentAsset = null;
try
{
currentAsset = _mediaContext.Assets.Where(a => a.Id == AssetID).FirstOrDefault();
currentAsset = _mediaContext.Assets.Where(a => a.Id == AssetId).FirstOrDefault();
}
catch (Exception X)
{
throw new Exception($"AssetID {AssetID} not found. Error: {X.Message}");
throw new Exception($"AssetId {AssetId} not found. Error: {X.Message}");
}

var AssetLocator = currentAsset.Locators.Where(l => l.Type == LocatorType.OnDemandOrigin).FirstOrDefault();
Expand All @@ -203,7 +205,7 @@ public async Task<ManifestInfo> GetK8SJobManifestAsync(string AssetID, string Jo
IEnumerable<IAssetFile> mp4AssetFiles = currentAsset.AssetFiles.ToList().Where(af => af.Name.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase)).OrderBy(f => f.ContentFileSize);


myData = GetManifest5Jobs(myData, /*AssetID*/ currentAsset, mp4AssetFiles, AssetLocatorPath);
myData = GetManifest5Jobs(myData, /*AssetId*/ currentAsset, mp4AssetFiles, AssetLocatorPath);


return myData;
Expand All @@ -218,7 +220,7 @@ public void DeleteAsset(string AssetId)
}
public void DeleteWatermakedBlobRenders(string AssetId)
{
CloudBlobContainer container = _AMSStorageBlobClient.GetContainerReference("watermarked");
CloudBlobContainer container = _WaterMArkStorageBlobClient.GetContainerReference("watermarked");

foreach (IListBlobItem item in container.ListBlobs(AssetId, true))
{
Expand Down Expand Up @@ -274,12 +276,12 @@ string ConvertMediaAssetIdToStorageContainerName(String AssetId)
int startIndex = AssetPrefix.Length - 1; //
return AssetBlobContainerNamePrefix + AssetId.Substring(startIndex, AssetId.Length - startIndex);
}
IAsset GetMediaAssetFromAssetId(string assetId)
IAsset GetMediaAssetFromAssetId(string AssetId)
{
// Use a LINQ Select query to get an asset.
var assetInstance =
from a in _mediaContext.Assets
where a.Id == assetId
where a.Id == AssetId
select a;
// Reference the asset as an IAsset.
IAsset asset = assetInstance.FirstOrDefault();
Expand All @@ -302,7 +304,7 @@ public async Task<WMAssetOutputMessage> CreateEmptyWatermarkedAsset(string Proce
IAsset SourceMediaAsset = GetMediaAssetFromAssetId(SourceAssetId);
string NewAssetName = $"{SourceMediaAsset.Name}-{ProcessId}-{DateTime.Now.Ticks.ToString()}";
CancellationToken myToken = new CancellationToken();
IAsset newWatermarkedAsset = await _mediaContext.Assets.CreateAsync(NewAssetName, AssetCreationOptions.None, myToken);
IAsset newWatermarkedAsset = await _mediaContext.Assets.CreateAsync(NewAssetName,_WatermarkedStorageName , AssetCreationOptions.None, myToken);
newWatermarkedAsset.AlternateId = $"{SourceAssetId}-{WMEmbedCode}";
await newWatermarkedAsset.UpdateAsync();
result.Status = result.Status = "Finished"; ;
Expand Down Expand Up @@ -389,7 +391,7 @@ public async Task<WMAssetOutputMessage> AddWatermarkedMediaFiletoAsset(string Wa

string containerName = ConvertMediaAssetIdToStorageContainerName(Asset.Id);

CloudBlobContainer DestinationBlobContainer = _AMSStorageBlobClient.ListContainers().Where(n => n.Name == containerName).FirstOrDefault();
CloudBlobContainer DestinationBlobContainer = _WaterMArkStorageBlobClient.ListContainers().Where(n => n.Name == containerName).FirstOrDefault();

CloudBlockBlob sourceBlob = new CloudBlockBlob(new Uri(MMRKURL));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,13 @@ public static IAMSProvider CreateAMSProvider()
string ClientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"];
string ClientSecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
Uri AMSApiUri = new Uri( System.Configuration.ConfigurationManager.AppSettings["AMSApiUri"]);
string Storageconn = System.Configuration.ConfigurationManager.AppSettings["Storageconn"];
string WatermarkedStorageConn = System.Configuration.ConfigurationManager.AppSettings["WatermarkedStorageConn"];
string WatermarkedStorageName = System.Configuration.ConfigurationManager.AppSettings["WatermarkedStorageName"];
string AMSStorageConStr= System.Configuration.ConfigurationManager.AppSettings["AMSStorageConStr"];
string PUBLISHWATERKEDCOPY= System.Configuration.ConfigurationManager.AppSettings["PUBLISHWATERKEDCOPY"] ?? "false";
//SAS URL TTL
int SASTTL = int.Parse(System.Configuration.ConfigurationManager.AppSettings["SASTTL"] ?? "24");
return new AMSProvider(TenantId,ClientId,ClientSecret,AMSApiUri, Storageconn, AMSStorageConStr, PUBLISHWATERKEDCOPY, SASTTL);
return new AMSProvider(TenantId,ClientId,ClientSecret,AMSApiUri, WatermarkedStorageConn, WatermarkedStorageName, AMSStorageConStr, PUBLISHWATERKEDCOPY, SASTTL);
}
}
}
2 changes: 1 addition & 1 deletion MB-ForensicWatermark/ActionsProvider/AMS/IAMSProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public interface IAMSProvider
{

void DeleteAsset(string AssetId);
Task<ManifestInfo> GetK8SJobManifestAsync(string AssetID, string JobID, List<string> codes);
Task<ManifestInfo> GetK8SJobManifestAsync(string AssetId, string JobId, List<string> codes);
Task<WMAssetOutputMessage> AddWatermarkedMediaFiletoAsset(string WatermarkedAssetId, string WMEmbedCode, string MMRKURL);
Task<WMAssetOutputMessage> CreateEmptyWatermarkedAsset(string ProcessId,string SourceAssetId, string WMEmbedCode);
void DeleteWatermakedBlobRenders(string AssetId);
Expand Down
Loading