gpt4 book ai didi

nginx - 尝试通过 NGINX 将 RTSP 流式传输到 RTMP(实时)时出现问题

转载 作者:行者123 更新时间:2023-12-04 22:49:29 26 4
gpt4 key购买 nike

我想要通过 nginx 进行实时 RTMP 流。我使用本教程在公共(public) ip (linux - CentOS) 上设置此服务器:https://notehub.org/rcfdu .

我的目标是:RTSP 源 -> 转码为 RTMP -> 在 nginx 上接收(实时 ip),

然后,我想通过服务器接收这个流;就像是:

nginx -> ffplay。

在传输端,我有 ffmpeg 应用程序,在接收端,我有 ffplay 应用程序。

我已经设置了我能想到的所有东西,并且我可以看到它设置正确(显然)。但是,当我尝试使用类似的命令进行流式传输时:

ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip address>:1935/live/

我收到很多消息(一切看起来都很好):
ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip address>:1935/live/
ffmpeg version N-80386-g5f5a97d Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 38.100 / 57. 38.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.101 / 6. 46.101
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[rtsp @ 03087ca0] UDP timeout, retrying with TCP
Input #0, rtsp, from 'rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov':
Metadata:
title : filename.mov
Duration: 00:09:56.46, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
Stream #0:1: Video: h264 (Constrained Baseline), yuv420p, 240x160, 24 fps, 4
8 tbr, 90k tbn, 48 tbc
[mpegts @ 04d033a0] Using AVStream.codec to pass codec parameters to muxers is d
eprecated, use AVStream.codecpar instead.
Last message repeated 1 times
Output #0, mpegts, to 'rtmp://<live ip address>:1935/live/':
Metadata:
title : filename.mov
encoder : Lavf57.38.100
Stream #0:0: Video: mpeg2video (Main), yuv420p, 240x160, q=2-31, 200 kb/s, 2
4 fps, 90k tbn, 24 tbc
Metadata:
encoder : Lavc57.46.100 mpeg2video
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
Metadata:
encoder : Lavc57.46.100 mp2
Stream mapping:
Stream #0:1 -> #0:0 (h264 (native) -> mpeg2video (native))
Stream #0:0 -> #0:1 (aac (native) -> mp2 (native))
Press [q] to stop, [?] for help
Past duration 0.999992 too large
Last message repeated 4 times
frame= 85 fps=0.0 q=2.9 size= 322kB time=00:00:03.85 bitrate= 684.4kbits/s
frame= 95 fps= 94 q=3.5 size= 366kB time=00:00:04.28 bitrate= 698.9kbits/s
frame= 108 fps= 71 q=3.7 size= 421kB time=00:00:04.79 bitrate= 719.9kbits/s
frame= 122 fps= 61 q=4.1 size= 478kB time=00:00:05.34 bitrate= 733.1kbits/s
frame= 134 fps= 53 q=4.5 size= 527kB time=00:00:05.87 bitrate= 735.8kbits/s
frame= 146 fps= 48 q=5.2 size= 579kB time=00:00:06.35 bitrate= 747.2kbits/s
frame= 159 fps= 45 q=5.5 size= 632kB time=00:00:06.88 bitrate= 751.9kbits/s
frame= 171 fps= 42 q=5.3 size= 677kB time=00:00:07.38 bitrate= 751.5kbits/s
frame= 183 fps= 40 q=5.6 size= 725kB time=00:00:07.91 bitrate= 750.8kbits/s
frame= 193 fps= 38 q=6.3 size= 765kB time=00:00:08.34 bitrate= 750.7kbits/s
frame= 207 fps= 37 q=6.6 size= 820kB time=00:00:08.89 bitrate= 755.2kbits/s
frame= 219 fps= 36 q=6.6 size= 865kB time=00:00:09.40 bitrate= 754.2kbits/s
frame= 231 fps= 35 q=7.2 size= 911kB time=00:00:09.90 bitrate= 753.6kbits/s
frame= 243 fps= 34 q=7.4 size= 959kB time=00:00:10.40 bitrate= 754.6kbits/s
frame= 255 fps= 34 q=6.7 size= 1002kB time=00:00:10.91 bitrate= 752.1kbits/s
frame= 267 fps= 33 q=5.5 size= 1047kB time=00:00:11.41 bitrate= 751.4kbits/s
frame= 279 fps= 33 q=4.6 size= 1088kB time=00:00:11.89 bitrate= 749.1kbits/s
frame= 291 fps= 32 q=6.1 size= 1140kB time=00:00:12.42 bitrate= 751.4kbits/s
frame= 301 fps= 31 q=6.7 size= 1181kB time=00:00:12.85 bitrate= 752.5kbits/s
frame= 314 fps= 31 q=6.6 size= 1231kB time=00:00:13.40 bitrate= 752.1kbits/s
frame= 325 fps= 31 q=7.0 size= 1275kB time=00:00:13.86 bitrate= 753.0kbits/s
frame= 338 fps= 30 q=6.7 size= 1324kB time=00:00:14.36 bitrate= 754.8kbits/s
frame= 349 fps= 30 q=6.5 size= 1368kB time=00:00:14.87 bitrate= 753.5kbits/s
frame= 362 fps= 30 q=6.8 size= 1415kB time=00:00:15.37 bitrate= 753.9kbits/s
frame= 373 fps= 30 q=6.2 size= 1457kB time=00:00:15.88 bitrate= 751.7kbits/s
frame= 387 fps= 30 q=3.8 size= 1506kB time=00:00:16.45 bitrate= 749.7kbits/s
frame= 400 fps= 29 q=4.1 size= 1549kB time=00:00:16.96 bitrate= 748.2kbits/s
frame= 415 fps= 29 q=5.4 size= 1597kB time=00:00:17.56 bitrate= 744.9kbits/s
frame= 427 fps= 29 q=5.2 size= 1639kB time=00:00:18.04 bitrate= 744.1kbits/s
frame= 439 fps= 29 q=4.4 size= 1679kB time=00:00:18.56 bitrate= 740.6kbits/s
frame= 451 fps= 29 q=3.6 size= 1717kB time=00:00:19.07 bitrate= 737.4kbits/s
frame= 464 fps= 28 q=2.6 size= 1761kB time=00:00:19.67 bitrate= 733.2kbits/s
frame= 475 fps= 28 q=7.0 size= 1799kB time=00:00:20.08 bitrate= 734.0kbits/s
frame= 488 fps= 28 q=8.3 size= 1847kB time=00:00:20.70 bitrate= 730.8kbits/s
frame= 502 fps= 28 q=5.9 size= 1895kB time=00:00:21.25 bitrate= 730.2kbits/s
frame= 515 fps= 28 q=3.3 size= 1935kB time=00:00:21.76 bitrate= 728.5kbits/s
frame= 528 fps= 28 q=2.5 size= 1976kB time=00:00:22.31 bitrate= 725.6kbits/s
frame= 540 fps= 28 q=3.4 size= 2017kB time=00:00:22.81 bitrate= 724.2kbits/s
frame= 553 fps= 28 q=6.2 size= 2072kB time=00:00:23.36 bitrate= 726.2kbits/s
frame= 568 fps= 28 q=6.7 size= 2132kB time=00:00:23.94 bitrate= 729.3kbits/s
frame= 580 fps= 28 q=6.8 size= 2174kB time=00:00:24.42 bitrate= 729.3kbits/s
frame= 592 fps= 27 q=6.8 size= 2219kB time=00:00:24.92 bitrate= 729.3kbits/s
frame= 604 fps= 27 q=7.4 size= 2263kB time=00:00:25.43 bitrate= 728.8kbits/s
frame= 615 fps= 27 q=6.1 size= 2305kB time=00:00:25.93 bitrate= 727.9kbits/s
frame= 626 fps= 27 q=7.4 size= 2339kB time=00:00:26.36 bitrate= 726.5kbits/s
frame= 638 fps= 27 q=6.8 size= 2383kB time=00:00:26.89 bitrate= 725.8kbits/s
frame= 651 fps= 27 q=5.8 size= 2436kB time=00:00:27.47 bitrate= 726.5kbits/s
frame= 662 fps= 27 q=7.0 size= 2471kB time=00:00:27.90 bitrate= 725.4kbits/s
frame= 675 fps= 27 q=5.9 size= 2523kB time=00:00:28.40 bitrate= 727.6kbits/s
frame= 679 fps= 26 q=6.8 size= 2534kB time=00:00:28.57 bitrate= 726.5kbits/s
frame= 703 fps= 27 q=8.0 size= 2622kB time=00:00:29.58 bitrate= 726.1kbits/s
frame= 714 fps= 27 q=7.6 size= 2662kB time=00:00:30.08 bitrate= 724.7kbits/s
frame= 729 fps= 27 q=6.5 size= 2712kB time=00:00:30.68 bitrate= 724.0kbits/s
frame= 741 fps= 27 q=7.0 size= 2753kB time=00:00:31.14 bitrate= 724.1kbits/s
frame= 755 fps= 27 q=7.5 size= 2801kB time=00:00:31.76 bitrate= 722.2kbits/s
frame= 767 fps= 26 q=7.2 size= 2842kB time=00:00:32.27 bitrate= 721.5kbits/s
frame= 779 fps= 26 q=6.8 size= 2881kB time=00:00:32.77 bitrate= 720.0kbits/s
frame= 791 fps= 26 q=8.2 size= 2922kB time=00:00:33.30 bitrate= 718.8kbits/s
frame= 803 fps= 26 q=7.0 size= 2961kB time=00:00:33.76 bitrate= 718.4kbits/s
frame= 816 fps= 26 q=6.6 size= 3003kB time=00:00:34.33 bitrate= 716.4kbits/s
frame= 828 fps= 26 q=6.4 size= 3044kB time=00:00:34.84 bitrate= 715.7kbits/s
frame= 840 fps= 26 q=7.5 size= 3084kB time=00:00:35.34 bitrate= 714.7kbits/s
frame= 855 fps= 26 q=5.0 size= 3137kB time=00:00:35.94 bitrate= 714.8kbits/s
frame= 866 fps= 26 q=6.2 size= 3169kB time=00:00:36.40 bitrate= 713.3kbits/s
frame= 880 fps= 26 q=5.9 size= 3219kB time=00:00:36.95 bitrate= 713.6kbits/s
frame= 892 fps= 26 q=6.8 size= 3259kB time=00:00:37.43 bitrate= 713.2kbits/s
frame= 904 fps= 26 q=5.3 size= 3300kB time=00:00:37.96 bitrate= 712.2kbits/s
frame= 916 fps= 26 q=5.5 size= 3338kB time=00:00:38.46 bitrate= 711.0kbits/s
frame= 928 fps= 26 q=5.5 size= 3377kB time=00:00:38.94 bitrate= 710.4kbits/s
frame= 941 fps= 26 q=6.4 size= 3422kB time=00:00:39.52 bitrate= 709.4kbits/s
frame= 953 fps= 26 q=5.4 size= 3460kB time=00:00:40.00 bitrate= 708.6kbits/s
frame= 967 fps= 26 q=5.2 size= 3506kB time=00:00:40.60 bitrate= 707.3kbits/s
frame= 979 fps= 26 q=4.8 size= 3546kB time=00:00:41.12 bitrate= 706.2kbits/s
frame= 985 fps= 26 q=5.2 size= 3563kB time=00:00:41.36 bitrate= 705.6kbits/s
frame= 1008 fps= 26 q=4.8 size= 3639kB time=00:00:42.30 bitrate= 704.6kbits/s
frame= 1022 fps= 26 q=4.3 size= 3684kB time=00:00:42.88 bitrate= 703.7kbits/s
frame= 1034 fps= 26 q=4.5 size= 3723kB time=00:00:43.38 bitrate= 702.9kbits/s
frame= 1046 fps= 26 q=3.8 size= 3763kB time=00:00:43.88 bitrate= 702.5kbits/s
frame= 1056 fps= 26 q=5.3 size= 3800kB time=00:00:44.32 bitrate= 702.3kbits/s
frame= 1069 fps= 26 q=5.5 size= 3842kB time=00:00:44.84 bitrate= 701.8kbits/s
frame= 1081 fps= 26 q=6.3 size= 3883kB time=00:00:45.35 bitrate= 701.3kbits/s
frame= 1093 fps= 26 q=6.3 size= 3925kB time=00:00:45.85 bitrate= 701.1kbits/s
frame= 1105 fps= 26 q=5.3 size= 3964kB time=00:00:46.36 bitrate= 700.5kbits/s
frame= 1117 fps= 26 q=6.7 size= 4006kB time=00:00:46.86 bitrate= 700.3kbits/s
frame= 1129 fps= 26 q=4.5 size= 4046kB time=00:00:47.32 bitrate= 700.4kbits/s
frame= 1141 fps= 26 q=7.1 size= 4089kB time=00:00:47.87 bitrate= 699.8kbits/s
Larger timestamp than 24-bit: 0x310042f0
WriteN, RTMP send error 10054 (133 bytes)
WriteN, RTMP send error 10054 (35 bytes)
WriteN, RTMP send error 10038 (42 bytes)
av_interleaved_write_frame(): Operation not permitted
Error writing trailer of rtmp://<live ip address>:1935/live/: Operation not permitte
dframe= 1143 fps= 25 q=8.1 Lsize= 4109kB time=00:00:47.92 bitrate= 702.5kbits
/s dup=0 drop=5 speed=1.07x
video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
ng overhead: 14.429363%
Conversion failed!

但最后,我得到了这个错误:
WriteN, RTMP send error 10054 (133 bytes)
WriteN, RTMP send error 10054 (35 bytes)
WriteN, RTMP send error 10038 (42 bytes)
av_interleaved_write_frame(): Operation not permitted
Error writing trailer of rtmp://<live ip address>:1935/live/: Operation not permitte
dframe= 1143 fps= 25 q=8.1 Lsize= 4109kB time=00:00:47.92 bitrate= 702.5kbits
/s dup=0 drop=5 speed=1.07x
video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
ng overhead: 14.429363%
Conversion failed!

在接收方(运行 ffplay 的地方),我总是收到此错误:
RTMP_ReadPacket, failed to read RTMP packet headersq=    0B f=0/0
rtmp://<live ip address>:1935/live/: Invalid data found when processing input

详细输出:
ffplay rtmp://<live ip address>:1935/live/
ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 38.100 / 57. 38.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.101 / 6. 46.101
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
RTMP_ReadPacket, failed to read RTMP packet headersq= 0B f=0/0
rtmp://<live ip address>:1935/live/: Invalid data found when processing input

如果我启用 Debug模式,这是接收端日志:
ffplay -loglevel debug rtmp://<live ip address>:1935/live/
ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 38.100 / 57. 38.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.101 / 6. 46.101
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[rtmp @ 0310d800] No default whitelist set 0KB sq= 0B f=0/0
Parsing... : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Parsed protocol: 0
Parsed host : <live ip address>
Parsed app : live
RTMP_Connect1, ... connected, handshaking= 0KB sq= 0B f=0/0
HandShake: Type Answer : 03q= 0KB vq= 0KB sq= 0B f=0/0
HandShake: Server Uptime : 324510454
HandShake: FMS Version : 0.0.0.0
HandShake: Handshaking finished....0KB vq= 0KB sq= 0B f=0/0
RTMP_Connect1, handshaked
RTMP_SendPacket: fd=648, size=174
0000: 03 00 00 00 00 00 ae 14 00 00 00 00 ............
0000: 02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 ...connect.?....
0010: 00 00 00 03 00 03 61 70 70 02 00 04 6c 69 76 65 ......app...live
0020: 00 05 74 63 55 72 6c 02 00 1e 72 74 6d 70 3a 2f ..tcUrl...rtmp:/
0030: 2f 36 34 2e 34 39 2e 32 33 34 2e 32 35 30 3a 31 /<live ip address>:1
0040: 39 33 35 2f 6c 69 76 65 00 04 66 70 61 64 01 00 935/live..fpad..
0050: 00 0c 63 61 70 61 62 69 6c 69 74 69 65 73 00 40 ..capabilities.@
0060: 2e 00 00 00 00 00 00 00 0b 61 75 64 69 6f 43 6f .........audioCo
0070: 64 65 63 73 00 40 a8 ee 00 00 00 00 00 00 0b 76 decs.@.........v
0000: c3 .
0000: 69 64 65 6f 43 6f 64 65 63 73 00 40 6f 80 00 00 ideoCodecs.@o...
0010: 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 .....videoFuncti
0020: 6f 6e 00 3f f0 00 00 00 00 00 00 00 00 09 on.?..........
Invoking connect
RTMP_ReadPacket: fd=648
0000: 02 00 00 00 00 00 04 05 00 00 00 00 ............
0000: 00 4c 4b 40 .LK@
HandleServerBW: server BW = 5000000
RTMP_ReadPacket: fd=648
0000: 02 00 00 00 00 00 05 06 00 00 00 00 ............
0000: 00 4c 4b 40 02 .LK@.
HandleClientBW: client BW = 5000000 2
RTMP_ReadPacket: fd=648
0000: 02 00 00 00 00 00 04 01 00 00 00 00 ............
0000: 00 00 10 00 ....
HandleChangeChunkSize, received: chunk size change to 4096
RTMP_ReadPacket: fd=648
0000: 03 00 00 00 00 00 be 14 00 00 00 00 ............
0000: 02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 ..._result.?....
0010: 00 00 00 03 00 06 66 6d 73 56 65 72 02 00 0d 46 ......fmsVer...F
0020: 4d 53 2f 33 2c 30 2c 31 2c 31 32 33 00 0c 63 61 MS/3,0,1,123..ca
0030: 70 61 62 69 6c 69 74 69 65 73 00 40 3f 00 00 00 pabilities.@?...
0040: 00 00 00 00 00 09 03 00 05 6c 65 76 65 6c 02 00 .........level..
0050: 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 1d .status..code...
0060: 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f NetConnection.Co
0070: 6e 6e 65 63 74 2e 53 75 63 63 65 73 73 00 0b 64 nnect.Success..d
0080: 65 73 63 72 69 70 74 69 6f 6e 02 00 15 43 6f 6e escription...Con
0090: 6e 65 63 74 69 6f 6e 20 73 75 63 63 65 65 64 65 nection succeede
00a0: 64 2e 00 0e 6f 62 6a 65 63 74 45 6e 63 6f 64 69 d...objectEncodi
00b0: 6e 67 00 00 00 00 00 00 00 00 00 00 00 09 ng............
RTMP_ClientPacket, received: invoke 190 bytes
(object begin)
Property: <Name: no-name., STRING: _result>
Property: <Name: no-name., NUMBER: 1.00>
Property: <Name: no-name., OBJECT>
(object begin)
Property: <Name: fmsVer, STRING: FMS/3,0,1,123>
Property: <Name: capabilities, NUMBER: 31.00>
(object end)
Property: <Name: no-name., OBJECT>
(object begin)
Property: <Name: level, STRING: status>
Property: <Name: code, STRING: NetConnection.Connect.Success>
Property: <Name: description, STRING: Connection succeeded.>
Property: <Name: objectEncoding, NUMBER: 0.00>
(object end)
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <connect> 0B f=0/0
RTMP_SendPacket: fd=648, size=4
0000: 02 00 00 00 00 00 04 05 00 00 00 00 ............
0000: 00 4c 4b 40 .LK@
sending ctrl. type: 0x0003
RTMP_SendPacket: fd=648, size=10
0000: 42 00 00 00 00 00 0a 04 B.......
0000: 00 03 00 00 00 00 00 00 01 2c .........,
RTMP_SendPacket: fd=648, size=25
0000: 43 00 00 00 00 00 19 14 C.......
0000: 02 00 0c 63 72 65 61 74 65 53 74 72 65 61 6d 00 ...createStream.
0010: 40 00 00 00 00 00 00 00 05 @........
Invoking createStream
RTMP_ReadPacket: fd=648
0000: 03 00 00 00 00 00 1d 14 00 00 00 00 ............
0000: 02 00 07 5f 72 65 73 75 6c 74 00 40 00 00 00 00 ..._result.@....
0010: 00 00 00 05 00 3f f0 00 00 00 00 00 00 .....?.......
RTMP_ClientPacket, received: invoke 29 bytes
(object begin)
Property: <Name: no-name., STRING: _result>
Property: <Name: no-name., NUMBER: 2.00>
Property: NULL
Property: <Name: no-name., NUMBER: 1.00>
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <createStream>
SendPlay, seekTime=0, stopTime=0, sending play: (null)
RTMP_SendPacket: fd=648, size=29
0000: 08 00 00 00 00 00 1d 14 01 00 00 00 ............
0000: 02 00 04 70 6c 61 79 00 40 08 00 00 00 00 00 00 ...play.@.......
0010: 05 02 00 00 00 00 00 00 00 00 00 00 00 .............
Invoking play 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
sending ctrl. type: 0x0003
RTMP_SendPacket: fd=648, size=10
0000: c2 .
0000: 00 03 00 00 00 01 00 00 0b b8 ..........
RTMP_ReadPacket: fd=648
0000: 05 00 00 00 00 00 60 14 01 00 00 00 ......`.....
0000: 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 ...onStatus.....
0010: 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 ........level...
0020: 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e status..code...N
0030: 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 etStream.Play.St
0040: 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e art..description
0050: 02 00 0a 53 74 61 72 74 20 6c 69 76 65 00 00 09 ...Start live...
RTMP_ClientPacket, received: invoke 96 bytes
(object begin)
Property: <Name: no-name., STRING: onStatus>
Property: <Name: no-name., NUMBER: 0.00>
Property: NULL
Property: <Name: no-name., OBJECT>
(object begin)
Property: <Name: level, STRING: status>
Property: <Name: code, STRING: NetStream.Play.Start>
Property: <Name: description, STRING: Start live>
(object end)
(object end)
HandleInvoke, server invoking <onStatus>
HandleInvoke, onStatus: NetStream.Play.Start
RTMP_ReadPacket: fd=648
0000: 05 00 00 00 00 00 18 12 01 00 00 00 ............
0000: 02 00 11 7c 52 74 6d 70 53 61 6d 70 6c 65 41 63 ...|RtmpSampleAc
0010: 63 65 73 73 01 01 01 01 cess....
RTMP_ClientPacket, received: notify 24 bytes
(object begin)
Property: <Name: no-name., STRING: |RtmpSampleAccess>
Property: <Name: no-name., BOOLEAN: TRUE> nan : 0.000 fd= 0
aq= 0KB vq= 0KB sq= 0B f=0/0
Property: <Name: no-name., BOOLEAN: TRUE>
(object end)
RTMP_ReadPacket: fd=648
RTMPSockBuf_Fill, recv returned -1. GetSockError(): 10060 (Unknown error)
RTMP_ReadPacket, failed to read RTMP packet header
[AVIOContext @ 04c81be0] Statistics: 0 bytes read, 0 seeks
RTMP_SendPacket: fd=648, size=34
0000: 43 00 00 00 00 00 22 14 C.....".
0000: 02 00 0c 64 65 6c 65 74 65 53 74 72 65 61 6d 00 ...deleteStream.
0010: 40 10 00 00 00 00 00 00 05 00 3f f0 00 00 00 00 @.........?.....
0020: 00 00 ..
Invoking deleteStreamd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
rtmp://<live ip address>:1935/live/: Invalid data found when processing input

顺便说一句,这是我的服务器配置文件(/etc/nginx/nginx.conf )
#user  nobody;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}
rtmp {
server {
listen 1935;
chunk_size 4096;

application live {
live on;
record off;
}
}
}

我可以远程登录到端口 80 和 1935,并确保端口 1935 在 iptables 中作为输入和输出打开...
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT

但没有任何效果。

任何人都可以在这方面提供帮助吗?

最佳答案

看起来我发现了问题:

我正在使用此命令通过 ffmpeg 流式传输:

ffmpeg -i rtsp://admin:pass@aaa.bb.ccc.dd:554/channel3 -f mpegts rtmp://<live ip address>:1935/live/

编码参数不正确:-f mpegts 错误;我将其更改为: -c copy -f flv ,然后它开始工作。

例子:
ffmpeg -i rtsp://admin:pass@aaa.bb.ccc.dd:554/channel3 -c copy -f flv rtmp://<live ip address>:1935/live/

以上示例用于读取基于 RTSP 的 IP 摄像机。

关于nginx - 尝试通过 NGINX 将 RTSP 流式传输到 RTMP(实时)时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com