私は前の質問から私の質問に言い直しました。私はデスクトップレコーダーを作りました。それは1つのことを除いて完璧に動作します。ビデオをエンコードして、出力フォルダにメディアを配置しようとすると、C:\Videos
は例外をスローします。出力ファイルをユーザーフォルダに保存する
出力.xesc
は、CドライブのVideosフォルダに保存されます。しかし、それを.wmv形式に変換しようとすると、次の例外がスローされます。
An unhandled exception of type Microsoft.Expression.Encoder.InvalidMediaFileException occured in Microsoft.Expression.Encoder.dll Aditional Information: Access Denied (Exception from HRESULT: 0x80070005(E_AccessDenied))
以下のエンコーダを掲載しました。ここで
****ソースコード******
は、エンコーディングを扱うソースコードです。私はそれについていくつかのことに取り組んでいました。何か間違いや何か改善が見られる場合は、私に知らせてください。それは完璧に動作し、それは私が手動で.xesc
を変換することができますので、これは問題で必要ではないが、それは時間がかかります.WMVに
void Encode(string jobPath)
{
using (Job j = new Job())
{
MediaItem mediaItem = new MediaItem(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos) + @"\IvanSoft Desktop Recorder");
var size = mediaItem.OriginalVideoSize;
WindowsMediaOutputFormat WMV_Format = new WindowsMediaOutputFormat();
WMV_Format.VideoProfile = new Microsoft.Expression.Encoder.Profiles.AdvancedVC1VideoProfile();
WMV_Format.AudioProfile = new Microsoft.Expression.Encoder.Profiles.WmaAudioProfile();
WMV_Format.VideoProfile.AspectRatio = new System.Windows.Size(16, 9);
WMV_Format.VideoProfile.AutoFit = true;
if (size.Width >= 1920 && size.Height >= 1080)
{
WMV_Format.VideoProfile.Size = new System.Drawing.Size(1920, 1080);
WMV_Format.VideoProfile.Bitrate = new Microsoft.Expression.Encoder.Profiles.VariableUnconstrainedBitrate(6000);
}
else if (size.Width >= 1280 && size.Height >= 720)
{
WMV_Format.VideoProfile.Size = new System.Drawing.Size(1280, 720);
WMV_Format.VideoProfile.Bitrate = new Microsoft.Expression.Encoder.Profiles.VariableUnconstrainedBitrate(4000);
}
else
{
WMV_Format.VideoProfile.Size = new System.Drawing.Size(size.Width, size.Height);
WMV_Format.VideoProfile.Bitrate = new Microsoft.Expression.Encoder.Profiles.VariableUnconstrainedBitrate(2000);
}
mediaItem.VideoResizeMode = VideoResizeMode.Letterbox;
mediaItem.OutputFormat = WMV_Format;
j.MediaItems.Add(mediaItem);
j.CreateSubfolder = false;
j.OutputDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos) + @"\IvanSoft Desktop Recorder.xesc";
j.EncodeProgress += new EventHandler<EncodeProgressEventArgs>(j_EncodeProgress);
j.Encode();
}
}
は保存されませんformatbut .xescを置きます。私はSave_btnClik
を押すとうまくいきたいと思っています。これはwin8.1とwin10で発生します。
どのような種類のアクセス権が必要ですか?あなたは "SaveFileDiaLog" を使用していけないのはなぜ
C:\のルートに書き込むには、管理者権限が必要です。これを確認するには、ファイルをそこにコピーします。パスワードを入力するように求められます。 – elyashiv
http://stackoverflow.com/questions/2818179/how-do-iforce-my-net-application-to-run-as-administrator – nozzleman
を参照して、現在行っているコードを含めることは可能ですか? –