FFmpeg RTSP崩溃

FFmpeg RTSP崩溃,ffmpeg,video-streaming,rtsp,Ffmpeg,Video Streaming,Rtsp,我正在尝试在我的计算机上的两个控制台之间使用rtsp流 在控制台1上,我有: ffmpeg -rtbufsize 100M -re -f dshow -s 320x240 -i video="BisonCam, NB Pro" -r 10 -an -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/demo 在控制台2上,我有: ffplay -rtsp_flags listen -i rtsp://127.0.0.1:8554/demo 当我

我正在尝试在我的计算机上的两个控制台之间使用rtsp流

在控制台1上,我有:

ffmpeg -rtbufsize 100M -re -f dshow -s 320x240 -i video="BisonCam, NB Pro" -r 10 -an -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/demo
在控制台2上,我有:

ffplay -rtsp_flags listen -i rtsp://127.0.0.1:8554/demo
当我运行执行这两个命令时,我的网络摄像头LED亮起。但是在ffmpeg崩溃之后。有人遇到过同样的事情吗?我真的需要一些帮助

这是我在Windows 10计算机上的ffmpeg配置:

ffmpeg version N-81391-g2a3720b Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 29.100 / 55. 29.100
  libavcodec     57. 54.100 / 57. 54.100
  libavformat    57. 47.101 / 57. 47.101
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 52.100 /  6. 52.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
更新

我试图从一个视频文件流,只是为了确保问题与网络摄像头无关

#Console 1
ffmpeg -i out.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

#Console 2
ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp?tcp
两台控制台的输出如下所示:

控制台1:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
  Duration: 00:01:02.57, start: 0.000000, bitrate: 172 kb/s
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 320x240, 169 kb/s, 30 fps, 30 tbr, 10000k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
[rtsp @ 00000000024c1700] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, rtsp, to 'rtsp://localhost:8888/live.sdp':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
    Stream #0:0(und): Video: mpeg4, yuv420p, 320x240, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc57.54.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
控制台2:

[rtsp @ 00000000001ccde0] WARNING: Path /live.sdp differs from expected /live.sdp?tcp
    Last message repeated 1 times
[rtsp @ 00000000001ccde0] Updating control URI to rtsp://localhost:8888/live.sdp
[rtsp @ 00000000001ccde0] Could not find codec parameters for stream 0 (Video: mpeg4 (Simple Profile), none, 320x240 [SAR 1:1 DAR 4:3]): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, rtsp, from 'rtsp://localhost:8888/live.sdp?tcp':
  Metadata:
    title           : No Name
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mpeg4 (Simple Profile), none, 320x240 [SAR 1:1 DAR 4:3], 30 tbr, 90k tbn, 30 tbc
    nan M-V:    nan fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
ffmpeg.exe也发生了同样的崩溃,ffplay继续等待数据。我在Linux虚拟机上尝试了相同的命令,效果很好

有什么想法吗

更新

以下是我从gdb得到的信息:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
  Duration: 00:01:02.57, start: 0.000000, bitrate: 172 kb/s
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 320x240, 169 kb/s, 30 fps, 30 tbr, 10000k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
[New Thread 15408.0x3f28]
[New Thread 15408.0x86c]
[New Thread 15408.0x23c8]
[New Thread 15408.0xf48]
[New Thread 15408.0x354c]
[New Thread 15408.0xf24]
[New Thread 15408.0x1e4c]
[New Thread 15408.0x257c]
[New Thread 15408.0x22a4]
[New Thread 15408.0xc88]
[New Thread 15408.0x40bc]
[New Thread 15408.0x1520]
[New Thread 15408.0x2584]
[New Thread 15408.0x1a64]
[New Thread 15408.0x3934]
[New Thread 15408.0x4010]
[New Thread 15408.0x3d28]
[New Thread 15408.0x288c]
[New Thread 15408.0x1e50]
[New Thread 15408.0x630]
[New Thread 15408.0x4128]
[New Thread 15408.0x3fa0]
[New Thread 15408.0x20ec]
[New Thread 15408.0x4bcc]
[New Thread 15408.0x17b4]
[New Thread 15408.0x1204]
[New Thread 15408.0x2dc8]
[rtsp @ 0000000000e458e0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[New Thread 15408.0x1d14]
Output #0, rtsp, to 'rtsp://localhost:8888/live.sdp':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
    Stream #0:0(und): Video: mpeg4, yuv420p, 320x240, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc57.54.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Press [q] to stop, [?] for help

Program received signal SIGSEGV, Segmentation fault.
0x00007ff82d95292f in avpriv_mpegts_parse_close () from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
以及回溯:

(gdb) bt
#0  0x00007ff82d95292f in avpriv_mpegts_parse_close () from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#1  0x00007ff82d956a1b in avformat-57!av_get_output_timestamp () from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#2  0x00007ff82d9a5dbe in ff_rtsp_parse_line () from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#3  0x00007ff82d955e6d in avformat-57!av_interleaved_write_frame () from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#4  0x000000014001af78 in ?? ()
#5  0x000000014001bda9 in ?? ()
#6  0x000000014001e642 in ?? ()
#7  0x00000001400201f1 in ?? ()
#8  0x000000014004bd47 in ?? ()
#9  0x00000001400013ed in ?? ()
#10 0x000000014000152b in ?? ()
#11 0x00007ff85e2b8102 in KERNEL32!BaseThreadInitThunk () from C:\Windows\system32\kernel32.dll
#12 0x00007ff85edac264 in ntdll!RtlUserThreadStart () from C:\Windows\SYSTEM32\ntdll.dll
#13 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)
更新2

下面是使用ffmpeg_g.exe

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
  Duration: 00:01:02.57, start: 0.000000, bitrate: 172 kb/s
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 320x240, 169 kb/s, 30 fps, 30 tbr, 10000k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
[New Thread 14052.0x3560]
[New Thread 14052.0x24b4]
[New Thread 14052.0x3554]
[New Thread 14052.0x1a3c]
[New Thread 14052.0x2e64]
[New Thread 14052.0xd0c]
[New Thread 14052.0x29e4]
[New Thread 14052.0x3724]
[New Thread 14052.0x36f8]
[New Thread 14052.0x36f0]
[New Thread 14052.0x78]
[New Thread 14052.0x1578]
[New Thread 14052.0x36a0]
[New Thread 14052.0x3688]
[New Thread 14052.0x369c]
[New Thread 14052.0x1f84]
[New Thread 14052.0x2094]
[New Thread 14052.0x2f14]
[New Thread 14052.0x2c54]
[New Thread 14052.0x3624]
[New Thread 14052.0x2d44]
[New Thread 14052.0x3424]
[New Thread 14052.0x1dd4]
[New Thread 14052.0x20c4]
[New Thread 14052.0x34d8]
[New Thread 14052.0x34e4]
[New Thread 14052.0x3528]
[rtsp @ 0000000000f75a80] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[New Thread 14052.0x3564]
Output #0, rtsp, to 'rtsp://localhost:8888/live.sdp':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.47.101
    Stream #0:0(und): Video: mpeg4, yuv420p, 320x240, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc57.54.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Press [q] to stop, [?] for help

Program received signal SIGSEGV, Segmentation fault.
0x00007ffeecd8292f in avpriv_mpegts_parse_close ()
   from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
(gdb) bt
#0  0x00007ffeecd8292f in avpriv_mpegts_parse_close ()
   from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#1  0x00007ffeecd86a1b in avformat-57!av_get_output_timestamp ()
   from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#2  0x00007ffeecdd5dbe in ff_rtsp_parse_line ()
   from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#3  0x00007ffeecd85e6d in avformat-57!av_interleaved_write_frame
    ()
   from E:\Dev\Library\ffmpeg-20160819-2a3720b-win64-shared\bin\avformat-57.dll
#4  0x000000014001af78 in ?? ()
#5  0x000000014001bda9 in ?? ()
#6  0x000000014001e642 in ?? ()
#7  0x00000001400201f1 in ?? ()
#8  0x000000014004bd47 in ?? ()
#9  0x00000001400013ed in ?? ()
---Type <return> to continue, or q <return> to quit---  

该问题已在最近的错误修复中得到解决:

commit f8a13c72132a65e34e05b878dc780ad330dd7371
Author: Martin Storsjö <martin@martin.st>
Date:   Thu Sep 15 13:50:57 2016 +0200

    lavf/rtsp: Fix a crash with the RTSP muxer.

    Introduced in 00e122bc / bc2a3296
    The whole block that the statement was added to is only
    relevant when used as a demuxer, but the other statements
    there have had other if statements guarding them. Make
    sure to only run this whole block if being used as a
    demuxer.

    Fixes ticket #5844.

该问题已在最近的错误修复中得到解决:

commit f8a13c72132a65e34e05b878dc780ad330dd7371
Author: Martin Storsjö <martin@martin.st>
Date:   Thu Sep 15 13:50:57 2016 +0200

    lavf/rtsp: Fix a crash with the RTSP muxer.

    Introduced in 00e122bc / bc2a3296
    The whole block that the statement was added to is only
    relevant when used as a demuxer, but the other statements
    there have had other if statements guarding them. Make
    sure to only run this whole block if being used as a
    demuxer.

    Fixes ticket #5844.

如果保存到文件,它会崩溃吗?不会。建立连接时会发生崩溃。gdb backtrace请?我已在问题帖子中添加了backtrace。如果使用ffmpeg_g.exe进行backtrace,它可能会为您提供更多信息…如果保存到文件,它会崩溃吗?不,不会。建立连接时会发生崩溃。请执行gdb回溯?我已在问题帖子中附加了回溯。如果您使用ffmpeg_g.exe进行回溯,它可能会为您提供更多信息。。。
$ git checkout master
$ git pull