nginx-rtmp-module을 통해 avconv 스트림을 rtmp로 변환-html5 파일 / 스트림으로 변환


1

처음에는 짧게 유지합니다.

nginx 구성을 통해 avconv와 함께 rtmp를 통해 스트리밍합니다. 스트림을 웹 사이트로 잡는 것은 내가 아는 한 플래시를 통해서만 가능합니다. 오늘날 스마트 폰 (iPhone / Android / 무엇이든)을 통해 플래시 파일을 재생하는 것은 좋지 않습니다. 내가하고 싶은 일은 그 스트림을 가져 와서 (rtmp로 들어오는) HTML5 재생 가능한 파일 / 스트림으로 변환하는 것입니다. 나는 대시에 대한 가능성에 대해 알고있다. 또는 hls; 그러나 그것은 완벽하게 작동하지 않습니다. (나는 그 빌어 먹을 일을 시작하기 위해 CORS를 켜야하지만 여전히 말더듬입니다)

내 설정은 다음과 같습니다.

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;
    } } }

그 주석 처리 된 줄은 출력 파일을 생성하고 있으며 시간이 지남에 따라 증가하고 있습니다. 일부 구성에서는 문제가 없지만 연중 무휴로 진행되는 스트림에서는 실제로 좋은 해결책이 아닙니다.

누구나 내 문제를 해결할 수있는 현명한 아이디어 나 힌트를 얻었습니다.-rtmp 스트림을 가져 와서 캐시 된 하드 드라이브로 안전하지 않은 HTML5 재생 가능 파일로 변환하십시오.

답변:


0

개인적으로 Icecast 서버를 사용하고 avconv에서 피드합니다. 그러나 다시 저는 Icecast 관리자로서 편견이 있습니다.

Icecast는 메모리에 작은 (구성 가능한) 버퍼 만 유지하고 기본적으로 어떤 파일에도 쓰지 않기 때문에 증가하는 파일 문제를 해결합니다. 또한 키 프레임 간격을 상당히 짧게 유지해야합니다. 그러면 브라우저는 초기 데이터에서 가장 가까운 키 프레임에 고정하는 데 문제가 없어야합니다.

또한 h.264가 아닌 WebM을 사용하지만 비 독점 코덱을 선호합니다. WebM의 경우 키 프레임 비율을 1 : 10-1 : 15 미만으로 유지합니다.

즉, HLS 또는 DASH가 대안으로 사용될 수 있습니다. Avconv에는 일종의 HLS 출력 모드가 있지만 오래된 청크를 정리하려면 추가 스크립트가 필요할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.