为什么使用testsrc ffmpeg会收到输入/输出错误? [英] Why would I receive input/output error with testsrc ffmpeg?

查看:155
本文介绍了为什么使用testsrc ffmpeg会收到输入/输出错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个集成测试,该测试实际上需要将RTMP流传输到第三方服务.如何使用ffmpeg命令生成RTMP测试流?似乎是正确的答案,但是我无法使其正常工作.

I am trying to write an integration test which requires actually RTMP streaming to a 3rd party service. How to generate an RTMP test stream using ffmpeg command? seems like the right answer, however I can't get it to work.

在没有RTMP的情况下, ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p test.mp4 有效.

As a baseline, without RTMP, ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p test.mp4 works.

ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p -f flv rtmp://mylocation 给我错误 rtmp://mylocation:输入/输出错误

我应该注意该URL是有效的,否则我会收到一条错误消息,提示它无法打开连接.

I should note that the URL is valid, otherwise I get an error saying it can't open a connection.

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

I also tried ffmpeg -f lavfi -i testsrc -pix_fmt yuv420p -f flv rtmp://mylocatiom. I had read that if you don't supply time, it goes on forever and thought I might need that for an RTMP stream. I got the same error.

这是最后一次尝试的完整输出,下面的@Gyan建议添加参数,并附带详细的日志记录.

Here is full output from last attempt, with added params as suggested by @Gyan below, along with verbose logging.

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 后,在错误发生之前添加了更多类似的数据:

Updating to debug added some more data like this before error:

[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 '' is suspect, but not sure what to do about that.

推荐答案

我没有注意到-调试输出中的 fname 为空.我缺少流名称/键.我需要做 rtmp://myhost:1935/identifier/streamkey .日志显示我的流名称为空.我一直在复制粘贴没有密钥的URL,因为我一直忘了它-我的OBS设置为始终具有相同的密钥,但是URL更改了,这就是我一次又一次粘贴的内容.

I didn't notice - fname was blank in the debug output. I was missing the stream name/key. I needed to do rtmp://myhost:1935/identifier/streamkey. The logs showed my stream name was empty. I had been copy pasting the URL without the key since I had absentmindendly forgotten about it - my OBS is setup to always have the same key but the URL changes and that was what I was pasting again and again.

这篇关于为什么使用testsrc ffmpeg会收到输入/输出错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆