Non ho trovato altre motivazioni se non caricare un file audio su YouTube.
Ci sono applicazioni desktop e web che già fanno questa conversione, ma se si deve farlo a riga di comando le API di Windows sono di grande aiuto
Ecco il codice di una applicazione console che usa l'oggetto MediaComposition
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Media.Editing;
using Windows.Media.MediaProperties;
using Windows.Media.Transcoding;
using Windows.Storage;
namespace Audio2Video
{
class Program
{
static private string filePath;
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: Audio2Video
return;
}
filePath = args[0];
if (!File.Exists(filePath))
{
Console.WriteLine("The file {0} doesn't exist", filePath);
return;
}
Audio2Video().GetAwaiter().GetResult();
}
static async Task Audio2Video()
{
MediaComposition composition = new MediaComposition();
StorageFile inputFile = await StorageFile.GetFileFromPathAsync(filePath);
var audioproperties = await inputFile.Properties.GetMusicPropertiesAsync();
string video = Path.ChangeExtension(filePath, ".wmv");
File.Create(video).Dispose();
StorageFile outputFile = await StorageFile.GetFileFromPathAsync(video);
var backgroundTrack = await BackgroundAudioTrack.CreateFromFileAsync(inputFile);
composition.BackgroundAudioTracks.Add(backgroundTrack);
var clip = MediaClip.CreateFromColor(Windows.UI.Color.FromArgb(0,0,0,0), audioproperties.Duration);
composition.Clips.Add(clip);
var profile = MediaEncodingProfile.CreateWmv(VideoEncodingQuality.Qvga);
// Call RenderToFileAsync
var saveOperation = await composition.RenderToFileAsync(outputFile, MediaTrimmingPreference.Fast, profile);
}
}
}
Nessun commento:
Posta un commento