如何改善咖啡壶直播的正常运行时间?

时间:2017-04-26 14:20:15

标签: bash nginx ffmpeg rtmp

项目背景:

像大多数软件开发人员一样,我依赖咖啡来让我继续运营,我的同事也是如此。我有一个旧的iPhone坐着,所以我决定向first webcam致敬并直播我的办公室咖啡壶。

该流已在我公司内受欢迎,所以我想确保它能够尽可能少地保持在线状态。截至目前,它偶尔会下降,我必须手动启动并再次运行。

我的设置:

我在数字海洋服务器上设置了nginx(我的nginx.conf如下所示),并为我的iPhone下载了一个rtmp流媒体应用程序。

手机设置为流式传输到example.com/live/stream,然后我使用ffmpeg命令获取该流,剥离音频(直播是公共的,我不希望同事觉得他们必须是小心他们说的话),然后在rtmp://example.com/live/coffeeexample.com/hls/coffee.m3u8上访问它。

由于我对ffmpeg不太熟悉,我不得不四处寻找合适的命令来剥离音频的咖啡流,我发现了这个:
ffmpeg -i rtmp://localhost/live/stream -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv -an rtmp://localhost/live/coffee

基本上我对此命令的所有了解都是输入流来自localhost/live/stream,它使用-an剥离音频,然后输出到rtmp://localhost/live/coffee

我认为ffmpeg -i rtmp://localhost/live/stream -an rtmp://localhost/live/coffee会产生相同的效果,但是我发现命令的页面正在处理ffmpeg和nginx,所以我认为额外的参数很有用。

我用这个命令注意到它会出错,将实时流关闭。我写了一个小的bash脚本,当它停止时重新运行命令,但我不认为这是最好的解决方案。

这是bash脚本:

while true;
do
        ffmpeg -i rtmp://localhost/live/stream -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv -an rtmp://localhost/live/coffee
        echo 'Something went wrong. Retrying...'
        sleep 1
done

我很好奇两件事:

  1. 从rtmp流中删除音频的最佳方法是什么?
  2. nginx的正确配置是什么,以确保我的rtmp流能够保持尽可能长的时间?
  3. 由于我对nginx,ffmpeg和rtmp流媒体任何帮助都有接近0的经验,或者提示将不胜感激。

    这是我的nginx.conf文件:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        sendfile        on;
    
        keepalive_timeout  65;
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            location /stat {
                    rtmp_stat all;
                    rtmp_stat_stylesheet stat.xsl;
                    allow 127.0.0.1;
            }
            location /stat.xsl {
                    root html;
            }
            location /hls {
                    root /tmp;
                    add_header Cache-Control no-cache;
            }
            location /dash {
                    root /tmp;
                    add_header Cache-Control no-cache;
                    add_header Access-Control-Allow-Origin *;
            }
        }
    }
    
    rtmp {
    
        server {
    
            listen 1935;
            chunk_size 4000;
    
            application live {
                live on;
    
                hls on;
                hls_path /tmp/hls;
    
                dash on;
                dash_path /tmp/dash;
            }
        }
    }
    

    编辑:
    我也遇到了同样的问题:https://trac.ffmpeg.org/ticket/4401

0 个答案:

没有答案