MP3 → WAV

MP3 を WAVE に変換します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 2018/06/22 以降のアプリは Windows10 & Visual Studio Enterprise 2017 の環境で開発します。
    Windows10 ストア・アプリを使うと MP3 を WAVE に変換するのは簡単です。
    MediaEncodingProfile で WAVE のプロファイルを設定します。
    AudioEncodingQuality.Medium はオーディオ品質の設定です。
    詳細は AudioEncodingQuality Enumeration を参照して下さい。
    MediaTranscoder を設定して、PrepareFileTranscodeAsync() を呼び出すと変換が行われます。
    source が MP3 File の StorageFolder で、destination が WAVE File の StorageFolder です。
    using Windows.Storage;
    using Windows.Media.MediaProperties;
    using Windows.Media.Transcoding;
    
        MediaEncodingProfile profile =
            MediaEncodingProfile.CreateWav(AudioEncodingQuality.Medium);
        MediaTranscoder transcoder = new MediaTranscoder();
        PrepareTranscodeResult prepareOp = await
            transcoder.PrepareFileTranscodeAsync(source, destination, profile);
        if (prepareOp.CanTranscode)
        {
            var transcodeOp = prepareOp.TranscodeAsync();
        }
    
  2. MP3 を WAVE に変換するのは簡単なのですが、StorageFolder に File を設定するのが一苦労です。
    Win32API なら source = "c:\\data\\morainaki.mp3"; のように書けばOKなのですが。 (^_^;)
    そこで "morainaki.mp3" はインストールフォルダに格納することにします。
    インストールフォルダの基本は install folder を参照して下さい。
  3. "morainaki.wav" は Local Folder に書き出すことにします。
    Local Folder はアプリをインストールすると作成され、アンインストールすると削除されます。
    Local Folder は次のようになります。
        C:\Users\<ユーザ名>\AppData\Local\Packages\<アプリID>\LocalState\
    
    今回作成したプログラムでは、次のフォルダに格納されていました。
        C:\Users\maeda\AppData\Local\Packages\maeda.Local_m3b2cat7fbs4m\LocalState\morainaki.wav
    
    Local Folder の基本は Local Folder を参照して下さい。
  4. MP3→WAV のプロジェクトを構築します。
    [Visual C#][Windows][空白アプリ(ユニバーサル Windows)]を選びます。
    MP3toWAV の名前で新規プロジェクトを作成します。
  5. MainPage.xaml のデザイナを表示して、ツールボックスからボタンを張り付けます。
    ボタンクリックにイベントハンドラ(button_Click) を設定します。
  6. "morainaki.mp3" をプロジェクトのフォルダーに格納します。
    ソリューションエクスプローラの MP3toWAV を右クリックして、既存の項目から morainaki.mp3 をプロジェクトに加えます。
  7. Local Folder の設定です。
    Package.appxmanifest を編集して Local Folder に関係する Name を修正します。
        <Identity Name="maeda.Local"
            Publisher="CN=maeda"
            Version="1.0.0.0" />
    
  8. MainPage.xaml.cs のソースコードです。
    button_Click() 関数に async を設定して下さい。
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using Windows.Storage;
    using Windows.Media.MediaProperties;
    using Windows.Media.Transcoding;
    
    // 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x411 を参照してください
    
    namespace MP3toWAV
    {
        /// <summary>
        /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            async private void button_Click(object sender, RoutedEventArgs e)
            {
                StorageFolder storageFolder =
                    Windows.ApplicationModel.Package.Current.InstalledLocation;
                StorageFile source = await storageFolder.GetFileAsync("morainaki.mp3");
    
                StorageFile destination = null;
                StorageFolder desFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
                destination = await desFolder.CreateFileAsync("morainaki.wav", CreationCollisionOption.ReplaceExisting);
    
                MediaEncodingProfile profile =
                    MediaEncodingProfile.CreateWav(AudioEncodingQuality.Medium);
                MediaTranscoder transcoder = new MediaTranscoder();
                PrepareTranscodeResult prepareOp = await
                    transcoder.PrepareFileTranscodeAsync(source, destination, profile);
                if (prepareOp.CanTranscode)
                {
                    var transcodeOp = prepareOp.TranscodeAsync();
                }
            }
        }
    }
    
  9. プロジェクトをコンパイル&実行すると、Local Folder に morainaki.wav が作成されます。
    確認が終われば「スタート」ボタンをクリックして MP3toWAV をアンインストールして下さい。
    Local Folder はアンインストールすると削除されるので、必要なら morainaki.wav をコピーして下さい。

[Next Chapter ↓] MP3 ⇔ WAV

超初心者のプログラム入門(C# Frame Work)