nginx-rtmp-modülü ile rtmp'ye avconv akışı - html5 dosyasına / stream dönüştürmek


1

Sadece başlangıçta işleri kısa tutuyorum.

Bir nginx yapılandırması ile avconv ile rtmp üzerinden akışı. Bu akışı bir web sitesine yakalamak sadece bildiğim kadarıyla flaşla mümkün. Günümüzde bir akıllı telefonla (iPhone / Android / her neyse) flash dosyalarını oynatmak kötü bir şey. Yapmak istediğim, bu akışı kapmak (rtmp olarak gelen) ve onu bir HTML5 oynatılabilir dosya / akışına dönüştürmek. Kısa çizgi hakkında olasılığını biliyorum; veya hls; ama gerçekten kusursuz çalışmıyor. (Bu lanet şeyi devam ettirmek ve çalıştırmak için CORS'u açmalıyım ama sonra hala kekemelik)

İşte ayarlarım:

avconv:

avconv \
-f video4linux2 -input_format mjpeg -r 10 -s hd720 -i /dev/video0 \
-f video4linux2 -input_format mjpeg -r 10 -s 640x480 -i /dev/video1 \
-vf transpose=cclock -filter_complex  \
"[0:v]scale=1280:-1,setpts=PTS-STARTPTS[bg]; \
[1:v]scale=320:-1,transpose=cclock,setpts=PTS-STARTPTS[fg]; \
[bg][fg]overlay=W-w-10:10[out]" \
-map "[out]" -vprofile baseline -vcodec libx264 -preset fast \
-maxrate 3000k -bufsize 6000k -b 500k \
-f flv rtmp://STREAMURL

nginx.conf:

    rtmp {
    server {
            listen 1935;
            chunk_size 4096;

            application webcam {
                    live on;
                    record off;

                    allow publish a.b.c.d;
                    deny publish all;

                    allow play all;

                    #exec /usr/bin/avconv -loglevel verbose -i rtmp://STREAMURL -vcodec libx264 -vprofile baseline /tmp/out.mp4;
    } } }

Bu yorum satır, zamanla büyüyen bir çıktı dosyası üretiyor. Bazı konfigürasyonlarda bu tamam olabilir, ancak devam eden 24/7 akışta sanırım gerçekten iyi bir çözüm değil.

Herkes akıllıca bir fikre ya da sorunumu nasıl çözebileceğime dair bir ipucu buldu:   - RTMP akışını alma, yalnızca önbelleğe alınmış ve harddrive'a güvenli olmayan HTML5 oynanabilir dosyaya dönüştürün.

Yanıtlar:


0

Şahsen bir Icecast sunucusu kullanırdım ve avconv'dan beslerdim. Ama sonra yine Icecast'in sağlayıcısı olarak önyargılıyım.

Icecast, bellekte yalnızca küçük (yapılandırılabilir) bir arabellek tuttuğu ve varsayılan olarak hiçbir dosyaya yazmadığı için, büyüyen bir dosya sorununuzu giderir. Ayrıca, anahtar kare aralığını oldukça kısa tutmanız gerektiğini unutmayın. Ardından tarayıcıların ilk verilerdeki en yakın ana kareye kilitlenmesinde sorun olmamalıdır.

Ayrıca H.264'ü değil WebM'i kullanırdım, fakat bu tescilli olmayan kodlayıcıları tercih ederim. WebM durumunda, anahtar kare oranını 1: 10-1: 15'in altında tutardım.

Bununla birlikte, HLS veya DASH keşfedilecek alternatifler olabilir. Avconv bir tür HLS çıktı moduna sahiptir, ancak eski moda parçalarını temizlemek için muhtemelen bazı ek komut dosyalarına ihtiyacı vardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.