[]

[Java] FileInputStream ile video okumak

pixellerin r g ve b değerlerini üç matrise atmak istiyorum. ama hangi sırayla geliyor bunlar? rgbrgbrgb... mi, rrr...ggg...bbb... mi, başka türlü mü? aşağıdakilerden hangisi doğru?

a)
for(int k=0;k<1800;k++)
{
for( icount=0;icount<Height;icount++){

for( jcount=0;jcount<Width;jcount++){

VideoData_r[icount][jcount][k]=fis.read();

}

}
for( icount=0;icount<Height;icount++){

for( jcount=0;jcount<Width;jcount++){

VideoData_g[icount][jcount][k]=fis.read();


}

}

for( icount=0;icount<Height;icount++){

for( jcount=0;jcount<Width;jcount++){

VideoData_b[icount][jcount][k]=fis.read();

}
}
}


b)
for(int k=0;k<1800;k++)
{
for( icount=0;icount<Height;icount++){

for( jcount=0;jcount<Width;jcount++){

VideoData_r[icount][jcount][k]=fis.read();
VideoData_g[icount][jcount] [k]=fis.read();
VideoData_b[icount][jcount][k]=fis.read();

}

}
}
c) hiçbiri

 
Bildiğim kadarıyla FileInputStream "raw" dosyalardan okumak için kullanılıyor. Açmak istediğin videonun dosya yapısını ve sıkıştırılmışsa (encoded) sıkıştırmasını çözmeden içindeki piksel bilgilerine ulaşamazsın diye düşünüyorum. (emin değilim çünkü pure java altında bunu kullanan kod hiç yazmadım)

Bu gibi işler için processing kullanmanı şiddetle tavsiye edebilirim. (www.processing.org) Java üzerinde çalıştığı için yazdığın kod tamamen java kodu, ama kendine has güzel bir idesi ve multimedya işleri için oldukça kapsamlı kütüphaneleri, örnek kodları falan var. Java ile multimedia işleri yapmak istiyorsan oldukça işine yarayacaktır.
  • kurukafa  (03.12.08 19:11:53 ~ 19:12:17) 
ya okuyor, bir takım değerler alıyorum ama hangi pixelin nesi olduğunu bilmiyorum.


  • leylak sarabi  (03.12.08 19:15:58) 
hmm okuyordur muhakkak ama dosyanın kendisini okuyordur, anlatmak istediği şeyi değil? yani dosyayı byte byte okuyorsun fakat rgb değerlerini alman için dosya "raw" değil ise önce decode etmen gerekiyor diye düşünüyorum. mesela bir bmp dosyasında header'ı atladıktan sonra piksel bilgilerine ulaşabilirsin, ama jpg dosyasında ulaşamazsın önce içindeki veriyi decode etmen gerekir, falan. Demin fileinputstream'ın dökümentasyonuna baktım:

"A FileInputStream obtains input bytes from a file in a file system. FileInputStream is meant for reading streams of raw bytes such as image data. "

Diyor. Okumak istediğin dosyanın formatını tanıyan ve onu decode eden bir interface den çekebilirsin frame bilgilerini, ve o framelerin içinde de piksellere ulaşabilirsin. Mesela processing'deki Movie sınıfı bu işi halleder.
  • kurukafa  (03.12.08 19:20:53) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler basond, compumaster, fraise, kibritsuyu, rakicandir
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.