Şimdi Ara

C# proje seciminde yardim !!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
15
Cevap
0
Favori
1.605
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaslar,

    Hocamiz bizden 1.5 aylik bir proje istedi . Proje konusunu biz sececegiz .C# bilgim cok fazla degil yaklasik 1 donemdir ogreniyoruz , fakat proje 1.5 aylik oldugu icin orta seviye c# bilgisiyle yapila bilecek bir projeye ihtiyacim var. Benim aklimda bir kac proje var.Ornegin , basit bir media player , herhangi bir otomasyon( eczane otomasyonu , kutuphane otomasyonu vs vs).Ama ben biraz daha orjinal bir seyler
    ariyorum , yardimlariniz icin simdiden tesekkur ederim.

    Bu arada proje teslim tarihi yarin... :))



  • oooohaaaa :D nasıl yapmayı düşünüyorsun?
  • basit bir media player derken soundplayer la mı düşünüyorsun yoksa mediaplayer kütüphanesi ile mi?
  • Aklima ilk olarak tabi media player kutuphanesi geldi :)).Fakat hocamiz belki kabul etmeyebilir , media player kutuphanesini :( .
  • Hocanı mutlu edebilecekse XNA Framework ile 2 boyutlu bir oyun yapabilirsin. Hatta 3 boyutlu da yaparsın ama 1,5 aylık süreçte ortaya güzel birşey çıkar mı bilemem.

    Edit: Bu arada çok özür dilerim, çok yakınlardaki bir topicte zaten xna konusu konuşulmuş.



    < Bu mesaj bu kişi tarafından değiştirildi tlemsen -- 3 Aralık 2010; 14:51:02 >
  • yarın demişti teslim süresi ve geçmiş olması lazım oyun yapması çok zor bir gün deki 1,5 ayda da zor haa diyosan iyi biliyorum yaparsın ama XNA kütüphanesini öğrenmen zaten 1 ayını en az alır ki sabahtan akşama kadar çalışarak , media player kütüphanesine kızıyorsa kendi playerini yapcan başka çare yok :) çok iyi değilim ama yardımcı olmaya çalışırım eğer bana uygun birşey yapacaksan
  • Projemi teslim ettim , bir de ek olarak videolar icin str uzantili altyazilari gostermemi istedi :)) . W. media player kutuphanesi kullanmama da izin verdi bu sayede .Welrocken yardimlarini bekliyoruz .:D
    Simdi fark ettim konuyu album olarak acmisim.:)
  • Yapay Zeka’dan İlgili Konular
    Ikinci el model secimi yardim
    8 yıl önce açıldı
    Daha Fazla Göster
  • :) teslim ettin? şimdi eklememi yapıcaksın?
  • bişe buldum bu arada işine yararmı bilmiorm daha içeriğine bakmadım bakıcam birazdan ;
    http://rapidshare.com/files/139176275/AVI_lere__XVID_-_DIVX___Altyazi_Gomme.doc
  • Evet altyazi eklemesini yapmayi kabul ettim :). Tuvalette soyle bir sey geldi aklima :bir label ya da texbox artik denemek lazim alt yaziyi direk oraya videonun zamaniyla iliskilendire bilirsem problemi cozmus olurum. :)
  • C#' ta RenderFile (VMR9 + Alphabitmap yöntemi ile directx üzerinden draw kullanarak oluşturur.) metodu ile altyazı ekeleme diyelim .. işine yarayabilir.

     
    private void InitializeDirect3D()
    {
    Device.IsUsingEventHandlers = false;

    // Basic Presentation Parameters...
    presentParams = new PresentParameters();
    presentParams.Windowed = true;
    presentParams.SwapEffect = SwapEffect.Discard;

    // Assume a hardware Direct3D device is available
    // Add MultiThreaded to be safe. Each DirectShow filter runs in a separate thread...
    device = new Device(
    0,
    DeviceType.Hardware,
    this,
    CreateFlags.SoftwareVertexProcessing | CreateFlags.MultiThreaded,
    presentParams
    );

    // Create a surface from our alpha bitmap
    surface = new Surface(device, alphaBitmap, Pool.SystemMemory);

    // Get the unmanaged pointer
    unmanagedSurface = surface.GetObjectByValue(DxMagicNumber);
    }

    public void OpenVideo(string fileName)
    {
    int hr = 0;
    CleanUp();

    try
    {
    MediaInfo.Instance.Open(fileName);
    MediaInfo.Instance.Option("Complete", "0");

    mediaInfo = MediaInfo.Instance.Inform();
    videoWidth = MediaInfo.Instance.Get(StreamKind.Video, 0, "Width");
    videoHeight = MediaInfo.Instance.Get(StreamKind.Video, 0, "Height");
    videoFps = MediaInfo.Instance.Get(StreamKind.Video, 0, "FrameRate");
    videoBR = MediaInfo.Instance.Get(StreamKind.Video, 0, "BitRate");
    videoCodec = MediaInfo.Instance.Get(StreamKind.Video, 0, "CodecID/Hint");
    if (videoCodec == "") videoCodec = MediaInfo.Instance.Get(StreamKind.Video, 0, "Format");
    audioCodec = MediaInfo.Instance.Get(StreamKind.Audio, 0, "CodecID/Hint");
    if (audioCodec == "") audioCodec = MediaInfo.Instance.Get(StreamKind.Audio, 0, "Format");
    audioBR = MediaInfo.Instance.Get(StreamKind.Audio, 0, "BitRate");
    audioBRMode = MediaInfo.Instance.Get(StreamKind.Audio, 0, "BitRate_Mode");

    MediaInfo.Instance.Close();

    graphBuilder = (IFilterGraph2)new FilterGraph();
    mediaControl = graphBuilder as IMediaControl;
    mediaPosition = graphBuilder as IMediaPosition;
    videoWindow = graphBuilder as IVideoWindow;
    basicAudio = graphBuilder as IBasicAudio;
    basicVideo = graphBuilder as IBasicVideo;

    vmr9 = (IBaseFilter)new VideoMixingRenderer9();

    ConfigureVMR9InWindowlessMode();

    hr = graphBuilder.AddFilter(vmr9, "Video Mixing Renderer 9");
    if (hr != 0) throw new Exception(DsError.GetErrorText(hr));

    hr = graphBuilder.RenderFile(fileName, null);
    if (hr!=0) throw new Exception(DsError.GetErrorText(hr));

    mixerBitmap = (IVMRMixerBitmap9)vmr9;

    SetMixerSettings(0, 0, 0);

    string dir = Path.GetDirectoryName(fileName);

    string[] files = Directory.GetFiles(dir, "*.srt;*.sub;*.txt;*.ssa", SearchOption.AllDirectories);

    if (files.Length == 1) {
    Subtitles.Instance.TryLoadSubtitles(files[0]);
    }
    else if (files.Length > 1) {
    ushort maxDifference = 5;
    foreach (string f in files) {
    if (Utils.Levenshtein.Compare(Path.GetFileNameWithoutExtension(f),Path.GetFileNameWithoutExtension(fileName)) < maxDifference) {
    Subtitles.Instance.TryLoadSubtitles(f);
    }
    }
    }

    }
    catch (Exception e)
    {
    CloseInterfaces();
    throw;
    }
    }

    private void ConfigureVMR9InWindowlessMode()
    {
    int hr = 0;

    IVMRFilterConfig9 filterConfig = (IVMRFilterConfig9)vmr9;

    // Not really needed for VMR9 but don't forget calling it with VMR7
    hr = filterConfig.SetNumberOfStreams(1);
    DsError.ThrowExceptionForHR(hr);

    // Change VMR9 mode to Windowless
    hr = filterConfig.SetRenderingMode(VMR9Mode.Windowless);
    DsError.ThrowExceptionForHR(hr);

    windowlessCtrl = (IVMRWindowlessControl9)vmr9;

    // Set "Parent" window
    hr = windowlessCtrl.SetVideoClippingWindow(this.Handle);
    DsError.ThrowExceptionForHR(hr);

    // Set Aspect-Ratio
    hr = windowlessCtrl.SetAspectRatioMode(VMR9AspectRatioMode.LetterBox);
    DsError.ThrowExceptionForHR(hr);

    // Add delegates for Windowless operations
    AddHandlers();

    // Call the resize handler to configure the output size
    MainForm_ResizeMove(null, null);
    }

    private void SetMixerSettings(int width, int height, int lines)
    {
    int hr = 0;
    VMR9AlphaBitmap alphaBmp;

    if (!SubtitlesEnabled) // Did the user disable the bitmap ?
    {
    if (!bCleared) {
    // Get current Alpha Bitmap Parameters
    hr = mixerBitmap.GetAlphaBitmapParameters(out alphaBmp);
    DsError.ThrowExceptionForHR(hr);

    if (!alphaBmp.rDest.ToRectangleF().Size.IsEmpty)
    {
    // Disable them
    alphaBmp.dwFlags = VMR9AlphaBitmapFlags.Disable;

    // Update the Alpha Bitmap Parameters
    hr = mixerBitmap.UpdateAlphaBitmapParameters(ref alphaBmp);
    DsError.ThrowExceptionForHR(hr);

    bCleared = true;
    }
    }
    return;
    }


    // Set Alpha Bitmap Parameters for using a Direct3D surface
    alphaBmp = new VMR9AlphaBitmap();
    alphaBmp.dwFlags = VMR9AlphaBitmapFlags.EntireDDS;
    alphaBmp.pDDS = unmanagedSurface;
    alphaBmp.rDest = GetDestRectangle(width, height, lines);
    alphaBmp.fAlpha = 1.0f;
    alphaBmp.dwFilterMode = VMRMixerPrefs.BiLinearFiltering;
    // Note : Alpha values from the bitmap are cumulative with the fAlpha parameter.
    // Example : texel alpha = 128 (50%) & fAlpha = 0.5f (50%) = effective alpha : 64 (25%)

    // Set Alpha Bitmap Parameters
    hr = mixerBitmap.SetAlphaBitmap(ref alphaBmp);
    //DsError.ThrowExceptionForHR(hr);

    bCleared = false;
    }


    veya daha kolay olarak ISampleGrabber 'ı kullanabilirsin . :)




  • label işi seni yormazmı :D biraz hatta baya uğraşman lazım zaten örnek güzel :)
  • Soyle bir sitede bir ornek buldum , bana yeteri kadar yardimci olabilecegine inandigim bir ornek saniyorum.Fakat soyle bir sorun var uye olamiyorum "500 error" denen bir hata veriyor.Uyeligi olan bir arkadas var mi?
  • quote:

    Orijinalden alıntı: Stacer_boY

    C#' ta RenderFile (VMR9 + Alphabitmap yöntemi ile directx üzerinden draw kullanarak oluşturur.) metodu ile altyazı ekeleme diyelim .. işine yarayabilir.

     
    private void InitializeDirect3D()
    {
    Device.IsUsingEventHandlers = false;

    // Basic Presentation Parameters...
    presentParams = new PresentParameters();
    presentParams.Windowed = true;
    presentParams.SwapEffect = SwapEffect.Discard;

    // Assume a hardware Direct3D device is available
    // Add MultiThreaded to be safe. Each DirectShow filter runs in a separate thread...
    device = new Device(
    0,
    DeviceType.Hardware,
    this,
    CreateFlags.SoftwareVertexProcessing | CreateFlags.MultiThreaded,
    presentParams
    );

    // Create a surface from our alpha bitmap
    surface = new Surface(device, alphaBitmap, Pool.SystemMemory);

    // Get the unmanaged pointer
    unmanagedSurface = surface.GetObjectByValue(DxMagicNumber);
    }

    public void OpenVideo(string fileName)
    {
    int hr = 0;
    CleanUp();

    try
    {
    MediaInfo.Instance.Open(fileName);
    MediaInfo.Instance.Option("Complete", "0");

    mediaInfo = MediaInfo.Instance.Inform();
    videoWidth = MediaInfo.Instance.Get(StreamKind.Video, 0, "Width");
    videoHeight = MediaInfo.Instance.Get(StreamKind.Video, 0, "Height");
    videoFps = MediaInfo.Instance.Get(StreamKind.Video, 0, "FrameRate");
    videoBR = MediaInfo.Instance.Get(StreamKind.Video, 0, "BitRate");
    videoCodec = MediaInfo.Instance.Get(StreamKind.Video, 0, "CodecID/Hint");
    if (videoCodec == "") videoCodec = MediaInfo.Instance.Get(StreamKind.Video, 0, "Format");
    audioCodec = MediaInfo.Instance.Get(StreamKind.Audio, 0, "CodecID/Hint");
    if (audioCodec == "") audioCodec = MediaInfo.Instance.Get(StreamKind.Audio, 0, "Format");
    audioBR = MediaInfo.Instance.Get(StreamKind.Audio, 0, "BitRate");
    audioBRMode = MediaInfo.Instance.Get(StreamKind.Audio, 0, "BitRate_Mode");

    MediaInfo.Instance.Close();

    graphBuilder = (IFilterGraph2)new FilterGraph();
    mediaControl = graphBuilder as IMediaControl;
    mediaPosition = graphBuilder as IMediaPosition;
    videoWindow = graphBuilder as IVideoWindow;
    basicAudio = graphBuilder as IBasicAudio;
    basicVideo = graphBuilder as IBasicVideo;

    vmr9 = (IBaseFilter)new VideoMixingRenderer9();

    ConfigureVMR9InWindowlessMode();

    hr = graphBuilder.AddFilter(vmr9, "Video Mixing Renderer 9");
    if (hr != 0) throw new Exception(DsError.GetErrorText(hr));

    hr = graphBuilder.RenderFile(fileName, null);
    if (hr!=0) throw new Exception(DsError.GetErrorText(hr));

    mixerBitmap = (IVMRMixerBitmap9)vmr9;

    SetMixerSettings(0, 0, 0);

    string dir = Path.GetDirectoryName(fileName);

    string[] files = Directory.GetFiles(dir, "*.srt;*.sub;*.txt;*.ssa", SearchOption.AllDirectories);

    if (files.Length == 1) {
    Subtitles.Instance.TryLoadSubtitles(files[0]);
    }
    else if (files.Length > 1) {
    ushort maxDifference = 5;
    foreach (string f in files) {
    if (Utils.Levenshtein.Compare(Path.GetFileNameWithoutExtension(f),Path.GetFileNameWithoutExtension(fileName)) < maxDifference) {
    Subtitles.Instance.TryLoadSubtitles(f);
    }
    }
    }

    }
    catch (Exception e)
    {
    CloseInterfaces();
    throw;
    }
    }

    private void ConfigureVMR9InWindowlessMode()
    {
    int hr = 0;

    IVMRFilterConfig9 filterConfig = (IVMRFilterConfig9)vmr9;

    // Not really needed for VMR9 but don't forget calling it with VMR7
    hr = filterConfig.SetNumberOfStreams(1);
    DsError.ThrowExceptionForHR(hr);

    // Change VMR9 mode to Windowless
    hr = filterConfig.SetRenderingMode(VMR9Mode.Windowless);
    DsError.ThrowExceptionForHR(hr);

    windowlessCtrl = (IVMRWindowlessControl9)vmr9;

    // Set "Parent" window
    hr = windowlessCtrl.SetVideoClippingWindow(this.Handle);
    DsError.ThrowExceptionForHR(hr);

    // Set Aspect-Ratio
    hr = windowlessCtrl.SetAspectRatioMode(VMR9AspectRatioMode.LetterBox);
    DsError.ThrowExceptionForHR(hr);

    // Add delegates for Windowless operations
    AddHandlers();

    // Call the resize handler to configure the output size
    MainForm_ResizeMove(null, null);
    }

    private void SetMixerSettings(int width, int height, int lines)
    {
    int hr = 0;
    VMR9AlphaBitmap alphaBmp;

    if (!SubtitlesEnabled) // Did the user disable the bitmap ?
    {
    if (!bCleared) {
    // Get current Alpha Bitmap Parameters
    hr = mixerBitmap.GetAlphaBitmapParameters(out alphaBmp);
    DsError.ThrowExceptionForHR(hr);

    if (!alphaBmp.rDest.ToRectangleF().Size.IsEmpty)
    {
    // Disable them
    alphaBmp.dwFlags = VMR9AlphaBitmapFlags.Disable;

    // Update the Alpha Bitmap Parameters
    hr = mixerBitmap.UpdateAlphaBitmapParameters(ref alphaBmp);
    DsError.ThrowExceptionForHR(hr);

    bCleared = true;
    }
    }
    return;
    }


    // Set Alpha Bitmap Parameters for using a Direct3D surface
    alphaBmp = new VMR9AlphaBitmap();
    alphaBmp.dwFlags = VMR9AlphaBitmapFlags.EntireDDS;
    alphaBmp.pDDS = unmanagedSurface;
    alphaBmp.rDest = GetDestRectangle(width, height, lines);
    alphaBmp.fAlpha = 1.0f;
    alphaBmp.dwFilterMode = VMRMixerPrefs.BiLinearFiltering;
    // Note : Alpha values from the bitmap are cumulative with the fAlpha parameter.
    // Example : texel alpha = 128 (50%) & fAlpha = 0.5f (50%) = effective alpha : 64 (25%)

    // Set Alpha Bitmap Parameters
    hr = mixerBitmap.SetAlphaBitmap(ref alphaBmp);
    //DsError.ThrowExceptionForHR(hr);

    bCleared = false;
    }


    veya daha kolay olarak ISampleGrabber 'ı kullanabilirsin . :)


    Tekrar merhaba ;

    Yaklasik 2 gundur altyazi problemini cozmeye ugrasiyorum fakat henuz hic bir gelisme gosteremedim .Senin verdigin kodu inceledim fakat nasil kullanacagima dair en ufak bir fikrim yok malesef.Bunun yani sira ISampleGrabber ve RenderFile bu ikisini de kurcaladim nafile sole bir kod buldum , cok guzel bir sekilde yazilmis ama benim programima nasil entegre edecegime dair yine en ufak bir fikrim yok :(.Acayip sekilde bunaldim.

    Kod su :
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    using System.IO;
    namespace Subtitles
    {
    class Program
    {
    static void Main(string[] args)
    {
    Hashtable table = FileToString();
    Console.WriteLine("OUTPUT:" + table[new Key(333)]); // there you enter current video frame(example: 333)
    }
    static Hashtable FileToString()
    {
    /*the file sub.txt is int this solution in this form: start_frame-end_frame-text 345-543-
    How are you? */
    Hashtable table = new Hashtable();
    Stream stream = new FileStream("sub.txt",FileMode.Open);
    StreamReader read = new StreamReader(stream);
    while (true)
    {
    string line = read.ReadLine();
    if (line == null)
    break;
    string[] field = line.Split("-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
    Key key = new Key(Convert.ToInt32(field[0]),Convert.ToInt32(field[1]));
    table.Add(key,field[2]);
    }
    return table;
    }
    }
    class Key
    {
    int min;
    int max;
    public Key(int min, int max)
    {
    this.max = max;
    this.min = min;
    }
    public Key(int pos)
    {
    this.max = pos;
    this.min = pos;
    }
    public override bool Equals(object obj)
    {
    Key pom = (Key)obj;
    if (pom.max <= max && pom.min >=min)
    {
    return true;
    }
    else
    return false;
    }
    public override int GetHashCode()
    {
    return 1;
    }
    }
    }




  • Sorunu sonunda cozdum :) .Fakat kabul gorurmu o konuda bir sey solemek guc , cunku ortada bir algoritma ya da bir code yok malesef.Her neyse , forum sitelerinde sole bir programdan bahsediliyor " DirectVobSub"
    subtitle filter yapan bir program 800KB bir sey.Indirim kurudum .Filmin adiyla altyazinin adini ayni yaptim ve takir takir calisiyor su anda :)
    Ilgilenen arakdaslara cok tesekkur ederim.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.