14 Eylül 2010 Salı

Qt ile basit bir video player yapımı

Herkese merhaba. Bu bölümde yanda gördüğünüz gibi basit bir video player yapacağız. Bu iş için Qt'un hemen hemen her türlü multimedia işleri için kullandığı Phonon frameworkünü kullanacağız.(Ayrıntılar için bakınız ).

Kısaca yazacağımız programdan bahsedeyim. Yazacağımız program sadece 3 işi yapacak. Video'yu oynatacak, duraklatacak ve durduracak. Bu işler için kabaca 3 button ve phonon frameworkü ile gelen 1 videoplayer widget'ı kullanacağız.

Programı yazmaya başlamadan önce Phonon frameworkünü kullanabilmek için "pro" uzantılı dosyamıza şu satırı ekliyoruz


QT +=phonon



İsterseniz şimdi programı yazmaya başlayalım.


#include <QtGui>

/*Ben Pardus işletim sistemi kullandığım için
Phonon kütüphanesi KDE'nin altında bulunuyor
sizinki farklı olabilir. Genelde diğer sistemlerde
sadece #include <Phonon/VideoPlayer> yeterli oluyor*/

#include <KDE/Phonon/VideoPlayer>

using namespace Phonon;

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//videoplayer ve buttonların
//üzerinde bulunacağı widget
QWidget *parent = new QWidget();

//Burada kullanacağımız Phonon VideoPlayer nesnesini tanımlıyoruz
VideoPlayer *video = new VideoPlayer(parent);

//İzleyeceğimiz videonun yerini tanımlıyoruz.
video->load(QString("/home/mehmet/video.mpg"));

//başlat butonu
QPushButton *play = new QPushButton(parent);
play->setText("play");
play->connect(play,SIGNAL(clicked()),video,SLOT(play()));
//duraklat butonu
QPushButton *pause = new QPushButton(parent);
pause->setText("pause");
pause->connect(pause,SIGNAL(clicked()),video,SLOT(pause()));
//durdur butonu
QPushButton *stop = new QPushButton(parent);
stop->setText("stop");
stop->connect(stop,SIGNAL(clicked()),video,SLOT(stop()));

//widgetların düzgün gözükmesi için
//dikey yerleşim kullanıyorum
QVBoxLayout * vlayout = new QVBoxLayout(parent);

vlayout->addWidget(video);
vlayout->addWidget(play);
vlayout->addWidget(pause);
vlayout->addWidget(stop);

parent->setLayout(vlayout);
parent->setMinimumSize(300,300);
parent->setWindowTitle("Video Player");

parent->show();

return a.exec();
}


Artık sizinde kendinize ait video playerınız var :)

9 yorum:

  1. Merhaba,
    dediğiniz gibi programı yazdım fakat
    QT +=phonon diye ekleyebileceğim bir .pro dosyası oluşmuyor debug etsem bile...
    vs2008 üzerinde qt yi kullanmaktayım. phonon kütüphaneyeriyle birlikte çalıştırdığımda gui arayüzü hata vermeden geliyor fakat adresini verdiğim video çalışmıyor...
    bunu nasıl düzeltebilirim yardım ederseniz çok sevinirim.

    YanıtlaSil
  2. Merhaba Samet Bey.

    Ben programlarımı Linux işletim sisteminde yazmaktayım ve Linux'de Phonon kütüphanesi rahatlıkla kullanılabilmekte. Ancak yaptığım kısa çaplı araştırmaya göre Phonon kütüphanesi Windows üzerinde sorun çıkarmaktaymış. Açıkçası sorunun çözümünü bulan bir yazıda göremedim. Şuan sınav dönemindeyim. Sınavlarımdan sonra bu konuyla daha detaylı ilgileneceğim.

    Pro dosyasında gelince. Pro dosyası, Qt Creater'da proje açtığınızda kullanılacak kütüphanelerin belirtildiği bir dosya. Anladığım kadarıyla MS VS2008'de buna benzer bir yapı kullanılmıyor.

    YanıtlaSil
  3. Olmuyor kardeş,6 tane hata alıyorum.

    YanıtlaSil
  4. Son durumu yazmak istedim:

    pro dosyasına gerek kalmıyor vs2008 de. qt yüklenirken ve projeyi oluştururken phonon modülünün kütüphanesini de seçmemiz gerekiyor (ya da linker dan bu kütüphaneyi de ekleyebiliriz -phonon.lib-) yazılımı yaptıktan sonra derlemede hata oluşmuyor. Fakat firewall u kapattık ve gerekli compress decode codecleri de yükledikten sonra video basılıyor evet görüntü geliyor ama nası geliyor???
    (1)Şaşılacak bişey ki video benim eklediğim videoplayer penceresinde değil de sol üst köşede kendi kendine açılan ufak bir pencerede oluyor.
    (2) ayrıca böyle bile olsa da yayın tam olarak 1 dk oluyor ve kapanıyor. bu da galiba codec in shareware olabileceğinden mi kaynaklanıyor bilmiyorum. Araştırmalarıma göre bu iki sıkıntı da ortamın windows olmasından kaynaklanıyor gibi...

    YanıtlaSil
  5. Bu cuma sınavlarım bitiyor. Bu konuyla ilgileneceğim.

    YanıtlaSil
  6. Projeyi upload etsende alsak nasıl olur ?

    YanıtlaSil
  7. Yukarıdaki kod Pardus 2009.2 de düzgün çalışıyor. O yüzden yukarıda ki kodu Pardus'ta kopyala yapıştır ile kullanabilirsiniz. Bugün sınavlarım bitiyor. yakın zamanda Windows için kodları tekrar düzenleyeceğim. Projeyi de siteye upload edeceğim. Herkese kolay gelsin

    YanıtlaSil
  8. Merhaba

    Bende programı windows xp de denedim. Bende de ses geldi ama görüntü gelmiyor. Program çalışırken şöyle bir uyarı aldım:

    WARNING: Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName ) to Phonon::VideoWidget ( no objectName ).

    Bu sorunun phonon'un kullandığı backend directshow'dan kaynaklanmaktaymış. Bu durumu çözmek için phonon kütüphaneleri tekrar derledim ancak sorun düzelmedi.

    YanıtlaSil
  9. Ben symbian'da deniyorum...Sorunsuz çalışıyor..

    YanıtlaSil