Ant Media Server ile farklı yayın akışı yöntemleri kullanılabilir. Gelen yayınları kabul edip onları istenen formatlarda encoding/decoding işlemleri yapıp yayın ürebildiği gibi, dış kaynaklı canlı yayınlar ı da çekebilir. Örneğin canlı TV yayınları, IP Camera yayınları ya da diğer türde yayınlar (RTSP, HLS, TS, FLV vb.). Yayın çekme projesinin ilk aşaması olarak IP kameralardan yayın çekme yeteneği eklenmiş ve bununla ilgili blog yayınlamıs idi. Şimdi ise Ant Media Server sadece IP kamera yayınlarını değil diğer formda yayınları da çekebilme özelliğine sahip.
Yönetim paneli kullanarak nasıl yayın çekileceği ilgili blogda detaylı bir şekilde anlatıldığı için bu yazımızda geliştiricilerin bu özelliği nasıl kullanacağı üzerinde duracağız
Şimdi bunu nasıl yapacağımıza bakalım;
Temel olarak bu işlemleri gerçekleştiren ve yöneten 2 farklı sınıf yer almakta. Bunlar;
a) StreamFetcher.java : startStream, stopStream, prepare gibi metodlar içeren işlemleri yapan sınıf.
b) StremFetcherManager.java: checkStreamFetchersStatus, restartStreamFetchers, setRestartStreamAutomatically, scheduleStreamFetcherJob vb. yönetici metodları içeren sınıf.
1. StreamFetcherManager’ı Başlat
/* Constructor */ public StreamFetcherManager(ISchedulingService schedulingService, IDataStore datastore,IScope scope) { this.schedulingService = schedulingService; this.datastore = datastore; this.scope=scope; } streamFetcherManager = new StreamFetcherManager(AntMediaApplicationAdapter.this, dataStore,app);
2.Ayarları Tanımla
streamFetcherManager.setRestartStreamFetcherPeriod(appSettings.getRestartStreamFetcherPeriod()); streamFetcherManager.setStreamCheckerInterval("seconds"));
Geliştirici ayarlar dosyasında “settings.streamFetcherRestartPeriod” olarak tanımlanan restart parametresini setRestartStreamFetcherPeriod() metodu kullanarak tanımlayabilir. Eğer bu parametre 0 olarak ayarlanmış ise, yayın çekme işlemi hiç yeniden başlamyacak diğer bir deyişle çekilen yayın hiç kayıt edilmeyecektir. Örnek olarak bu parametre 1800 olarak ayarlandığında her 30 dakikada bir çekilen yayın kayıt edilecektir. Tabiki bu işlemin yapılabilmesi için yönetim panelindeki ilgili uygulama ayar sayfasındaki “Enable MP4 Recording” ayarının etkinleştiğinden ya da ilgili ayar dosyasındaki “settings.mp4MuxingEnabled” parametresinin true olduğundan emin olunuz.
StreamFetcherManager içerisinde tanımlanan diğer parametre ise StreamCheckerInterval dir. Burada tanımlanan zaman dilimleri sonunda çekilen tüm yayınların sağlıklı bir şekilde çekilip çekilmediği kontrol edilir ve gerekirse yeniden başlatılır.Varsayılan değer 10 saniye olup bu kontrol işlemleri checkStreamFetchersStatus() metodu içerisinde gerçekletirilir.
3. Yayını Başlat
streamFetcherManager.startStreams(streams);
Burada parametre olarak verilen “streams”(List<Broadcast> streams) , çekilmesi istenen yayınlardan oluşan bir listedir.
4. Özelleştir
Ayrıca geliştirici, aşağıdaki parametreleri kullaranarak projesinin önceliklerine ve gereksinimlerine göre yayın çekme işlemini özelleşirebilir.
connection timeout: ( “timeout” olarak ms cinsinden tanımlanmıştır) Yayın çekmenin ilk aşamasında kaynağa bağlanma sürecinde beklenen timeout süresini tanımlar..
packet receiving timeout: (“PACKET_RECEIVED_INTERVAL_TIMEOUT” olarak ms cinsinden tanımlanmıştır) Yayınlar çekilirken son çekilen paket ile şimdiki zamanın arasında olması beklenen maksimum timeout süresini tanımlar.
restart after disconnection: (“restartStream” olarak boolean cinsinden tanımlanmıştır) Bu değer true olarak düzenlendiği taktirde, herhangi bir kopma durumunda beklemeden anında yeniden bağlanma süreci başlatılır.
buffer time: (“bufferTime”olarak ms cinsinden tanımlanmıştır) Stream Fetcher yayın çekme işlemine başladığında, daha düzgün bir izleme sağlamak amacı ama bufferlama işleme yapar, bunun ne kadar sürede olacağını tanımlar.
5. Kullan
Öncelikle yönetim paneline giriş yapıyoruz. Daha sonra “New Live Stream” – > “Stream Source” yolunu takip ederek yayın adını ve URL’ini giriyoruz
Daha sonra Ant Media Server yayını çekmeye başlar.
Çekilen yayını izleyebilirsiniz.
Umarız bu blog yazısı size yardımcı olmuştur. Her türlü görüş, öneri ve düşünceniz için bizlere contact[at]antmedia.io adresinden yada sitede bulunan iletişim formundan ulabilirsiniz 🙂