2012年6月14日 星期四

使用Expression Encoder進行影片轉檔

測試的程式碼如下,這邊是轉出為WMV的VC-1格式,
如果要轉檔成MP4的格式,需要使用"Expression Encoder 4 Pro (with codecs)"授權版本,不然會出現錯誤訊息。
image
using System;
using Microsoft.Expression.Encoder;
using Microsoft.Expression.Encoder.Profiles;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MediaItem mediaItem = new MediaItem(@"C:\Temp\24.wmv");

//mediaItem.OutputFormat = new MP4OutputFormat();
WindowsMediaOutputFormat wmof = new WindowsMediaOutputFormat();
wmof.VideoProfile = new MainVC1VideoProfile();
wmof.AudioProfile = new WmaAudioProfile();
mediaItem.OutputFormat = wmof;

//Creates job and media item for the video to be encoded
Job job = new Job();
job.MediaItems.Add(mediaItem);

//Sets output directory
job.OutputDirectory = @"C:\Temp\converted";

//job.DefaultMediaOutputFileName = "24.mp4";
job.DefaultMediaOutputFileName = "24.wmv";

//Sets up progress callback function
job.EncodeProgress += new EventHandler<EncodeProgressEventArgs>(OnProgress);

//Encodes
Console.WriteLine("Encoding…");
job.Encode();
Console.WriteLine("\nFinished encoding.");
job.Dispose();

Console.ReadKey();
}

static void OnProgress(object sender, EncodeProgressEventArgs e)
{
Console.Write("\b\b\b\b\b\b\b");
Console.Write("{0:F2}%", e.Progress);
}

}
}
參考資料:


  • C:\Program Files (x86)\Microsoft Expression\Encoder 4\SDK

  • C:\Program Files (x86)\Microsoft Expression\Encoder 4\zh-Hant\Encoder.chm

2012年6月13日 星期三

關於C#裡 System.DBNull.Value & Convert.IsDBNull 的迷思

繼續自話題關於C#裡 System.DBNull.Value & Convert.IsDBNull 的迷思

原貼為:

想請教一下, 在C# 裡, 我要判斷資料表欄位是否為 Null 值, 是要用

if (DataTable.Rows[0][0] == System.DBNull.Value)

{

}

還是要用

if (Convert.IsDBNull(DataTable.Rows[0][0]))

{

}

那一個來做比較好? 為什麼?

正確的答案是:

Convert.IsDBNull 比較好。

為什麼?

DataTable.Rows[0][0] 傳回來的值,或說取自資料庫的值,傳回的型別大都是Object,必須要先利用轉型才可以正確判斷。

使用 if (DataTable.Rows[0][0] == System.DBNull.Value) 大都是False,微軟不會沒事找事做,微軟的東西也會經過一定的測試流程才發佈出來,

盡量使用可靠的東西準沒錯。

備註:

我遇到的錯誤情況是

if (tr["Tradition"] != DBNull.Value) btrTradition.ReportComplete = Convert.ToDateTime(tr["Tradition"]);
參考資料:

2012年6月5日 星期二

[WP7]Live Tile偵錯

在WMAppManifest.xml的原有<Tasks>加上程式碼,如下:

<Tasks>
  <
DefaultTask  Name ="_default" NavigationPage="View/LoginPage.xaml"/>
  <!--
For Live Tile Debug Start-->
  <
ExtendedTask Name="BackgroundTask">
    <
BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="ScheduledTaskAgent1"
                           
Source="DummyAgent" Type="DummyAgent.ScheduledAgent" />
  </
ExtendedTask>
  <!--
For Live Tile Debug End-->
</
Tasks>

在Release正式版之前,記得拿掉這個區段。

參考資料: