“打开输入流 #0:0 的解码器时出错:处理输入时发现无效数据”

“打开输入流 #0:0 的解码器时出错:处理输入时发现无效数据”

我正在使用 ffmpeg 将 RTSP 流转换为 RTMP 流。然后 RMTP 流将被输入到 Wowza Streaming Engine。我不知道为什么它在一台服务器上运行良好,但在另一台服务器上却失败了。两台服务器位于不同的网络中,但都是 Windows Server 2012,具有相同的 ffmpeg 版本,转换相同的 RTSP 流,但其中一个失败并显示错误消息打开输入流 #0:0 的解码器时出错:处理输入时发现无效数据

我使用的 ffmpeg 命令是:

ffmpeg -v debug -r 7 -i "rtsp://rtsp-stream-source-server/someRtspStream" -frame rate 7 -video_size 800x592 -vcodec libx264 -preset veryfast -maxrate 750k -bufsize 1500k -tune zerolatency -g 14 -an -r 7 -f flv rtmp://wowza-server:1935/app/stream1

我比较了两种情况下的 ffmpeg 调试消息,并注意到以下差异/行为:

  1. 对于成功的情况,ffmpeg 首先使用 UDP 打开 RTSP 流,但 UDP 超时,然后使用 TCP 重试。对于失败的情况,似乎使用 UDP 成功,无需使用 TCP 重试。

  2. 当ffmpeg成功打开一个RTSP流时,会打印出以下信息表示成功

输入 #0,rtsp,来自‘rtsp://rtsp-stream-source-server/someRtspStream’:
  元数据:
    标题 :未命名
    评论 :N/A
  时长:N/A,开始:0.151889,比特率:N/A
    流 #0:0、53、1/90000:视频:h264(主)、1 个参考帧、yuvj420p(pc、bt709、逐行、中心)、800x600(800x608)[SAR 1:1 DA
R 4:3], 0/1, 6.58 tbr, 90k tbn, 180k tbc
已成功打开文件。

对于失败的情况,将打印出以下信息:

输入 #0,rtsp,来自‘rtsp://rtsp-stream-source-server/someRtspStream’:
  元数据:
    标题 :未命名
    评论 :N/A
  时长:N/A,开始:0.151944,比特率:N/A
    流 #0:0、28、1/90000:视频:h264(主)、1 个参考帧、yuvj420p(pc、bt709、逐行、中心)、800x600(800x608)[SAR 1:1 DA
R 4:3], 0/1, 6.67 tbr, 90k tbn, 180k tbc
已成功打开文件。

请注意“Stream #0:0”后面的数字是不同的。

  1. 在“Stream Mapping”过程中,失败的情况会出现以下错误信息,然后ffmpeg进程停止:
检测到 4 个逻辑核心
[h264@0000000001c2a9a0]nal_unit_type:8,nal_ref_idc:3
[h264@0000000001c2a9a0]nal_unit_type:7,nal_ref_idc:3
[h264@0000000001c2a9a0]nal_unit_type:8,nal_ref_idc:3
[h264 @ 0000000001c2a9a0] sps_id 0 超出范围
流映射:
  流 #0:0 -> #0:0 (h264 (本机) -> h264 (libx264))
打开输入流 #0:0 的解码器时出错:处理输入时发现无效数据

您对失败案例有什么想法吗?我该如何排除故障?

以下是两种情况下的调试信息

失败案例

打开输入文件:rtsp://rtsp-stream-source-server/someRtspStream。
[tcp @ 00000000004b8740] 未设置默认白名单
[rtsp@0000000001c2ba00] SDP:
v=0
o=-1509095634684735 1 在 IP4 192.168.63.139
s=未命名
我=N/A
t=0 0
a=tool:LIVE555 流媒体 v2011.08.20
a=类型:广播
a=控制:*
a=范围:npt=0-
a=x-qt-text-nam:未命名
a=x-qt-text-inf:N/A
m=视频 0 RTP/AVP 96
c=输入 IP4 0.0.0.0
乙=AS:15000
一个=rtpmap:96 H264/90000
a=控制:轨道1

无法解析间隔结束规范''
[rtsp @ 0000000001c2ba00] 视频编解码器设置为:h264
[rtp @ 00000000004b8b40] 未设置默认白名单
[udp @ 00000000004ba420] 未设置默认白名单
[udp @ 00000000004ba420] 已设置“circular_buffer_size”选项,但此版本不支持该选项(需要 pthread 支持)
[udp @ 00000000004ba420] 报告的结束接收缓冲区大小为 65536
[udp @ 0000000001c3d160] 未设置默认白名单
[udp @ 0000000001c3d160] 已设置“circular_buffer_size”选项,但此版本不支持该选项(需要 pthread 支持)
[udp @ 0000000001c3d160] 报告的结束接收缓冲区大小为 65536
[rtsp @ 0000000001c2ba00] 将抖动缓冲区大小设置为 500
[rtsp @ 0000000001c2ba00]你好状态=0
无法解析间隔结束规范''
[h264 @ 00000000004b8d40] sps_id 0 超出范围
[AVBSFContext @00000000004bd160] nal_unit_type:0,nal_ref_idc:0
[AVBSFContext @ 00000000004bd160] nal_unit_type:8,nal_ref_idc:3
[AVBSFContext @00000000004bd160] nal_unit_type:0,nal_ref_idc:0
[AVBSFContext @ 00000000004bd160] nal_unit_type:7,nal_ref_idc:3
[AVBSFContext @00000000004bd160] nal_unit_type:0,nal_ref_idc:0
[AVBSFContext @ 00000000004bd160] nal_unit_type:8,nal_ref_idc:3
[AVBSFContext @00000000004bd160] nal_unit_type:0,nal_ref_idc:0
[AVBSFContext @00000000004bd160] nal_unit_type:5,nal_ref_idc:3
[AVBSFContext @00000000004bd160] nal_unit_type:0,nal_ref_idc:0
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264@00000000004b8d40]nal_unit_type:8,nal_ref_idc:3
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264@00000000004b8d40]nal_unit_type:7,nal_ref_idc:3
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264@00000000004b8d40]nal_unit_type:8,nal_ref_idc:3
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264@00000000004b8d40]nal_unit_type:5,nal_ref_idc:3
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264 @ 00000000004b8d40] sps_id 0 超出范围
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
    最后一条消息重复了 2 次
[h264 @ 00000000004b8d40] 将上下文重新初始化为 800x608,pix_fmt:yuvj420p
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[h264@00000000004b8d40]nal_unit_type:1,nal_ref_idc:2
[h264@00000000004b8d40]nal_unit_type:0,nal_ref_idc:0
[h264 @ 00000000004b8d40] 未知 NAL 代码:0(0 位)
[rtsp @ 0000000001c2ba00] 找到所有信息
[rtsp@0000000001c2ba00] rfps:6.500000 0.018292
[rtsp@0000000001c2ba00] rfps:6.583333 0.006178
    最后一条消息重复了 1 次
[rtsp@0000000001c2ba00] rfps:6.666667 0.004542
[rtsp@0000000001c2ba00] rfps:6.750000 0.013386
[rtsp@0000000001c2ba00] rfps:13.250000 0.016201
[rtsp@0000000001c2ba00] rfps:13.333333 0.018170
输入 #0,rtsp,来自‘rtsp://rtsp-stream-source-server/someRtspStream’:
  元数据:
    标题 :未命名
    评论 :N/A
  时长:N/A,开始:0.151944,比特率:N/A
    流 #0:0、28、1/90000:视频:h264(主)、1 个参考帧、yuvj420p(pc、bt709、逐行、中心)、800x600(800x608)[SAR 1:1 DA
R 4:3], 0/1, 6.67 tbr, 90k tbn, 180k tbc
已成功打开文件。
解析一组选项:输出url rtmp://wowza-server:1935/app/stream1。
应用选项 vcodec(强制视频编解码器('copy' 以复制流))和参数 libx264。
应用选项 an(禁用音频)和参数 1。
应用选项 r(设置帧速率(Hz 值、分数或缩写))和参数 7。
应用选项 f(强制格式)和参数 flv。
成功解析一组选项。
打开输出文件:rtmp://wowza-server:1935/app/stream1。
[rtmp@00000000023c0ec0]未设置默认白名单
正在解析...
解析协议:0
解析主机:127.0.0.1
解析的应用程序:vdc
RTMP_Connect1, ... 已连接,握手
握手:输入答案:03
HandShake:服务器正常运行时间:96850052
握手:FMS 版本:3.0.1.1
握手:握手完成....
RTMP_Connect1,握手
RTMP_SendPacket: fd=516, 大小=88
  0000:03 00 00 00 00 00 58 14 00 00 00 00 ......X.....
  0000:02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00...连接。?....
  0010:00 00 00 03 00 03 61 70 70 02 00 03 76 64 63 00 ......应用...vdc。
  0020:04 74 79 70 65 02 00 0a 6e 6f 6e 70 72 69 76 61.类型...非隐私
  0030:74 65 00 05 74 63 55 72 6c 02 00 19 72 74 6d 70 te..tcUrl...rtmp
  0040:3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 31 39 33 ://127.0.0.1:193
  0050:35 2f 76 64 63 00 00 09 5/vdc…
调用 connect
RTMP_ReadPacket: fd=516
  0000:02 00 00 00 00 00 04 05 00 00 00 ............
  0000:00 26 25 a0 .&%。
HandleServerBW:服务器 BW = 2500000
RTMP_ReadPacket: fd=516
  0000:02 00 00 00 00 00 05 06 00 00 00 ............
  0000:00 26 25 a0 02 .&%..
HandleClientBW: 客户端BW = 2500000 2
RTMP_ReadPacket: fd=516
  0000:02 00 00 00 00 00 06 04 00 00 00 ............
  0000:00 00 00 00 00 00......
HandleCtrl,收到 ctrl。类型:0,长度:6
HandleCtrl,流开始 0
RTMP_ReadPacket: fd=516
  0000:02 00 00 00 00 00 04 01 00 00 00 ............
  0000:00 00 02 00 ....
HandleChangeChunkSize,已接收:块大小更改为 512
RTMP_ReadPacket: fd=516
  0000:03 00 00 00 00 01 05 14 00 00 00 00 ............
  0000:02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 ...结果?....
  0010:00 00 00 03 00 06 66 6d 73 56 65 72 02 00 0e 46......fmsVer...F
  0020:4d 53 2f 33 2c 35 2c 37 2c 37 30 30 39 00 0c 63 MS/3,5,7,7009..c
  0030:61 70 61 62 69 6c 69 74 69 65 73 00 40 3f 00 00 能力。@?..
  0040:00 00 00 00 00 04 6d 6f 64 65 00 3f f0 00 00 00 ......模式。?....
  0050:00 00 00 00 00 09 03 00 05 6c 65 76 65 6c 02 00.........级别..
  0060:06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 1d.状态..代码...
  0070:4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f NetConnection.Co
  0080:6e 6e 65 63 74 2e 53 75 63 63 65 73 73 00 0b 64 nnect.成功.d
  0090:65 73 63 72 69 70 74 69 6f 6e 02 00 15 43 6f 6e 说明...Con
  00a0:6e 65 63 74 69 6f 6e 20 73 75 63 63 65 65 64 65 连接成功
  00b0:64 2e 00 04 64 61 74 61 08 00 00 00 00 00 07 76 d...数据.......v
  00c0:65 72 73 69 6f 6e 02 00 0a 33 2c 35 2c 37 2c 37 版本...3,5,7,7
  00d0:30 30 39 00 00 09 00 08 63 6c 69 65 6e 74 69 64 009.....客户端 ID
  00e0:00 41 d6 2d 2b 68 80 00 00 00 0e 6f 62 6a 65 63 .A.-+h.....对象
  00f0:74 45 6e 63 6f 64 69 6e 67 00 00 00 00 00 00 00 t编码.......
  0100:00 00 00 00 09.....
RTMP_ClientPacket,已接收:调用261字节
(对象开始)
财产:
财产:
财产:
(对象开始)
财产:
财产:
财产:
(对象结束)
财产:
(对象开始)
财产:
财产:
财产:
财产:
(对象开始)
财产:
(对象结束)
财产:
财产:
(对象结束)
(对象结束)
HandleInvoke,服务器调用
HandleInvoke,接收方法调用的结果
RTMP_SendPacket: fd=516, 大小=33
  0000:43 00 00 00 00 00 21 14 C......!.
  0000:02 00 0d 72 65 6c 65 61 73 65 53 74 72 65 61 6d…释放流
  0010:00 40 00 00 00 00 00 00 00 05 02 00 04 6e 74 74   [电子邮件保护]
  0020:31 1
调用 releaseStream
RTMP_SendPacket: fd=516, 大小=29
  0000:43 00 00 00 00 00 1d 14 C......
  0000:02 00 09 46 43 50 75 62 6c 69 73 68 00 40 08 00...FCPublish.@..
  0010:00 00 00 00 00 05 02 00 04 6e 74 74 31 .........ntt1
调用 FCPublish
RTMP_SendPacket: fd=516, 大小=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…创建流。
  0010:40 10 00 00 00 00 00 00 05 @........
调用 createStream
RTMP_ReadPacket: fd=516
  0000:03 00 00 00 00 00 88 14 00 00 00 00 ............
  0000:02 00 0b 6f 6e 46 43 50 75 62 6c 69 73 68 00 00...onFCPublish..
  0010:00 00 00 00 00 00 00 05 03 00 05 6c 65 76 65 6c ...........级别
  0020:02 00 06 73 74 61 74 75 73 00 04 63 6f 64 65 02...状态..代码。
  0030:00 17 4e 65 74 53 74 72 65 61 6d 2e 50 75 62 6c ..NetStream.Publ
  0040:69 73 68 2e 53 74 61 72 74 00 0b 64 65 73 63 72 ish.开始.描述
  0050:69 70 74 69 6f 6e 02 00 19 46 43 50 75 62 6c 69 选项...FCPubli
  0060:73 68 20 74 6f 20 73 74 72 65 61 6d 20 6e 74 74 sh 到流 ntt
  0070:31 2e 00 08 63 6c 69 65 6e 74 69 64 00 41 d6 2d 1 ...clientid.A.-
  0080:2b 68 80 00 00 00 00 09 +h......
RTMP_ClientPacket,已接收:调用136字节
(对象开始)
财产:
财产:
属性:NULL
财产:
(对象开始)
财产:
财产:
财产:
财产:
(对象结束)
(对象结束)
HandleInvoke,服务器调用
RTMP_ReadPacket: fd=516
  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 10 00 00 00..._结果.@....
  0010:00 00 00 05 00 3f f0 00 00 00 00 00 00 ......?.......
RTMP_ClientPacket,已接收:调用 29 字节
(对象开始)
财产:
财产:
属性:NULL
财产:
(对象结束)
HandleInvoke,服务器调用
HandleInvoke,接收方法调用的结果
RTMP_SendPacket: fd=516, 大小=34
  0000:04 00 00 00 00 00 22 14 01 00 00 00 ......”.....
  0000:02 00 07 70 75 62 6c 69 73 68 00 40 14 00 00 00...发布。@....
  0010:00 00 00 05 02 00 04 6e 74 74 31 02 00 04 6c 69 .......ntt1...li
  0020:76 65 是
调用发布
RTMP_ReadPacket: fd=516
  0000:02 00 00 00 00 00 06 04 00 00 00 ............
  0000:00 00 00 00 00 01……
HandleCtrl,收到 ctrl。类型:0,长度:6
HandleCtrl,流开始 1
RTMP_ReadPacket: fd=516
  0000:03 00 00 00 00 00 7c 14 01 00 00 00 ......|......
  0000:02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00...状态...
  0010:00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 ........级别...
  0020:73 74 61 74 75 73 00 04 63 6f 64 65 02 00 17 4e 状态..代码...N
  0030:65 74 53 74 72 65 61 6d 2e 50 75 62 6c 69 73 68 etStream.发布
  0040:2e 53 74 61 72 74 00 0b 64 65 73 63 72 69 70 74.开始.描述
  0050:69 6f 6e 02 00 10 50 75 62 6c 69 73 68 69 6e 67 ion...出版
  0060:20 6e 74 74 31 2e 00 08 63 6c 69 65 6e 74 69 64 ntt1 ...客户端ID
  0070:00 41 d6 2d 2b 68 80 00 00 00 00 09 .A.-+h......
RTMP_ClientPacket,接收:调用124字节
(对象开始)
财产:
财产:
属性:NULL
财产:
(对象开始)
财产:
财产:
财产:
财产:
(对象结束)
(对象结束)
HandleInvoke,服务器调用
HandleInvoke,状态:NetStream.Publish.Start
已成功打开文件。
检测到 4 个逻辑核心
[h264@0000000001c2a9a0]nal_unit_type:8,nal_ref_idc:3
[h264@0000000001c2a9a0]nal_unit_type:7,nal_ref_idc:3
[h264@0000000001c2a9a0]nal_unit_type:8,nal_ref_idc:3
[h264 @ 0000000001c2a9a0] sps_id 0 超出范围
流映射:
  流 #0:0 -> #0:0 (h264 (本机) -> h264 (libx264))
打开输入流 #0:0 的解码器时出错:处理输入时发现无效数据
[AVIOContext @ 000000000239a360] 统计信息:0 次搜索,0 次写出
RTMP_SendPacket: fd=516, 大小=31
  0000:43 00 00 00 00 00 1f 14 C.......
  0000:02 00 0b 46 43 55 6e 70 75 62 6c 69 73 68 00 40...FC取消发布。@
  0010:18 00 00 00 00 00 00 05 02 00 04 6e 74 74 31..........ntt1
调用 FCUnpublish
RTMP_SendPacket: fd=516, 大小=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…删除流。
  0010:40 1c 00 00 00 00 00 00 05 00 3f f0 00 00 00 00 @.........?......
  0020:00 00……
调用 deleteStream

相关内容