FFMPEG Не удалось открыть кодек в avformat_find_stream_info для RTSP-канала

FFMPEG Не удалось открыть кодек в avformat_find_stream_info для RTSP-канала

У меня возникла проблема с использованием FFMPEG, если версия выше 2.8.15 (это не ограничение — просто версии 3 и 4 не работают). ffprobe тоже не работает.

Версия 3:

ffprobe -rtsp_transport tcp rtsp://user:password@ipaddress:5544/live0.264

возвращает:

[h264 @ 0xcd6e70] Overread VUI by 8 bits
[rtsp @ 0xcd3b10] Failed to open codec in av_find_stream_info
[NULL @ 0xcd6e70] Overread VUI by 8 bits
[h264 @ 0xcd6e70] Overread VUI by 8 bits
[rtsp @ 0xcd3b10] Could not find codec parameters for stream 0 (Video: h264 (High), none(progressive)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, rtsp, from 'rtsp://user:password@ipaddress:5544/live0.264':
  Metadata:
    title           : Session Streamed by LIBZRTSP
    comment         : live0.264
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (High), none(progressive), 90k tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s

и

ffmpeg -f rtsp -rtsp_transport tcp -y -i "rtsp://user:password@ipaddress:5544/live0.264" -f image2 -vframes 1 -vsync 2 -pix_fmt yuvj420p "/home/james/photo_$(date +%Y.%m.%d_%H:%M:%S).jpg"

возвращается

[h264 @ 0x1634680] Overread VUI by 8 bits
[rtsp @ 0x16312f0] Failed to open codec in av_find_stream_info
[NULL @ 0x1634680] Overread VUI by 8 bits
[h264 @ 0x1634680] Overread VUI by 8 bits
[rtsp @ 0x16312f0] Could not find codec parameters for stream 0 (Video: h264 (High), none(progressive)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://user:password@ipaddress:5544/live0.264':
  Metadata:
    title           : Session Streamed by LIBZRTSP
    comment         : live0.264
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (High), none(progressive), 90k tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
[buffer @ 0x177e510] Unable to parse option value "0x0" as image size
[buffer @ 0x177e510] Unable to parse option value "-1" as pixel format
[buffer @ 0x177e510] Unable to parse option value "0x0" as image size
[buffer @ 0x177e510] Error setting option video_size to value 0x0.
[graph 0 input from stream 0:0 @ 0x177e490] Error applying options to the filter.
Error opening filters!

Версия 4 идентична, за исключением того, что в ней упоминается avformat_find_stream_info вместо av_find_stream_info

Но...

Версия 2.8.15:

ffmpeg -f rtsp -rtsp_transport tcp -y -i "rtsp://user:password@ipaddress:5544/live0.264" -f image2 -vframes 1 -vsync 2 -pix_fmt yuvj420p "/home/james/photo_$(date +%Y.%m.%d_%H:%M:%S).jpg"

возвращает:

[h264 @ 0x2243e80] Overread VUI by 8 bits
    Last message repeated 5 times
Invalid UE golomb code
    Last message repeated 1 times
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://user:password@ipaddress:5544/live0.264':
  Metadata:
    title           : Session Streamed by LIBZRTSP
    comment         : live0.264
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709), 1920x1080, 10 fps, 10 tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s
[h264 @ 0x242bd60] Overread VUI by 8 bits
    Last message repeated 2 times
Output #0, image2, to '/home/james/photo_2019.04.04_10:17:03.jpg':
  Metadata:
    title           : Session Streamed by LIBZRTSP
    comment         : live0.264
    encoder         : Lavf56.40.101
    Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080, q=2-31, 200 kb/s, 10 fps, 10 tbn, 10 tbc
    Metadata:
      encoder         : Lavc56.60.100 mjpeg
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
Invalid UE golomb code
frame=    1 fps=0.0 q=9.5 Lsize=N/A time=00:00:00.10 bitrate=N/A
video:146kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Но определенно работает и возвращает правильное фото.

Для диагностических целей у меня также есть поток с более низким разрешением, выходящий с камеры: rtsp://user:password@ipaddress:5544/live1.264 Который работает на всех версиях!

Можно ли как-то посмотреть информацию в Steam, чтобы увидеть разницу?

Это потому, что поток RTSP недействителен, но работоспособен для v2 (и отклонен для v3)? Или есть что-то еще, что я могу исправить, изменив параметры?

Буду очень признателен за любые рекомендации по запуску этой функции хотя бы на версии v3.

К сожалению, эти камеры выглядят как датчики PIR и питаются через Ethernet, поэтому на рынке фактически нет других вариантов.

Спасибо, дайте мне знать, если вам понадобится какая-либо дополнительная информация?

Обновление 04.04.2019 17:20 Лондон: Я поигрался с настройками потока в камере и обнаружил, что поток с более высоким разрешением работает, когда я устанавливаю поток на 720p. Но как только я переключаюсь обратно на 1080p, он снова падает. Не уверен, что это поможет.

решение1

Камера производит недействительный VUI, который является частью SPS. Вам нужно будет исправить ffmpeg, чтобы обрабатывать эту ошибку более изящно, или производитель камеры должен исправить ее с помощью обновления прошивки.

Связанный контент