【问题标题】:Why would I receive input/output error with testsrc ffmpeg?为什么我会收到 testsrc ffmpeg 的输入/输出错误?
【发布时间】:2019-05-19 01:11:39
【问题描述】:

我正在尝试编写一个集成测试,它实际上需要将 RTMP 流式传输到第 3 方服务。 How to generate an RTMP test stream using ffmpeg command? 似乎是正确的答案,但我无法让它工作。

作为基准,没有 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

我应该注意该 URL 是有效的,否则我会收到一个错误,说它无法打开连接。

我也试过ffmpeg -f lavfi -i testsrc -pix_fmt yuv420p -f flv rtmp://mylocatiom。我已经读过,如果您不提供时间,它会永远持续下去,并认为我可能需要将其用于 RTMP 流。我遇到了同样的错误。

这是上次尝试的完整输出,添加了下面@Gyan 建议的参数,以及详细的日志记录。

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 '' 是可疑的,但不知道该怎么办。

【问题讨论】:

  • 该 URL 可能有效,但请检查您是否可以流式传输到该 URL。尝试流式传输到 Youtube。但首先将编解码器设置为 H264 -c:v libx264 以及 GOP 大小 -g 50
  • 在执行ffmpeg -f lavfi -i testsrc -pix_fmt yuv420p -f flv -c:v libx264 -g 50 rtmp://mylocation 时仍然出现同样的错误。 RTMP URL 绝对有效 - 我可以使用 OBS 手动流式传输。我将更新我的问题以显示完整的输出。不清楚如何知道哪些参数在testsrc 之前或之后,除了反复试验(之前有错误)。 ffmpeg 页面上的文档对于菜鸟来说有点难以理解。
  • 请确认它在 YouTube 上也不起作用。 IIRC,YouTube 也需要音频来接受它,输出为 H.264 而不是 flv1,并添加 -re: ffmpeg -re -f lavfi -i testsrc=s=hd720,format=yuv420p -f lavfi -i anullsrc -c:v libx264 -g 50 -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/<stream-key> 我不是网络协议用户,但我想知道是否使用 @987654336 构建如果其他方法都失败了,@ 而不是使用本机实现会表现不同。

标签: ffmpeg video-streaming rtmp


【解决方案1】:

我没有注意到 - fname 在调试输出中是空白的。我错过了流名称/密钥。我需要做rtmp://myhost:1935/identifier/streamkey。日志显示我的流名称为空。我一直在复制粘贴没有密钥的 URL,因为我心不在焉地忘记了它 - 我的 OBS 设置为始终具有相同的密钥,但 URL 发生了变化,这就是我一次又一次粘贴的内容。

【讨论】:

    【解决方案2】:

    rtmp://localhost:1935/app/streamkey 通常是基于 rtmp 的流式传输的端点...在您的示例中,您仅显示 rtmp://host:1935/app,具体取决于您发布的服务类型到,可能行不通。但是,我确实针对 rtmp://wowza:1935/app 的 wowza 流引擎的香草安装对此进行了测试,实际上它确实有效,并且我能够使用 ffplay 在同一端点查看流

    【讨论】:

    • 这是我前一天的回答。
    猜你喜欢
    • 2022-06-11
    • 2013-06-04
    • 2020-06-12
    • 2018-03-10
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2021-01-19
    相关资源
    最近更新 更多