de Kayıt ve Akış Bu kadar ben ile karşı karşıya geldi en zorlu işlevleri birini çözmek için bütün girişimleri bir sunum olduğu gibi gerçek bir soru değildir.Android: Aynı anda
Gerçek zamanlı videoları Wowza Server akışına göndermek için libstreaming kitaplığını kullanıyorum ve SD kartta aynı anda kaydetmem gerekiyor. Topluluğumdan yeni ideiler toplamak için tüm girişimlerimin altında sunuyorum. Bir mp4 dosya
Geliştirme
Akışı libstreaming dan
Kopya bayt Biz mp4 dosyasına gönderilen tüm bayt kopyalamak için kütüphane libstreaming bir durdurma yarattı. Libstreaming, baytları bir LocalSocket aracılığıyla Wowza sunucusuna gönderir. MediaRecorder'ın, kameraya ve cihazın mikrofonuna erişmesi ve çıktı dosyasının LocalSocket'in giriş akışı olarak ayarlanması. Yaptığımız şey, bu giriş akışı etrafında InputStream'den uzanan bir sarıcı oluşturmak ve içinde bir Dosya çıkış akışı oluşturmak. Yani, her zaman libstreaming LocaSocket giriş akışı üzerinden bir okuma yürütür, geçerli MP4 dosyasını oluşturmaya çalışan, çıktı akımına tüm verileri kopyalayın.
dosyayı okuyup çalıştık engeli, bu bozuk. MP4 dosyasından eksik meta bilgilerinin olduğunu fark ettik. Özellikle moov atomu. Bu başlığın gönderilmesi için zaman vermek amacıyla akışın kapanmasını ertelemeye çalıştık (bu hala bir tahmindi) ama işe yaramadı. Bu verinin tutarlılığını test etmek için, başlık da dahil olmak üzere videoyu kurtarmaya çalışmak için ücretli bir yazılım kullandık. Oynatılabilir hale geldi, ama çoğunlukla yeşil ekran oldu. Böylece bu güvenilir bir çözüm haline geldi. Ayrıca, serbest açık kaynak kodlu bir komut satırı programı olan "untrunc" kullanmayı denedik ve hiçbir moov atomu olmadığından kurtarma işlemini bile başaramadık. derlenmiş
Kullanım ffmpeg Kameraya
Geliştirme
FFMPEG Android uygulamaları içinde kullanmak için bir java arayüz ile bir gradle eklenti vardır erişmek için android. Kameraya komut satırından erişebileceğimizi düşündük (muhtemelen "/ dev/video0" daki gibi) ve medya sunucusuna gönderdik.
engeli Biz kameraya erişmeye çalışırken hata "İzin engellendi" var
. Bu çözüm, cihaza erişim sağlamak için cihazı rootlamak olabilir, ancak telefonları garantilerini kaybeder ve onları tutabilir. derlenmiş
Kullanım ffmpeg Biz FFMPEG bir mp4 dosya
MediaRecorder
aracılığıyla telefonun içinde kaydedilmektedir engeli akışı yapmaya çalıştı MediaRecorderGeliştirme
ile kombine Android'e
FFMPEG henüz kayıtla bitmemiş MP4 dosyalarını aktaramaz.
Kullanım ffmpeg
Geliştirme libstreaming ile android derlenmiş
Libstreaming uygulaması ve sunucu arasındaki bağlantı olarak LocalServerSocket kullanır, bu yüzden biz kopyalamak için LocalServerSocket yerel adrese bağlı ffmpeg kullanabilirsiniz düşündüm SD kartın içinde doğrudan yerel bir dosyaya akış. Akış başladıktan hemen sonra, verileri bir dosyaya kaydetmeye başlamak için ffmpeg komutunu da çalıştırdık. Ffmpeg kullanarak, bir MP4 dosyasını uygun şekilde oluşturacağımıza inandık, bu da moov atom başlığının dahil edildiği anlamına geliyor.
engeli
oluşturulan "adresi" telefonun içinde yerel bir adres olarak, komut satırı üzerinden okunabilir değil. Yani kopya mümkün değil.
Kullanım OpenCV
Geliştirme
OpenCV bilgisayar vizyonu deneyler ve uygulamalar için yapıtaşlarını sağlayan bir açık kaynak, çapraz platform kütüphanesidir. Görüntü verilerini yakalamak, işlemek ve sunmak için yüksek seviyeli arayüzler sunar. Cihaz kamerasına bağlanmak için kendi API'leri vardır, böylece aynı anda akış ve kayıt için gerekli işlevselliklere sahip olup olmadığına bakmaya başladık.
engeli
Biz kütüphane gerçekten yapmak tanımlı değil öğrendim, ama görüntü matematiksel manipülasyon gibi daha. Biz libstreaming kullanmak için bile öneri aldık (zaten yapıyoruz).
Kullanım Kickflip SDK
Geliştirme
Kickflip android ve IOS gelişimi için kendi SDK sağlayan bir medya yayın hizmetidir. Ayrıca yeni bir protokol olan RTMP yerine HLS kullanır.
engeli
Onların SDK bizim app kullanılabilirliğini kırarak, cihazın ekranı kaplar kamera görüntüsü bir Aktivite oluşturmak gerektirir.
Kullanım Adobe Air
Biz uygulamasının diğer geliştiricilerin danışmanlık başladı
Gelişimi, zaten sunuculara o dere Play Store'da zaten mevcut bu. Bu geliştiricileri ile irtibatta alınıyor
engeli
, onlar bu teknolojiyi kullanarak aynı anda kayıt ve akarsu etmek mümkün olmazdı güvence verdi. Dahası, tüm uygulamayı Adobe Air kullanarak sıfırdan yeniden yapmak zorundayız.
GÜNCELLEME
WebRTC'de
Biz WebRTC this great project aşağıdaki kullanmaya başladı
geliştirilmesi. Sinyalleme sunucusunu NODEJS sunucumuza dahil ettik ve standart el sıkışmalarını soket üzerinden yapmaya başladık. Webrtc üzerinden yerel kayıt ve akış arasında geçiş yapmaktayız.
engeli
WebRTC'de her ağ yapılandırması çalışmaz. Bunun dışında, kamera edinimi tüm yerel koddur, bu da baytları kopyalamayı veya kesmeyi çok daha zorlaştırır.
cine.io içinde Kickflip benzer görünüyor inşa etti. Ancak yine de test edilmiş. – sirvon
Bu konuyla ilgili tüm bulgularınızı gönderdiğiniz için teşekkür ederiz. Android uygulamasında yaptığınız aynı şeyi yapmaya çalışıyorum. Deneyimlerinize dayanarak, çoğu yaklaşımın kendi sorunları vardır. Bir videoyu aynı anda akıtıp kaydetmek için bir çözüm buldunuz mu merak ediyordum? Eğer öyleyse, lütfen biraz açıklama veya örnek verebilir misiniz? – shahins
Canlı akışa webRTC'ye geçiş yaptım, ancak henüz aynı anda kaydetmiyor. Bu ek bilgi ile listeyi güncelleyeceğim! –