red5를 사용하여 ffmpeg 및 rtmp를 통해 mp4 비디오 스트리밍

red5를 사용하여 ffmpeg 및 rtmp를 통해 mp4 비디오 스트리밍

FFMPEG를 통해 mp4 비디오 파일을 스트리밍하고 RTMP 프로토콜을 사용하여 출력을 RED5로 스트리밍해야 합니다. 이를 위해 다음 명령을 사용하고 있습니다. 인코딩은 완벽하게 되는데 jwplayer로 임베딩하면 재생이 안되네요.

ffmpeg -i http://xxxxxx.com/adv.mp4 -acodec copy -vcodec copy -f flv rtmp://xxxxxxx/live/stream1

다음과 같은 결과가 제공됩니다.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://xxxxxxxxxxxx.com/adv.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2013-10-14 11:57:33
    encoder         : HandBrake 0.9.9 2013052900
  Duration: 00:04:50.99, start: 0.000000, bitrate: 912 kb/s
    Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 1920x360 [PAR 847:1920 DAR 847:360], 795 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Metadata:
      creation_time   : 2013-10-14 11:57:33
    Stream #0.1(und): Audio: aac, 11025 Hz, stereo, s16, 116 kb/s
    Metadata:
      creation_time   : 2013-10-14 11:57:33
Output #0, flv, to 'rtmp://xxxxxxxxx/live/stream1':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2013-10-14 11:57:33
    encoder         : Lavf53.21.1
    Stream #0.0(und): Video: libx264, yuv420p, 1920x360 [PAR 847:1920 DAR 847:360], q=2-31, 795 kb/s, 1k tbn, 25 tbc
    Metadata:
      creation_time   : 2013-10-14 11:57:33
    Stream #0.1(und): Audio: libvo_aacenc, 11025 Hz, stereo, 116 kb/s
    Metadata:
      creation_time   : 2013-10-14 11:57:33
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 7266 fps=563 q=-1.0 Lsize=   32544kB time=290.64 bitrate= 917.3kbits/s    
video:28220kB audio:4130kB global headers:0kB muxing overhead 0.601155%

그런 다음 RTMP URL을 내 jwplayer에 삽입합니다.

<script type='text/javascript'>
            jwplayer('mediaspace').setup({
            'flashplayer': 'http://xxxxxxxxxx/tools/js/jwplayer.flash.swf',
            'stretching': 'exactfit',
            'type': 'rtmp',     
            'file':'stream1',
            'autostart': 'true',            
            'controlbar': 'bottom',
            'streamer':'rtmp://xxxxxxxx/live/', 

            'width': '889',
            'height': '410',

            });
            </script>

이 작업을 완료한 후 내 플레이어에 다음 오류가 표시됩니다.

Error loading stream
Could not connect to the server

이 문제를 어떻게 해결하고 라이브 스트리밍처럼 스트리밍할 수 있나요...???

답변1

이 명령을 시도해 보세요. 이것은 비디오 파일을 라이브 스트림으로 스트리밍하는 데 일반적으로 사용하는 명령입니다.

ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://서버/live/streamName

-re 옵션은 FFmpeg에게 가능한 한 빠른 표준 방식이 아닌 실시간으로 입력 파일을 읽도록 지시합니다. -c copy(별칭 -acodec copy -vcodec copy)를 사용하면 FFmpeg에게 트랜스코딩 없이 입력 파일의 본질을 복사한 다음 이를 FLV 컨테이너(-f flv)에 패키징하고 최종 비트스트림을 rtmp로 보내도록 지시합니다. 대상(rtmp://server/live/streamName).

JWplayer 소스는 다음과 같습니다

<html>
<head><title>TEST PLAYER</title>
</head>
<body>
<script type="text/javascript" src="jwplayer.js"></script>
<div id="myElement">Loading the player...</div>
<script type="text/javascript">
jwplayer("myElement").setup({
file: "rtmp://[ip-address]/live/streamname",
    });
</script>
</body>
</html>

jwplayer.js 및 player.swf가 올바른 위치에 있는지 확인하세요.

관련 정보