为什么我会收到输入/输出错误与testsrc的ffmpeg?(Why would I receive

2019-09-27 13:10发布

我试图写一个集成测试,实际上需要RTMP流的第三方服务。 如何生成使用的ffmpeg命令的RTMP测试流? 似乎是一个正确的答案,但我不能得到它的工作。

作为一个基准,无需RTMP, ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p test.mp4工作。

ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p -f flv rtmp://mylocation给我的错误rtmp://mylocation: Input/output error

我要指出的是,网址是有效的,否则我得到一个错误说,它不能打开一个连接。

我也试过ffmpeg -f lavfi -i testsrc -pix_fmt yuv420p -f flv rtmp://mylocatiom 。 我读了,如果你不提供时间,如此下去永远觉得我可能需要,对于一个RTMP流。 我得到了同样的错误。

下面是从最后一次尝试全力输出,以如下面@Gyan建议,具有详细记录一起加入PARAMS。

ffmpeg -loglevel verbose -f lavfi -i testsrc -pix_fmt yuv420p -f flv -c:v libx264 -g 50 rtmp://myhost:1935/identifier
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-opencl --enable-videotoolbox
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[Parsed_testsrc_0 @ 0x7fddf34022c0] size:320x240 rate:25/1 duration:-1.000000 sar:1/1
Input #0, lavfi, from 'testsrc':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo, 1 reference frame (RGB[24] / 0x18424752), rgb24, 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[tcp @ 0x7fddf3404880] Starting connection attempt to {theIP} port 1935
[tcp @ 0x7fddf3404880] Successfully connected to {theIP} port 1935
rtmp://myhost:1935/identifier: Input/output error

更新到debug添加一些像这样的更多的数据错误之前:

[tcp @ 0x7fc4e1601a00] Starting connection attempt to 34.224.30.155 port 1935
[tcp @ 0x7fc4e1601a00] Successfully connected to 34.224.30.155 port 1935
[rtmp @ 0x7fc4e1411200] Handshaking...
[rtmp @ 0x7fc4e1411200] Type answer 3
[rtmp @ 0x7fc4e1411200] Server version 3.0.1.1
[rtmp @ 0x7fc4e1411200] Proto = rtmp, path = /identifier, app = identifier, fname = 
[rtmp @ 0x7fc4e1411200] Window acknowledgement size = 2500000
[rtmp @ 0x7fc4e1411200] Max sent, unacked = 2500000
[rtmp @ 0x7fc4e1411200] New incoming chunk size = 4096
[rtmp @ 0x7fc4e1411200] Releasing stream...
[rtmp @ 0x7fc4e1411200] FCPublish stream...
[rtmp @ 0x7fc4e1411200] Creating stream...
[rtmp @ 0x7fc4e1411200] Sending publish command for ''
rtmp://myhost:1935/identifier: Input/output error

Sending publish command for ''的嫌疑,但不知道该怎么做了一番。

Answer 1:

我没有注意到- fname是在调试输出空白。 我是缺少流名称/键。 我需要做的rtmp://myhost:1935/identifier/streamkey 。 日志显示,我流名称是空的。 我一直在复制粘贴URL没有密钥,因为我已经absentmindendly忘记了 - 我的OBS是设置总是有相同的密钥,但URL的变化,这也正是我一次又一次的粘贴。



Answer 2:

RTMP://本地主机:1935 /应用/ streamkey通常是基于RTMP流终点......在你的例子,你只显示RTMP://主机:1935 /应用程序,并根据什么类型的服务您发布到,可不行。 不过,我测试了这对一个香草安装wowza流引擎的RTMP:// wowza:1935 /应用程序,实际上它没有工作,我能够在与ffplay同一个端点,以查看流



文章来源: Why would I receive input/output error with testsrc ffmpeg?