Coder Social home page Coder Social logo

azure-sdk-for-media-services's Introduction

This Repository is for the legacy v2 API which is now deprecated. Customers should migrate to use the v3 API only.

Please use the latest v3 API for .NET.

The new .NET SDK is located here in Nuget https://www.nuget.org/packages/Microsoft.Azure.Management.Media/

To install the newest SDK using the .NET CLI

dotnet add package Microsoft.Azure.Management.Media

IMPORTANT! Update your Azure Media Services REST API and SDKs to v3 by 29 February 2024

Because version 3 of Azure Media Services REST API and client SDKs for .NET and Java offers more capabilities than version 2, we’re retiring version 2 of the Azure Media Services REST API and client SDKs for .NET and Java. We encourage you to make the switch sooner to gain the richer benefits of version 3 of Azure Media Services REST API and client SDKs for .NET and Java. Version 3 provides:

Action Required:

To minimize disruption to your workloads, review the migration guide to transition your code from the version 2 to version 3 API and SDK before 29 February 2024.

After 29 February 2024, Azure Media Services will no longer accept traffic on the version 2 REST API, the ARM account management API version 2015-10-01, or from the version 2 .NET client SDKs. This includes any 3rd party open-source client SDKS that may call the version 2 API.

See Update your Azure Media Services REST API and SDKs to v3 by 29 February 2024

(Deprecated) Windows Azure Media Services SDK .NET 4.5 (REST v2)

This library will be retired after 29 February 2024. Please migrate to the v3 API

Windows Azure Media Services allows you to build a media distribution solution that can stream audio and video to Windows, iOS, Android, and other devices and platforms.To learn more, visit our Developer Center.

v2 Release Notes

Please read the latest note here: https://github.com/Azure/azure-sdk-for-media-services/releases.

v2 Getting Started

If you are new to Media Services, you can get started by following our tutorials. You could be able to bring media into Azure, encoded it, package it into stream-able format and make it available for streaming.

Download Source Code

To get the source code of our v2 SDKs and samples via git just type:

git clone https://github.com/WindowsAzure/azure-sdk-for-media-services.git
cd ./azure-sdk-for-media-services/

.NET SDK

Prerequisites

  1. A Media Services account in a new or existing Windows Azure subscription. See the topic How to Create a Media Services Account.
  2. Operating Systems: Windows 7, Windows 2008 R2, or Windows 8.
  3. .NET Framework 4.5.
  4. Visual Studio 2012 or Visual Studio 2010 SP1 (Professional, Premium, Ultimate, or Express).

Building and Referencing the SDK

To build sdk sources and tests type following commands:

cd ./azure-sdk-for-media-services/
msbuild ./SDK.Client.sln

Running the Tests

This set of test allows you to verify Windows Azure Media Services .Net SDK functionality using your existing Windows Azure Media Services account. Please check out Test instruction on how to use it.

Need Help?

Be sure to check out the Mobile Services Developer Forum if you are having trouble. The Media Services product team actively monitors the forum and will be more than happy to assist you.

Contribute Code or Provide Feedback

If you would like to become an active contributor to this project please follow the instructions provided in Windows Azure Projects Contribution Guidelines.

If you encounter any bugs with the library please file an issue in the Issues section of the project.

Learn More

Windows Azure Media Services Developer Center

azure-sdk-for-media-services's People

Contributors

duggaraju avatar fredericky avatar gtrifonov avatar ivan-shaporov avatar johndeu avatar jonpayne avatar juliako avatar liushengpu avatar mayurav avatar microsoft-github-policy-service[bot] avatar migree avatar mingfeiy avatar mmedhekar avatar pagrawalmsft avatar qingqu avatar quintinb avatar salehio avatar sanbhatt avatar shushengli avatar speterso-ms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-sdk-for-media-services's Issues

Rest API Support For PCL (Portable Class Library)

We are using Azure Media Services Rest API in PCL by following your Rest API sample Project (Program.cs file)

//The response is in JSON so create a JSON reader to read it //and convert it to XML for further processing var reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(responseString), new XmlDictionaryReaderQuotas()); xmlResponse = new XmlDocument(); reader.Read(); xmlResponse.LoadXml(reader.ReadInnerXml());

We are able to migrate all of your code to PCL except above few lines, those lines are very important for us when we are trying to get publish URL. because of above code not working we are not able to get the publish URL as XMLDocument is null

I want you guys please re-write above few lines of code in PCL to work as soon as possible.

PS: we already tried using newtonsoft.net but it is not able to convert to XMLDocument. Give us a tested version of code if possible :-)

Sometimes get asset id null

At the previous stage of encoding, I have to copy the video form temp container an create a new Asset before encoding.

At this point, sometimes the new asset has null Id. This is my code:

`
public string CopyFileToMediaService(VideoModel video, string fileName)
{
try
{
if (video == null)
{
return null;
}

    var assetName = string.Format(CultureInfo.InvariantCulture, "NewAsset_{0}_{1}", video.VideoModelId, video.Name);

    IAsset newAsset = null;

    try
    {
        newAsset = this.mediaContext.Assets.Create(assetName, AssetCreationOptions.None);
    }
    catch (Exception ex)
    {
        this.logger.Error(string.Format(CultureInfo.InvariantCulture, ErrorMessages.EXCEPTION_ERROR, ex.StackTrace));

        Thread.Sleep(1000);
        newAsset = this.mediaContext.Assets.Create(assetName, AssetCreationOptions.None);
    }

            
    IAccessPolicy writePolicy = this.mediaContext.AccessPolicies.Create("writePolicy", TimeSpan.FromHours(24), AccessPermissions.Write);
    ILocator destinationLocator = this.mediaContext.Locators.CreateLocator(LocatorType.Sas, newAsset, writePolicy);

    string destinationContainerName = (new Uri(destinationLocator.Path)).Segments[1];
    CloudBlobClient destinationBlobClient = this.destinationStorageAccount.CreateCloudBlobClient();
    CloudBlobContainer assetContainer = destinationBlobClient.GetContainerReference(destinationContainerName);

    if (assetContainer.CreateIfNotExists())
    {
        assetContainer.SetPermissions(new BlobContainerPermissions
        {
            PublicAccess = BlobContainerPublicAccessType.Blob
        });
    }

    var sourceBlob = this.sourceContainer.GetBlockBlobReference(fileName);
    var assetFile = newAsset.AssetFiles.Create((sourceBlob as ICloudBlob).Name);

    this.CopyBlob(sourceBlob, assetContainer);

    sourceBlob.FetchAttributes();

    assetFile.ContentFileSize = (sourceBlob as ICloudBlob).Properties.Length;
    assetFile.Update();

    destinationLocator.Delete();
    writePolicy.Delete();

    sourceBlob.Delete();

    newAsset.Update();

    return newAsset.Id;
}
catch (Exception ex)
{
    this.logger.Error(string.Format(CultureInfo.InvariantCulture, ErrorMessages.EXCEPTION_ERROR, ex.StackTrace));
    return null;
}

}

`

`

private void CopyBlob(ICloudBlob sourceBlob, CloudBlobContainer destinationContainer)
{
var signature = sourceBlob.GetSharedAccessSignature(new SharedAccessBlobPolicy
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});

CloudBlockBlob destinationBlob = destinationContainer.GetBlockBlobReference(sourceBlob.Name);

if (destinationBlob.Exists())
{
    Console.WriteLine(string.Format("Destination blob '{0}' already exists. Skipping.", destinationBlob.Uri));
}
else
{
    try
    {
        Console.WriteLine(string.Format("Copy blob '{0}' to '{1}'", sourceBlob.Uri, destinationBlob.Uri));

        using (Task task = destinationBlob.StartCopyAsync(new Uri(sourceBlob.Uri.AbsoluteUri + signature)))
        {
            task.Wait();
        }

        destinationBlob.FetchAttributes();

        while (destinationBlob.CopyState.Status == CopyStatus.Pending)
        {
            Thread.Sleep(50);
            destinationBlob.FetchAttributes();
        }

        if (destinationBlob.CopyState.Status != CopyStatus.Success)
        {
            throw new Exception("Copy failed: " + destinationBlob.CopyState.Status);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(string.Format("Error copying blob '{0}': {1}", sourceBlob.Name, ex.Message));
    }
}

}

`

After streaming endpoint operation, update fails b/c streaming endpoint context is not updated

Sample Code with "IStreamingEndpoint endpoint":

endpoint.Stop();
endpoint.Scale(1);
endpoint.CdnEnabled = true;
endpoint.Update();                         <-- updates fails

Failure message where state and scaleunit fails b/c the update request is trying to merge stale state and scale units:

InvalidPropertyValue/m:codeProperty 'StreamingEndpoint.State' is read-only and cannot be changed.;

Property 'StreamingEndpoint.ScaleUnits' is read-only and cannot be changed./m:message/m:error

Expect: After operations (start/stop/scale), the SDK should refresh the entity so that update will succeed.
Actual: Caller needs to manually refresh IStreamingEndpoint, then call update.

unsupported audio codec: adpcm_ima_qt, name: ADPCM IMA QuickTime

We have a ton of mov files that have to be re-encoded that seem to have a unsupported codec.
As far as I understand PCM is supported by AMS so i'm wondering if there is anything you could do about this?
And if not, could a list of supported PCM variants be listed somewhere?

Gr,S.

Migration from 2.3.0.1 to 3.5.1.0 caused issue in working code

Is there any migration documentation on windowsazure.mediaservices 2.3.0.1 to windowsazure.mediaservices 3.5.1.0?
I just updated this package and noticed container.CreateIfNotExists() started displaying error "The remote server returned an error: (400) Bad Request.".
Next, when I noticed this issue, i tried to add a new package windowsazure.mediaservices.extensions 3.3.0 instead of above migration. This also produced same error.
I need updated package for encoding & job scheduling stuff. Let me know if this is possible even without migration or extension package?

GetACSToken() method return (400) Bad Request

I test the code from https://github.com/Azure/azure-sdk-for-media-services/blob/dev/samples/MediaServicesRESTSample/RESTAPISamples/RESTAPISamples/Program.cs, I get error An unhandled exception of type 'System.Net.WebException' occurred in System.dll.Additional information: The remote server returned an error: (400) Bad Request. when running the code below:

 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(accessControlUri);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.KeepAlive = true;
            string token = null;

            //Note: You need to insert your client Id and secret into this string in order for it to work.
            var requestBytes = Encoding.ASCII.GetBytes("grant_type=client_credentials&client_id=" + clientId + "&client_secret=" + HttpUtility.UrlEncode(clientSecret) + "&scope=urn%3a" + scope);
            request.ContentLength = requestBytes.Length;

            // Write the request data to the request stream
            var requestStream = request.GetRequestStream();
            requestStream.Write(requestBytes, 0, requestBytes.Length);
            requestStream.Close();

            // Get the response back from the server
            var response = (HttpWebResponse)request.GetResponse();

Thank you for reviewing my issue. Any help will be welcome.

Managing job status for related jobs is difficult

If I have an input .mp4 asset, that I then kick off 3 jobs on (say to create a thumbnail, encode to HLS and encode to Smooth), there isn't a good way for me to track when those jobs have all finished, if I want to abstract out the details and provide a high level status of when the output assets associated with that input asset have finished encoding.

AssetFile.Name max length is wrong

In the online documentation, it says the max length is 260 but I get an error saying the max length is 248.
Online doc : https://docs.microsoft.com/en-us/azure/media-services/media-services-dotnet-upload-files

Call : IAssetFile assetFile = await asset.AssetFiles.CreateAsync(resource.Name, CancellationToken.None);

Exception : "An error occurred while processing this request."

InnerException : "<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><m:code /><m:message xml:lang="en-US">AssetFile.Name length cannot exceed 248 characters</m:message></m:error>"

Calling job.SubmitAsync() results in Exception: System.InvalidOperationException: An error occurred while processing this request. ---> System.IO.IOException: Unable to read data from the transport connection: The connection was closed.

Some of the calls to job.SubmitAsync() result in the following exception.

Exception: System.InvalidOperationException: An error occurred while processing this request. ---> System.IO.IOException: Unable to read data from the transport connection: The connection was closed.
at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
at System.Net.ConnectStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
at System.Data.Services.Client.BaseAsyncResult.InvokeAsync(AsyncAction asyncAction, Byte[] buffer, Int32 offset, Int32 length, AsyncCallback callback, Object state)
at System.Data.Services.Client.BaseAsyncResult.AsyncRequestContentEndRead(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at Microsoft.WindowsAzure.MediaServices.Client.TaskExtensions.ThrowIfFaulted(Task task, Action faultedCallback)
at Microsoft.WindowsAzure.MediaServices.Client.JobData.<>c.b__92_1(Task1 t) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke()
at System.Threading.Tasks.Task.Execute()

This error occurs on a daily basis. The current work around I'm using is retrying. Any idea what is the root cause?

Azure media service, upload file asset from a Stream.

Hi,

I am integrating with azure media service and trying to find a way to upload file to windows media service from a Stream that is coming with request. I don't want to store it on a disk first, like on line 69 here.

Am I missed something? Or save file to a disk is only one way to go?

Thank you for your time.

IAssetFile.ContentChecksum is not set

SDK does not set ContentChecksum on upload.

Also, documentation is misleading:

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.mediaservices.client.iassetfile.contentchecksum.aspx

"Optional. A hexadecimal number representing a MD5 (RFC 1321) message digest value. This value is set by the client or client library to serve as a validation of the successful upload of the content."

However, the property is read-only:

string ContentChecksum { get; }

Refresh of StreamingEndpoint does not properly reflect removed AccessControl

Repro Steps:

  1. Add AkamaiSignatureHeaderAuthenticationKey or IPRange to IStreamingEndpoint
  2. Remove what that was added in step 1 using rest/portal (not with SDK)
  3. Refresh that endpoint with SDK. See in service response in network traffic that the data from step 1 is not there, but IStreamingEndpoint.AccessControl.xx still has the data

Exception in Azure Web Sites: CryptographicException / Access is denied

If a web application, hosted in azure web sites, creates and submits a job over the AMS SDK the following happens:

System.Security.Cryptography.CryptographicException: Access is denied.
   at System.Security.Cryptography.X509Certificates.X509Store.Open(OpenFlags flags)
   at Microsoft.WindowsAzure.MediaServices.Client.EncryptionUtils.SaveCertificateToStore(X509Certificate2 certToStore)
   at Microsoft.WindowsAzure.MediaServices.Client.ContentKeyBaseCollection.GetCertificateForProtectionKeyId(MediaContextBase mediaContext, String protectionKeyId)
   at Microsoft.WindowsAzure.MediaServices.Client.JobData.ProtectTaskConfiguration(TaskData task, X509Certificate2& certToUse, IMediaDataServiceContext dataContext)
   at Microsoft.WindowsAzure.MediaServices.Client.JobData.InnerSubmit(IMediaDataServiceContext dataContext)
   at Microsoft.WindowsAzure.MediaServices.Client.JobData.SubmitAsync()
   at Microsoft.WindowsAzure.MediaServices.Client.JobData.Submit()

The same issue was reported over stackoverflow a while ago: http://stackoverflow.com/questions/18056707/create-azure-media-services-job-from-azure-shared-website

The workaround (http://stackoverflow.com/a/18080406) to using

AssetCreationOptions.None

do not help. I'm using:

var asset = await context.Assets.CreateAsync(assetName, AssetCreationOptions.None, cancellationToken);
// and
task.OutputAssets.AddNew(asset.Name + " - output", AssetCreationOptions.None);

The problem lies in line 287 (more information at http://stackoverflow.com/a/18363571) at file
https://github.com/Azure/azure-sdk-for-media-services/blob/dev/src/net/Client/Collections/ContentKeyBaseCollection.cs

Method not found: 'Void Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters..ctor(Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior)'.

From @CarlosOnline on April 5, 2018 13:11

Missing method: Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters..ctor is missing for .net core 2.0.3.
Is there any way to resolve this issue?

Error:
Message=Method not found: 'Void Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters..ctor(Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior)'.
Source=Microsoft.WindowsAzure.MediaServices.Client.Common.Authentication

Code:

CloudMediaContext AzureContext; // See Azure Media Services for initialize instructions
AzureContext.Assets.ToList(); // Exception here

Exception

System.MissingMethodException
  HResult=0x80131513
  Message=Method not found: 'Void Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters..ctor(Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior)'.
  Source=Microsoft.WindowsAzure.MediaServices.Client.Common.Authentication
  StackTrace:
   at Microsoft.WindowsAzure.MediaServices.Client.AzureAdTokenProvider.GetToken()
   at Microsoft.WindowsAzure.MediaServices.Client.AzureAdTokenProvider.GetAuthorizationHeader()
   at Microsoft.WindowsAzure.MediaServices.Client.OAuth.OAuthDataServiceAdapter.AddAccessTokenToRequest(WebRequest request)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass22_0.<GetAccountApiEndpoint>b__0()
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0()
   at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func`1 func)
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.GetAccountApiEndpoint(OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter versionAdapter, Uri apiServer, UserAgentAdapter userAgentAdapter, IWebRequestAdapter clientRequestIdAdapter)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass25_0.<CreateAzureMediaServicesEndPoint>b__0()
   at Microsoft.WindowsAzure.MediaServices.Client.Cache`1.GetOrAdd(String key, Func`1 valueFactory, Func`1 expirationFactory)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory..ctor(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext)
   at Microsoft.WindowsAzure.MediaServices.Client.CloudMediaContext.get_MediaServicesClassFactory()
   at Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.<.ctor>b__2_0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.WindowsAzure.MediaServices.Client.BaseCollection`1.get_Provider()
   at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)

Copied from original issue: aspnet/Configuration#806

Clock skew when verifying SAS locators

It appears that SAS locators are subject to potentially significant clock skew when performing validation. Currently the samples show to make the issue time -5 minutes to try to mitigate this problem, but I've found that 15 minutes is a safer interval. Is this a known issue on the storage side/can we update samples or provide new guidance?

Copy blob Error. Not Found

Hi,
I'm getting an issue with azure media services,

image

I have this code in production and still works but I have a new environment for testing and I´m trying to test this and it doesn't works, When I trying to copy the blob it drops an error not found.

Allow for optional bypassing of upload filename validation

We need to be able to upload a file into an asset file with a different, randomly generated name. This is primarily to obfuscate the names of our assets at playback time.

There are validation checks in AssetFileData.ValidateFileName that prevent us from doing this at the moment, as the name of the asset file and the file being uploaded are expected to be the same.

As a side-note, we have a workaround, but it requires that we make a copy of the media and rename it to the required name prior to uploading. Given the size of some of our media, this isn't desirable.

I would propose adding a flag, perhaps something like CloudMediaContext.EnforceUploadedFilesHaveSameNameAsTarget. This would be defaulted to true so that the existing behaviour is maintained. When this is set to false, however, the logic in ValidateFileName should be bypassed (the logic in PostUploadAction to set AssetFileData.Name to the name of the uploaded file should additionally be skipped otherwise Name will be set incorrectly post-upload)

This is quite an important scenario for us - I hope you will consider it.

Assembly reference for Microsoft.Data.Services.Client doesn't match nuget package spec

The Solution is built against Microsoft.Data.Services.Client version 5.5, but the nuget package spec windowsazure.mediaservices.nuspec lists 5.6 as a dependency.

  <dependency id="Microsoft.Data.Services.Client" version="5.6.0" />

So, when I tried installing the sdk via Nuget package manager for my project I get version 5.6. This causes an exception at runtime because of the version mismatch. I had to manually add a binding redirect to my app.config.

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0"/>
  </dependentAssembly>

I think the nuget spec and the project should be consistent and reference the same version of data services client.

Can only have 5 shared access policy identifiers on a single container

In my scenario of wanting to create unique short-duration URLs for users to access a media asset file, I ran into a limitation where the server will throw:

"Server does not support setting more than 5 shared access policy identifiers on a single container."

What is the recommended way to achieve this objective? Here's a StackOverflow thread about a similar situation where the user has ended up moving to an alternate service.

http://stackoverflow.com/questions/14972156/azure-media-services-shared-access-policy-limitations

No way to get a list of Assets asynchronously using the SDK

For the async stuff a typical example is doing a Linq query like this:

To get an Asset by ID you do this (and this pattern applies to a lot of places in their API)

yourCloudMediaContext.Assets.Where(a => a.Id == IdToGet).FirstOrDefault();

There’s no way to get an Asset from the Assets collection asynchronously.

In the Azure storage API you can do this (which gives an asynchronous way to do a query):

var context = this.endpointTableClient.GetDataServiceContext();
var query = (from e in context.CreateQuery(AzureDeviceEndpoint.DeviceEndpointTableName)
where e.PartitionKey == ownerId.ToString(CultureInfo.InvariantCulture)
select e) as DataServiceQuery;

var task = Task<IEnumerable>.Factory.FromAsync(query.BeginExecute, query.EndExecute, null);

Microsoft.WindowsAzure.Storage 6.1.0 conflict with Microsoft.WindowsAzure.Storage 4.3

Hello I'm working in a WPF application using Windows Azure Storage 6.1.0.
I installed this SDK from nuget in my application these packages:

package id="windowsazure.mediaservices" version="3.5.2.0" targetFramework="net452"
package id="WindowsAzure.Storage" version="6.1.0" targetFramework="net452"

When I run my application I have this exception:
{"Could not load file or assembly 'Microsoft.WindowsAzure.Storage, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"Microsoft.WindowsAzure.Storage, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"}

I can't downgrade the Windows Azure Storage 6.1.0 to 4.3 because I have problems running my code.
any suggestion?

Thank you!

Operation with function calls on member 'Id' is not supported

static IAsset GetAsset(string assetId)
{
    // Use a LINQ Select query to get an asset.
    var assetInstance =
        from a in _context.Assets
        where a.Id == assetId
        select a;
    // Reference the asset as an IAsset.
    IAsset asset = assetInstance.FirstOrDefault();

    return asset;
}

from http://msdn.microsoft.com/en-us/library/jj129589.aspx#get_asset

leads to

System.Data.Services.Client.DataServiceClientException:
<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <m:code>Bad Request</m:code>
  <m:message xml:lang="en-US">
    Operation with function calls on member 'Id' is not supported
  </m:message>
</m:error>

   at System.Data.Services.Client.QueryResult.ExecuteQuery()
   at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
   --- End of inner exception stack trace ---
   at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
   at System.Data.Services.Client.DataServiceQuery`1.Execute()
   at System.Data.Services.Client.DataServiceQuery`1.GetEnumerator()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression)
   at System.Data.Services.Client.DataServiceQueryProvider.Execute[TResult](Expression expression)
   at Microsoft.WindowsAzure.MediaServices.Client.MediaQueryProvider`1.Execute[TResult](Expression expression)
   at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
   at MediaService.GetAsset(String assetId)

Media Services 3.5.2.0: Unknown media processor exception

Error message: Unknown media processor: 'Windows Azure Media Encoder'
Parametername: mediaProcessorName

Code:

var job = _mediaContext.Jobs.CreateWithSingleTask(MediaProcessorNames.WindowsAzureMediaEncoder,
                configuration, asset, $"{asset.Name}_encoded",
                AssetCreationOptions.None);

I am using the MediaProcessorNames class with the already predefined media processor names (WindowsAzureMediaEncoder). I did not change any code and the code did work several months ago.

Did you change something?

Some *.cs files not contained license in a header.

src/net/Client/BlobTransfer/BlobDownloader.cs
src/net/Client/BlobTransfer/BlobTransferBase.cs
src/net/Client/BlobTransfer/BlobTransferClient.cs
src/net/Client/BlobTransfer/BlobTransferContext.cs
src/net/Client/BlobTransfer/BlobUploader.cs
src/net/Client/BlobTransfer/MemoryManager.cs
src/net/Client/BlobTransfer/MemoryManagerFactory.cs
src/net/Client/BlobTransfer/ServicePointModifier.cs
src/net/Client/DynamicEncryption/AssetEncryptionState.cs
src/net/Client/IMediaDataServiceContext.cs

Submitting a job asynchronously using await SubmitAsync() never returns execution context

await job.SubmitAsync(), the execution context never returns (no exceptions, just dies silently), and the code never continues from that point onwards.

job.Submit() works as expected and returns execution to the current context when completed.

Internally in the code, job.Submit calls SubmitAsync, and is doing this.SubmitAsync.Wait(), which appears to work correctly in terms of returning execution context. Is this a known issue? Not sure why there would be a difference between *.Wait() and await in this case, unless there’s some dependency on thread context (possibly related to the use of ContinueWith).

Please update release notes.

Hello today I saw there is a new version of Azure media services SDK in the nuget package manager.
what is the difference between 3.6 & 3.7.0.1
I'm using Azure Media Services Extensions a few months a go this package were using another version of the the AMS SDK I needed to download the source code and update the version of this SDK.
I'm wondering if I can still use the AMS SDK Extensions with this version.
Did you updated the nuget package of WindowsAzure.Storage to the latest version(7.2.1) because AMS SDK needs WindowsAzure.Storage 4.3.0 Thank you.

BlobTransferClient.TransferCompleted event is no longer providing the BlobTransferCompleteEventArgs arguments

The signature of the TransferCompleted event is now:

public event EventHandler TransferCompleted

However the event is being raised with the BlobTransferCompleteEventArgs:

         private void TaskCompletedCallback(bool isCancelled, Exception ex, BlobTransferType transferType, string localFile, Uri url)
        {
            if (TransferCompleted != null)
            {
                TransferCompleted(this, new BlobTransferCompleteEventArgs(ex, isCancelled, null, localFile, url, transferType));
            }
        }

The event signature should be updated to send the BlobTransferCompleteEventArgs arguments.

Installing Package

Hi,

I would like to use Azure Media Service Nuget package on my UWP app. But, when I installed it, it showed me an error.

Error looks like this:
windowsazure.mediaservices 3.8.0.5 is not compatible with uap10.0.10586

It seems that the latest update of the package is near the end of last year. How to use AMS Nuget package on my UWP app ?

Thank You

ProgramData.Asset uses Single instead of SingleOrDefault()

System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.Single[TSource](IEnumerable1 source) at System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression) at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func1 func)
at Microsoft.WindowsAzure.MediaServices.Client.ProgramData.Microsoft.WindowsAzure.MediaServices.Client.IProgram.get_Asset()
at Rtl.LivestreamManagement.Application.Services.Azure.RegionDetailsStore.d__8.MoveNext()

Task not updating

I have problems getting the progress of a task. I have tried both
var progress = job.GetOverallProgress();
and
var task = job.Tasks.Where(j => j.Name == jobIdentifier).FirstOrDefault(); var progress = task.Progress;

It seems like the tasks are not updated, they stay at 0 percent even if the value in the portal changes. If I restart my code while a job is processing (creating a new CloudMediaContext the progress is set corectly for the first call but does not update after that. I have also tried calling the
job.UpdateAsync() with no effect.

Could not load type 'Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters

From @CarlosOnline on April 5, 2018 13:22

Could not load type Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters for .net core 2.0.3.

Is there any way to resolve this issue?

Error:
Could not load type 'Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters' from assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform, Version=3.19.2.6005, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
Source=Microsoft.WindowsAzure.MediaServices.Client.Common.Authentication

Code:

CloudMediaContext AzureContext; // See Azure Media Services for initialize instructions
AzureContext.Assets.ToList(); // Exception here

Exception

System.TypeLoadException
  HResult=0x80131522
  Message=Could not load type 'Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters' from assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform, Version=3.19.2.6005, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
  Source=Microsoft.WindowsAzure.MediaServices.Client.Common.Authentication
  StackTrace:
   at Microsoft.WindowsAzure.MediaServices.Client.AzureAdTokenProvider.GetToken()
   at Microsoft.WindowsAzure.MediaServices.Client.AzureAdTokenProvider.GetAuthorizationHeader()
   at Microsoft.WindowsAzure.MediaServices.Client.OAuth.OAuthDataServiceAdapter.AddAccessTokenToRequest(WebRequest request)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass22_0.<GetAccountApiEndpoint>b__0()
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0()
   at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func`1 func)
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.GetAccountApiEndpoint(OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter versionAdapter, Uri apiServer, UserAgentAdapter userAgentAdapter, IWebRequestAdapter clientRequestIdAdapter)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass25_0.<CreateAzureMediaServicesEndPoint>b__0()
   at Microsoft.WindowsAzure.MediaServices.Client.Cache`1.GetOrAdd(String key, Func`1 valueFactory, Func`1 expirationFactory)
   at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory..ctor(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext)
   at Microsoft.WindowsAzure.MediaServices.Client.CloudMediaContext.get_MediaServicesClassFactory()
   at Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.<.ctor>b__2_0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.WindowsAzure.MediaServices.Client.BaseCollection`1.get_Provider()
   at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)
   at SUR.AzureStreaming.Assets.GetAssets(String prefix, Boolean withLocatorsOnly) in E:\sur\Streaming2\Providers\AzureStreaming\AzureAsset.cs:line 64

Copied from original issue: aspnet/Configuration#807

New NotificationEndPoints property is not exposed on MediaContextBase

Most properties that CloudMediaContext exposes are also available on the MediaContextBase class - e.g. Assets, Files, Jobs, etc., however the new NotificationEndPoints property isn't.

Is there a reason for this? We try to pass MediaContextBase around as much as possible as it allows us to unit test our code because it can be mocked to some extent.

Problems creating Asset

Hi,
Two days ago, my web job took this error when it tried to create an asset, and then provoke encoding workflow error.

Video Name is this: "2.Posesión 4x4+2.mp4"

17:00:02.375 [32] ERROR AnalysisDepartment.AzureMediaServices.Services.MediaService - [ERROR] with Message: at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task1.get_Result()
at Microsoft.WindowsAzure.MediaServices.Client.AssetFileCollection.Create(String name)
at AnalysisDepartment.AzureMediaServices.Services.MediaService.CopyFileToMediaService(VideoModel video, String fileName)
17:12:26.501 [27] ERROR AnalysisDepartment.AzureMediaServices.Services.MediaService - [ERROR] with Message: at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
at System.Data.Services.Client.DataServiceQuery1.Execute() at System.Data.Services.Client.DataServiceQuery1.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source) at System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression) at System.Data.Services.Client.DataServiceQueryProvider.Execute[TResult](Expression expression) at Microsoft.WindowsAzure.MediaServices.Client.MediaQueryProvider1.<>c__DisplayClass5_01.<Execute>b__0() at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func1 func)
at Microsoft.WindowsAzure.MediaServices.Client.MediaQueryProvider1.Execute[TResult](Expression expression) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable1 source)
at AnalysisDepartment.AzureMediaServices.Services.MediaService.EncodeAndPublishFile(VideoModel video, String assetId)

Encoding support for file name that contains special characters.

According to "Media Services General Issues"

ID : MS3
Issue : Encoding an asset with a file name that contains
escape characters (for example, %20) fails
with “MediaProcessor : File not found.”

Description : Names of files that are going to be added to an asset and then encoded should only contain alphanumeric characters and spaces. The issue will be fixed in a future update.

Deleting an asset requires two REST API calls

When you get a reference to an asset and then call IAsset.Delete or DeleteAsync, this generates two REST requests on the wire:

457 200 HTTPS GET wamsbayclus001rest-hs.cloudapp.net /api/Assets()?$filter=Id%20eq%20'myID'&$top=1
458 204 HTTPS DELETE wamsbayclus001rest-hs.cloudapp.net /api/Assets('myID')

If I already have an ID, the first REST API call is not necessary. I did not see a way to directly trigger only the second request if I already have an ID reference in my calling code (the first request doesn't buy me anything here).

sample code generates a 400 bad request

The following sample code, used twice in CopyBlobsIntoAnAsset/Program.cs, consistently receives a 400 Bad Request from Azure.

var mediaBlobContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + "mediafiles001");
mediaBlobContainer.CreateIfNotExists();

Still getting familiar with the API--but this is presumably from sending a fully qualified URL instead of a container name, as the following works as expected.

var mediaBlobContainer = cloudBlobClient.GetContainerReference("mediafiles001");
mediaBlobContainer.CreateIfNotExists();

Add support to upload and download from stream on IAssetFile

Hi,

I am currently trying to add StorageEncryption to Assets I upload to my Media Services Storage. My problem is the file I am trying to upload is not on disk but in a blob encrypted with AES-256 CBC (upload with Azure Storage SDK). I don't want to write the decrypted file to disk and then upload it to Media Services' Storage with the AssetFile.Upload() method. I'd like to be able to do that directly with a stream with a AssetFile.UploadFromStream(stream) method. Same would go for the download, as I have to put the result from a Job to my other storage. Do you think that's feasible?

Thank you
P-O

Thumbnail Preset not consistent on Standard Encoder

I have seen an issue with the Thumbnail Preset on the Standard Encoder. What I am seeing is if I provide this preset

{
"Version": 1.0,
"Codecs": [
{
"Start": "00:00:11",
"Step": "00:00:11",
"Range": "00:00:11",
"Type": "JpgImage",
"PreserveResolutionAfterRotation": true,
"JpgLayers": [
{
"Quality": 100,
"Type": "JpgLayer",
"Width": "100%",
"Height": "100%"
}
]
}
],
"Outputs": [
{
"FileName": "{Basename}_{Index}{Extension}",
"Format": {
"Type": "JpgFormat"
}
}
]
}

The outputted thunbnail isn't from the frame on 00:00:11 consistently. Is this the correct preset for this?

Create new Asset and get Media Processor

Hi guys,

I've installed "windowsazure.mediaservices" and "windowsazure.mediaservices.extensions" 4.1.0.1 package and there are some errors when I'm trying to create new asset for the previous step of encoding video and an other error when I'm trying to get the latest media processor:

Creating new Asset:

[Header]\r\n10:57:49.738 [12] ERROR AnalysisDepartment.AzureMediaServices.Services.MediaService - [ERROR] with Message: at System.Data.Services.Client.EntityTracker.InternalAttachEntityDescriptor(EntityDescriptor entityDescriptorFromMaterializer, Boolean failIfDuplicated)
at System.Data.Services.Client.AtomMaterializerLog.ApplyToContext()
at System.Data.Services.Client.Materialization.ODataEntityMaterializer.ApplyLogToContext()
at System.Data.Services.Client.MaterializeAtom.MoveNextInternal()
at System.Data.Services.Client.MaterializeAtom.MoveNext()
at System.Linq.Enumerable.d__941.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source)
at System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression)
at System.Data.Services.Client.DataServiceQueryProvider.Execute[TResult](Expression expression)
at Microsoft.WindowsAzure.MediaServices.Client.MediaQueryProvider1.<>c__DisplayClass5_01.b__0()
at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func1 func) at Microsoft.WindowsAzure.MediaServices.Client.MediaQueryProvider1.Execute[TResult](Expression expression)
at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
at Microsoft.WindowsAzure.MediaServices.Client.CloudMediaContext.get_DefaultStorageAccount()
at Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.Create(String assetName, AssetCreationOptions options)
at AnalysisDepartment.AzureMediaServices.Services.MediaService.CopyFileToMediaService(VideoModel video, String fileName) in C:\ProyectosVSO[ProjectName].AnalysisDepartmentWeb\AnalysisDepartmentWeb.AzureMediaServices\Services\Impl\MediaService.cs:line 147

Getting latest media processor:

[Header]\r\n12:43:51.779 [16] ERROR AnalysisDepartment.AzureMediaServices.Services.MediaService - [ERROR] with Message: at System.Data.Services.Client.EntityTracker.InternalAttachEntityDescriptor(EntityDescriptor entityDescriptorFromMaterializer, Boolean failIfDuplicated)
at System.Data.Services.Client.AtomMaterializerLog.ApplyToContext()
at System.Data.Services.Client.Materialization.ODataEntityMaterializer.ApplyLogToContext()
at System.Data.Services.Client.MaterializeAtom.MoveNextInternal()
at System.Data.Services.Client.MaterializeAtom.MoveNext()
at System.Linq.Enumerable.d__941.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at AnalysisDepartment.AzureMediaServices.Services.MediaService.GetLatestMediaProcessorByName(String mediaProcessorName) in C:\ProyectosVSO[ProjectName].AnalysisDepartmentWeb\AnalysisDepartmentWeb.AzureMediaServices\Services\Impl\MediaService.cs:line 423
at AnalysisDepartment.AzureMediaServices.Services.MediaService.EncodeAndPublishFile(VideoModel video, String assetId) in C:\ProyectosVSO[ProjectName].AnalysisDepartmentWeb\AnalysisDepartmentWeb.AzureMediaServices\Services\Impl\MediaService.cs:line 229

My code as it follows:

For New Asset:
image

Getting latest media processor:

image

Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform' or one of its dependencies. The system cannot find the file specified.

Hi Azure SDK for Media Services,

Since upgrading Microsoft.IdentityModel.Clients.ActiveDirectory to 3.17.0 I am getting the following error:

Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform, Version=3.13.1.846, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

It looks like 3.17.0 of Microsoft.IdentityModel.Clients.ActiveDirectory removes Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll completely, see:
AzureAD/azure-activedirectory-library-for-dotnet#862
AzureAD/azure-activedirectory-library-for-dotnet#854

Going back to 3.16.1 fixes the issue.

Just wanted to let you know in case you weren't aware of what's happening from Microsoft.IdentityModel.Clients.ActiveDirectory from 3.17.0 moving forward.

I presume what's required in this project is a new windowsazure.mediaservices release that removes the dependency on Microsoft.IdentityModel.Clients.ActiveDirectory.Platform, but I'm not 100% sure?

If I can assist in any way please let me know :)

Thanks,

Tod.

IAssetFile.Upload(Stream stream)

I have been using the Upload function from the IAssetFile Interface for a couple of days now, to upload to azure media services.

However today it has stopped working.

I have narrowed down that error is coming from the Upload(Stream stream) function. I.e. something is going wrong during the uploading. And because of that whenever I start a job on Azure Media Services it always returns the following error:
The first error is when I run "Azure Media Redactor" and the second one is when I run "Media Encoder Standard"
Both of these were working previously. I have not touched my code.

Additionally here is the link to the question I asked on stackoverflow:
https://stackoverflow.com/questions/48031430/azure-media-services-strange-beheviour

image

Here is the code I use to upload assets:

foreach (var content in provider.Contents) 
    {
    // Upload as an asset to Azure Media services
            IAsset asset = await _service.CreateAssetAndUploadSingleFile(content, "Input Asset");
    }

Here is my CreateAssetAndUploadSingleFile Function:

            public async Task<IAsset> CreateAssetAndUploadSingleFile(HttpContent content, string assetName, AssetCreationOptions options = AssetCreationOptions.None)
        {
            IAsset asset = _context.Assets.Create(assetName, options);
            Console.WriteLine(content.Headers.ContentDisposition.FileName);
            IAssetFile assetFile = await asset.AssetFiles.CreateAsync("love.mp4", CancellationToken.None);
            if (content != null)
            {
                Console.WriteLine("creating stream");
                using (Stream stream = await content.ReadAsStreamAsync())
                {
                    Console.WriteLine("Uploading to blob storage");
                    assetFile.Upload(stream);
                    return asset;
                }
            }
            return asset;
        }

Publish URL not generating after upload into Media Service

I am using Rest API sample. In Program.cs file inside Main method after getting token I am calling method CreateAssetAndUploadSingleFile(token, _singleInputMp4Path); which is successfully uploading file interview2.wmv into media service container and it is returning the pointing URL also. But when I go into media services container it is still showing as not published.

I am still in confusion state why should we delete the locator after uploading the file?
I commented deleting the locator code but still it is not able to create the publish URL :-(

I followed this blog https://www.returngis.net/en/2014/08/publishing-assets-with-windows-azure-media-services-sdk-for-net/ and able to publish the asset which I pushed using your Rest API.

In that blog he also did same, creating accesspolicy and creating** locator** which we already done using this REST API but he used SDK to do that but I am using Azure media services in PCL so I should depend on REST API

Can you guys please provide a example or code how can I retain/ get publish URL after upload the video.

.NET Web API

Hi,

I would like to develop .NET API using Media Services SDK or API.
I cannot find nuget package of Media Service for .NET Web API template on Visual Studio.

Is Azure for Media Services is supported with this kind of project ?

Thank You

AlternateId property on Assets is not saved when creating an output asset

I can successfully set the AlternateId property when creating an output asset, but it is not persisted when I try enumerating the Assets collection off of the mediaContext after the encoding job has completed (it's set to null).

task.OutputAssets.AddNew(friendlyName, AssetCreationOptions.None);
task.OutputAssets[0].AlternateId = "foo";

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.