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.