AVI→MP4

AVI から MP4 に変換します。

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

プログラムの説明

  1. Windows10 ストア・アプリを使うと AVI から MP4 に変換するのは簡単です。
    MediaEncodingProfile で MP4 のプロファイルを設定します。
    MediaTranscoder を設定して、PrepareFileTranscodeAsync() を呼び出すと変換が行われます。
    source が元の File の StorageFolder で、destination が 返還後の File の StorageFolder です。
    using Windows.Storage;
    using Windows.Media.MediaProperties;
    using Windows.Media.Transcoding;
    
        MediaEncodingProfile profile =
            MediaEncodingProfile.CreateMp4(VideoEncodingQuality.HD720p);
        MediaTranscoder transcoder = new MediaTranscoder();
        PrepareTranscodeResult prepareOp = await
            transcoder.PrepareFileTranscodeAsync(source, destination, profile);
        if (prepareOp.CanTranscode)
        {
            var transcodeOp = prepareOp.TranscodeAsync();
        }
    
  2. ファイルピッカーを使って source と destination にファイル名を設定します。
    ファイルピッカーの基本は Image Picker を参照して下さい。
  3. AVI から MP4 に変換するプロジェクトを構築します。
    [Visual C#][Windows][空白アプリ(ユニバーサル Windows)]から AVItoMP4 の名前で新規プロジェクトを作成します。
  4. MainPage.xaml のデザイナを表示して、ツールボックスからボタンと TextBox を張り付けます。
    Text Box には進行状況を表示します。
    ボタンクリックにイベントハンドラ(button_Click) を設定します。
  5. MainPage.xaml.cs のソースコードです。
    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 AVItoMP4
    {
        /// <summary>
        /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            async private void button_Click(object sender, RoutedEventArgs e)
            {
                var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
                openPicker.SuggestedStartLocation =
                    Windows.Storage.Pickers.PickerLocationId.VideosLibrary;
                openPicker.FileTypeFilter.Add(".avi");
                StorageFile source = await openPicker.PickSingleFileAsync();
    
                var savePicker = new Windows.Storage.Pickers.FileSavePicker();
                savePicker.SuggestedStartLocation =
                    Windows.Storage.Pickers.PickerLocationId.VideosLibrary;
                savePicker.DefaultFileExtension = ".mp4";
                savePicker.SuggestedFileName = "NewWave";
                savePicker.FileTypeChoices.Add("MP4", new string[] { ".mp4" });
                StorageFile destination = await savePicker.PickSaveFileAsync();
    
                textBox.Text = "Start Convert";
                MediaEncodingProfile profile =
                    MediaEncodingProfile.CreateMp4(VideoEncodingQuality.HD720p);
                MediaTranscoder transcoder = new MediaTranscoder();
                PrepareTranscodeResult prepareOp = await
                    transcoder.PrepareFileTranscodeAsync(source, destination, profile);
                if (prepareOp.CanTranscode)
                {
                    var transcodeOp = prepareOp.TranscodeAsync();
                }
                else
                {
                    switch (prepareOp.FailureReason)
                    {
                        case TranscodeFailureReason.CodecNotFound:
                            System.Diagnostics.Debug.WriteLine("Codec not found.");
                            break;
                        case TranscodeFailureReason.InvalidProfile:
                            System.Diagnostics.Debug.WriteLine("Invalid profile.");
                            break;
                        default:
                            System.Diagnostics.Debug.WriteLine("Unknown failure.");
                            break;
                    }
                }
                textBox.Text = "Complete";
            }
        }
    }
    
  6. ボタンをクリックすると、AVI の入力ピッカーが開きます。
    続けて MP4 の出力ピッカーが開きます。
    入出力ファイルを選択すると AVI ファイルが変換されて MP4 ファイルが作成されます。
  7. MP4 を AVI に変換するプログラムも同じ要領だと思いプログラムしたのですが、作成された AVI が開けませんでした。
    何か原因があるのでしょうね?

[Next Chapter ↓] MP4 ⇔ AVI

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