FFmpeg RTSP崩溃
我正在尝试在我的计算机上的两个控制台之间使用rtsp流 在控制台1上,我有: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 当我
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