Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: Mucit23 - 13 Şubat 2018, 22:17:53

Başlık: STM32 SD Video Player
Gönderen: Mucit23 - 13 Şubat 2018, 22:17:53
Temel olarak bir video player yapmam gerekiyor. Bunun için fikir almak istedim. STM32 ve SD karttan FatFS ile okuyacağım video datalarını LCD de görüntülemem gerekiyor.

Daha önce STM32F4 ve TFT LCD ile kamera uygulamalarım için bir kart yapmıştım. Hazır çalışan bir LCD li donanım var. Ona SD kart ekleyerek Test düzeneğimi hazır hale getirebilirim.
FatFS işini hallettiğimi düşünürsek, Video Okuma işi hakkında bilgi verebilecek olan varmı?

Video Formatı önemli değil, İşimi kolaylaştıracak en kolay format hangisi ise o format üzerinde çalışmak istiyorum. Fakat FatFS ile bir video nasıl okunur, RGB pixel datalarına nasıl erişilir bilgim yok.

Bu konu nasıl yapılır anlatabilecek olan varmı? Bir örnek uygulamada işimi fazlasıyla görecek. Basit bir uygulama yapmaya çalışıyorum.
Başlık: Ynt: STM32 SD Video Player
Gönderen: baran123 - 13 Şubat 2018, 23:03:36
Ben sd karttan bmp uzantılı resim okuyup ekrana basmistim 429-Disco
İşin önemli noktası uğraşacagın formatı öğrenmek. Tabi Fatfs işi kolay önemli olan dosyanın formatı.
Basit bir format belirleyip bunu çözmeye çalışarak işe başlayabilirsiniz
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 13 Şubat 2018, 23:25:44
Youtube da birkaç çalışma videosu var. Fakat ayrıntılı  bilgi yok, İncelenebilecek bir kod bulamadım henüz. O çalışmaların birinde mjpeg formatının kullanıldığını gördüm, ama arka planda ne tür çalışmalar var bilmiyorum tabiki.


Sesede gerek yok şimdilik. Sadece görüntü istiyorum.


Öncelikle Format işini belirlemem lazım. Raw olarak sıkıştırılmamış yada codec gerektirmeyen doğrudan RGB datalarına ulaşabileceğim video formatı hangisidir?
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 14 Şubat 2018, 09:49:13
Çok araştırdım ama internette hiçbir örnek bulamadım. Youtubeda birkaç uygulama gördüm ama döküman paylaşımı yok


Bu işi kendim yapmalıyım.  Öyle bir video formatı olmalıki, FatFS de Frame Frame RGB video datalarını okuyabileyim. Bu şekilde RAW olarak okuyabileceğim video formatı hangisidir? Bilgisayarda İstenilen Videoyu bu formata dönüştürüp SD karta atıp o şekilde okumayı hedefliyorum.

Ek olarak birde Ses işi var ama o ikinci planda, Video dosyasının içinde birde ses dataları var, Bunların ayrımı vs birçok soru işareti???
Başlık: Ynt: STM32 SD Video Player
Gönderen: engineer - 14 Şubat 2018, 10:18:10
STMCube ve Keil FW paketleri içinde örnek kodlar var, ordan yola çıkabilirsin. Örneğin;
C:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.11.0\Projects\STM32469I-Discovery\Demonstrations\Modules\videoplayer
C:\Users\KullanıcıAdı\STM32Cube\Repository\STM32Cube_FW_F4_V1.19.0\Projects\STM32469I_EVAL\Demonstrations\STemWin\Gui\Core\videoplayer
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 14 Şubat 2018, 13:51:30
Evet baktım ona, O örnek baya karışık çıkamadım işin içinden, Videoyu nerede okuyor nasıl okuyor anlayamadım.  Fakat .emf diye bir format kullanıyor. Kodları incelerken bu dikkatimi çekti. Fakat bu format hakkında bilgiye erişemiyorum.


İlk önce şunu öğrenmek istiyorum. Raw RGB datalarına en kolay erişebileceğim video formatı hangisidir? Bununla ilgili anahtar kelimeler nelerdir? Raw Video format şeklinde araştırma yapınca google bana çok farklı şeyler öneriyor. 


Bunu belirledikten sonra dosya yapısını anlayıp ona göre SD karttan okuma yapmayı deneyeceğim.
Başlık: Ynt: STM32 SD Video Player
Gönderen: makine_terbiyecisi - 14 Şubat 2018, 14:21:16
SD kart ile dosya okumayı hangi kütüphane ile yapıyorsunuz ?
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 14 Şubat 2018, 14:39:48
Şurada Tilen'nin örneği var STM32F4 için
https://stm32f4-discovery.net/2014/07/library-21-read-sd-card-fatfs-stm32f4xx-devices/

STM32F4 ile yaparsam bunun üzerine giderim.

Sorumu tekrarlayayım.
Alıntı Yapİlk önce şunu öğrenmek istiyorum. Raw RGB datalarına en kolay erişebileceğim video formatı hangisidir? Bununla ilgili anahtar kelimeler nelerdir? Raw Video format şeklinde araştırma yapınca google bana çok farklı şeyler öneriyor.
Başlık: Ynt: STM32 SD Video Player
Gönderen: controller - 14 Şubat 2018, 14:40:12
Ses zorunlu değil ise en kolayı gif formatıdır sanırım.
Başlık: Ynt: STM32 SD Video Player
Gönderen: baran123 - 14 Şubat 2018, 19:20:03
Bence ilk olarak bildiğin formatlara bir bak (mp4 vs)
Sana yapısı en basit gelen ve MCU ile minimum işlem gücü kullanarak oynatacağın formatı bulup bunu çözmeye çalış.
Dosya formatlarının yapılarına bakarak buna başlayabilirsin.
Şu site yapıları oldukça güzel resmetmiş gibi duruyor.
http://www.file-recovery.com/mp4-signature-format.htm
Mesela ben JPEG gösterecektim fakat MCU ile iş yükü olacak diye BMP seçtim daha basit bir yapısı vardı.
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 14 Şubat 2018, 23:26:35
Birde Mjpeg var. Movie Jpeg diye geçiyor. Birkaç kişi bu format ile birşeyler yapmış. Ama Ayrıntı yok

Şu arkadaşın yaptığı uygulama baya iyi. STM32F103 ile yapmış

https://www.youtube.com/watch?v=7-NHFz5MuoQ

Aklımdaki Temel Sorular

1-) SD karttan belirli bir boyutta veri okuduk diyelim. Video Datalarının nereden başladığını nerden öğreneceğim?
2-) Ses Datalarını nasıl ayırt edeceğim?

MP4 formatı bildiğim kadarıyla sıkıştırılmış bir format, Video datalarını düzgün bir şekilde okusam birde codec gerekecek sanırım. Bana Gif Mantıklı geldi. Fakat Gif'i okumak içinde gif dosya formatının yapısını bilmek gerekecek. Buna bakıyorum




Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 14 Şubat 2018, 23:32:06
Birde aklıma şu geldi.


Video dosyasını bir şekilde yapısını bildiğim bir formata dönüştürsem, Örneğin .bin dosyasına Sonra bu bin dosyasını SD karttan normal FatFS rutinlerine göre okusam hızlı bir şekilde nasıl olur?
Başlık: Ynt: STM32 SD Video Player
Gönderen: RaMu - 15 Şubat 2018, 00:28:18
İlk aklıma takılan SPI modda SD kart okuma hızı
video oynatma için yeterli olacak mı sorusu oldu,
videodada yazmış, 00.25 de,
"Main bootleneck is limited
SD card transfer speed via SPI"
Yanlış hatırlamıyorsam
SPI modda kartına göre 8-24 MHz
arası bir Clock ile SD Kart haberleşebiliyor,
buda saniyede maksimum 1-3 MegaByte veri transferi demek.


"01_ Physical Layer Simplified Specification part1_410"
4.13.1.4 kısmında yazmış,
SPI modda Class 0 kart gibi düşünmek lazımmış,
grafiklere göre maksimum 2 Megabayt/saniye okuma hızı.








Başlık: Ynt: STM32 SD Video Player
Gönderen: baran123 - 15 Şubat 2018, 01:43:07
.bin yapsanda olur.
Fakat karta direk video at çalıştır olmaz her seferinde dönüştüreceksin.
Kullanıcı yapmayacaksa sorun yok aslında daha basite indirgemiş olursun.
Hatta kendi formatını bile basitçe yaparsın.
https://en.wikipedi0.org/wiki/Video_file_format
Burada bazı formatları ses ve görüntü için hangi çözücüleri gerektirdiği gözüküyor.
Örneğin GIF için gerek yokmuş.


Birde dikkatimi çekti .yuv uzantısı var.
Raw format diyor.
Ama kendine özgü bir yapısı var.
https://en.wikipedi0.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12_or_YV12.29
Şurada yuv'un RGB'ye dönüşümü gösteriliyor.
En altta dönüşümü yapan bir C++ kodu var

Ekleme : SDIO kullanacaksan hız daha iyi olur.
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 15 Şubat 2018, 10:04:49
Amaç Video Görüntülemek. Bu yüzden yöntem farketmiyor.

Benim aklıma birde şu geldi. USB Hid ile bağlanacağım bilgisayardan görüntüleri almak. Bunun için C# da ufak bir yazılım yazmam gerekecek ama kolay. Video Çözünürlüğüm 320x240

STM32'nin USB Hid kütüphanesinde Tek seferde kaç byte veri gönderilebilir? Yani USB Hid Report Max size nedir? Çok eskilerden Tek bir paketin boyutu Max 64 Byte şeklinde kalmış ama bu veri güncel kütüphanelerde geçerlimi anlayamadım. Eğer USB hid hızım yeterli seviyede olursa bu şekilde bir yöntem denenebilir.

İkinci bir yöntem ise Videoyu Kare Kare BMP dosyalarına çevirip o şekilde sırayla resim basmak. Ama bu şekilde de her seferinde dosya aç, resim datalarını oku, dosyayı kapat gibi işlemler yapılacağında işler yavaşlayacak.

Gif en başından beri düşündüğüm format. Ama şunu anlamıyorum. Hangi format olursa olsun geçerli bu. Bunu anlarsam eğer video okuma rutinlerini kendim yazacağım.

Diyelimki FatFS ile .gif uzantılı bir dosya açtım. Bu dosyadan f_read ile bir bölüm okudum. Okuduğum verinin yapısını nasıl anlayacağım? Bu iş bir türlü aklıma yatmıyor. avi, mov veya mp4 bunun için kullanılabilir. ama dediğim gibi f_Read ile okuduğum zaman okuduğum verinin ne olduğunu nasıl anlayacağım? Bu konuyu anlasam biraz adım atabileceğim.

 
Başlık: Ynt: STM32 SD Video Player
Gönderen: MC_Skywalker - 15 Şubat 2018, 11:44:43
GIF için şu doc işine yaraya bilir  https://www.w3.org/Graphics/GIF/spec-gif87.txt
Başlık: Ynt: STM32 SD Video Player
Gönderen: RaMu - 15 Şubat 2018, 12:32:55
HIZ = Genişlik * Yükseklik * Yenileme Hızı * Renk Derinliği
HIZ = 320 * 240 * 30 * 1BAYT(desek)
HIZ = 2304000 = 2,3 Megabayt/saniye
10 dk lık video 1 Gigabyte dan fazla yer tutacak.
Mutlaka codec li bir sistem lazım gibi geliyor bana.


Yinede 8 bit MCU ile yapılmış örnekleri bile var,
senin düşündüğün yöntemle yapmış:
Atmega>  https://hackaday.com/2012/06/25/playing-video-on-an-8-bit-microcontroller/ (https://hackaday.com/2012/06/25/playing-video-on-an-8-bit-microcontroller/)


Buda başka bir örneği:
Stellaris> https://hackaday.com/2013/04/27/video-player-built-from-stellaris-launchpad/ (https://hackaday.com/2013/04/27/video-player-built-from-stellaris-launchpad/)
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 15 Şubat 2018, 22:06:13
İlk sayfada eklediğim videodaki uygulamayı yapan arkadaşa birkaç soru sorma fırsatı buldum. O arkadaş Videoyu RGB565 Raw olarak bin dosyasına dönüştürüp o dosyası SD karttan okumuş. Anladığım kadarıyla böyle

Video dosyalarını dönüştürmek için ise ffmpeg diye bir yazılım kullanmış. Biraz baktım ubuntuda çalışıyor sanırım bir arayüzü yok dosyaları indirdim sadece kodlardan oluşuyor.
https://www.ffmpeg.org/download.html

Bu program ile Videoyu Raw RGB565 formatına dönüştürüp nasıl .bin dosyasına çevirmiş anlamadım.  Bunu yaparsam ve bin dosyasının header yapısını öğrenirsem fatfs ile rahatça okurum diye düşünüyorum.
Mesela burada BMP dosyasının Header yapısını vermiş.
http://www.fastgraph.com/help/bmp_header_format.html
Birkaç tane Fotoğraf görüntüleyici yazılım gördüm onlarda bu header'e göre okuma yapmış.

Bin dosyasında bu header nasıl bulamadım henüz.
Başlık: Ynt: STM32 SD Video Player
Gönderen: RaMu - 15 Şubat 2018, 22:14:38
Şurada dosya formatlarının posterleri var
elinin altında faydası olur:
https://hackaday.com/2017/04/07/file-format-posters/
https://github.com/corkami/pics/tree/master/binary
örnek:
(https://raw.githubusercontent.com/corkami/pics/master/binary/BMP.png)
Başlık: Ynt: STM32 SD Video Player
Gönderen: OptimusPrime - 15 Şubat 2018, 23:47:00
ffmpeg acik kaynak kodlu video isleri yapan bir arkadas. istedigin programi sen yazmalisin. dosya acma, video isleme, oynatma ve kaydetme ffmpeg ile oldukca kolay. video for linux de isini gorebilir.

arm in kendi basina codec cevirmesi oldukca zaman alir donanimsal yardimcilari olmasi lazim. hele lcd yi de suren bir donanim varsa dma ile tasi birak, arm icin isleri baya hafifletir. bunun disinda raw video yu frame frame bastirmak zaten oldukca genis bir band genisligi ister. codec cozemeyeceksen biraz sagdan soldan kirpmak gerekir. mesela cozunurlukten, renklerden, yenileme hizindan gibi. bir arkadas yuv demis bunun kullanabilirsin. cok eski bir formattir. tarihi tuptu tv lere dayanir. ben biraz aciklamaya calismistim. asagidaki linkten ulasabilirsin bilgilere

https://electronicsfreelancer.wordpress.com/2017/08/28/video-4-linux-2-v4l2-bolum-1-fotograf-cekmek/

yuv420 bence uygun. RGB ye gecincede 565 ile devam edebilirsin. tabi her turlu video dosyasini bir sekilde senin formatinda sd ye kaydetmen gerekiyor.
Başlık: Ynt: STM32 SD Video Player
Gönderen: Mucit23 - 16 Şubat 2018, 09:28:10
Bir videoyu ffmpeg dışında nasıl bin'e çeviririm? Her ne kadar doğru düzgün bir örnek bulamasamda birçok arkadaş videoyu istediği özelliklerde .bin dosyasına çevirip okumuş. Bende bunun üzerinde çalışmak istiyorum.


Windowsta çalışan ve Videoları .bin formatına çevirebileceğim bir uygulama arıyorum.
Başlık: Ynt: STM32 SD Video Player
Gönderen: OptimusPrime - 16 Şubat 2018, 17:21:22
ozel bir uygulama bilmiyorum ama avi sikistirilmamis bir format buna cevirirsen kare kare okursun. matlab de 2-3 satir kod yazsan buda videoyu ham dataya cevirir.