#11134 closed defect (fixed)
zmq url lacks prefix: [out#0/* @ 0x*] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
| Reported by: | iconoclasthero | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avformat |
| Version: | git-master | Keywords: | zmq regression |
| Cc: | iconoclasthero, nanake | Blocked By: | |
| Blocking: | 7.1 | Reproduced by developer: | no |
| Analyzed by developer: | no |
Description (last modified by )
zmq streaming not working. ffmpeg compiled with --enable-libzmq.
the fifo it's trying to pull from works to output an encoded file.
no observed discrepancy between the documentation and the general use of the commands below.
Summary of the bug:
How to reproduce:
$ ffmpeg -y -nostdin -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f mpegts zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x59859674ad80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x5985967552c0] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/mpegts @ 0x59859674af00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -y -nostdin -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f nut -c:a libopus -b:a 128k zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x5c7cab802e00] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x5c7cab807680] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/nut @ 0x5c7cab802fc0] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f mpegts -c:a libopus zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x5cc5bf825d80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x5cc5bf829680] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/mpegts @ 0x5cc5bf825f00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f webm -c:a libopus output.webm
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x59dc60f39d80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le (native) -> opus (libopus))
Press [q] to stop, [?] for help
[libopus @ 0x59dc60e6a140] No bit rate set. Defaulting to 96000 bps.
Output #0, webm, to 'output.webm':
Metadata:
encoder : Lavf61.5.101
Stream #0:0: Audio: opus, 48000 Hz, stereo, s16, 96 kb/s
Metadata:
encoder : Lavc61.11.100 libopus
[out#0/webm @ 0x59dc60f39f00] video:0KiB audio:535KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 2.809126%
size= 550KiB time=00:00:41.72 bitrate= 108.0kbits/s speed=1.11x
Exiting normally, received signal 2.
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f webm -c:a libopus zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x5bcd76aeed80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x5bcd76af2640] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/webm @ 0x5bcd76aeef00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f nut -c:a libopus zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x5dc04e7a2d80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x5dc04e7a7580] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/nut @ 0x5dc04e7a2f00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f mpegts -c:a libopus zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x58b7489edd80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x58b7489f1680] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/mpegts @ 0x58b7489edf00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -f mpegts -c:a libmp3lame zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
[aist#0:0/pcm_s16le @ 0x644f50028d80] Guessed Channel Layout: stereo
Input #0, s16le, from '/tmp/mpd.fifo':
Duration: N/A, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[zmq @ 0x644f5002c680] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/mpegts @ 0x644f50028f00] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
mpd fifo output:
audio_output {
type "fifo"
name "mpd.fifo"
path "/tmp/mpd.fifo"
format "48000:16:2"
}
and if I'm not using the zmq streaming protocol:
$ ffmpeg -f s16le -ar 48000 -ac 2 -i /tmp/mpd.fifo -c:a libopus output.opus
produces output.opus which vlc can play.
https://www.ffmpeg.org/ffmpeg-protocols.html#zmq
3.45 zmq
ZeroMQ asynchronous messaging using the libzmq library.
This library supports unicast streaming to multiple clients without
relying on an external server.
The required syntax for streaming or connecting to a stream is:
zmq:tcp://ip-address:port
Example: Create a localhost stream on port 5555:
ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555
Multiple clients may connect to the stream using:
ffplay zmq:tcp://127.0.0.1:5555
Streaming to multiple clients is implemented using a ZeroMQ Pub-Sub
pattern. The server side binds to a port and publishes data. Clients
connect to the server (via IP address/port) and subscribe to the
stream. The order in which the server and client start generally does not matter.
ffmpeg must be compiled with the –enable-libzmq option to support this protocol.
Options can be set on the ffmpeg/ffplay command line. The following
options are supported:
pkt_size
Forces the maximum packet size for sending/receiving data. The default value is 131,072 bytes. On the server side, this sets the maximum size of sent packets via ZeroMQ. On the clients, it sets an internal buffer size for receiving packets. Note that pkt_size on the clients should be equal to or greater than pkt_size on the server. Otherwise the received message may be truncated causing decoding errors.
It doesn't seem to be specifically related to the fifo as the input:
$ ffmpeg -i /library/music/Grateful\ Dead/Grateful\ Dead\ --\ American\ Beauty\ \(1970\)/Grateful\ Dead\ --\ 01-01\ -\ Box\ of\ Rain.flac -f mpegts -c:a libmp3lame zmq:tcp://127.0.0.1:5555
ffmpeg version N-116515-gd527d23872 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Ubuntu 14.1.0-5ubuntu1)
configuration: --bindir=/usr/local/bin --prefix=/cache/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/cache/ffmpeg_build/include --extra-ldflags=-L/cache/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-libpulse --enable-libzmq
libavutil 59. 31.100 / 59. 31.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
Input #0, flac, from '/library/music/Grateful Dead/Grateful Dead -- American Beauty (1970)/Grateful Dead -- 01-01 - Box of Rain.flac':
Metadata:
⋮
Duration: 00:05:18.92, start: 0.000000, bitrate: 5972 kb/s
Stream #0:0: Audio: flac, 192000 Hz, stereo, s32 (24 bit)
Side data:
replaygain: track gain - -4.760000, track peak - 0.000023, album gain - -4.180000, album peak - 0.000023,
Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 500x500 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn (attached pic)
Metadata:
comment : Cover (front)
[zmq @ 0x5927538f5040] URL tcp://127.0.0.1:5555 lacks prefix
[out#0/mpegts @ 0x59275388eac0] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument
Error opening output file zmq:tcp://127.0.0.1:5555.
Error opening output files: Invalid argument
Change History (10)
comment:1 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 2 years ago
| Summary: | [out#0/* @ 0x*] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument → zmq url lacks prefix: [out#0/* @ 0x*] Error opening output zmq:tcp://127.0.0.1:5555: Invalid argument |
|---|
comment:4 by , 2 years ago
| Cc: | added |
|---|
comment:5 by , 2 years ago
It appears the check in 0263b6a48caaff839e4c28df15b299b89c7da92d is wrong.
Unfortunately, this commit was cherry-picked in all latest releases.
I think it should be:
if (!av_strstart(uri, "zmq:", &uri)) {
av_log(h, AV_LOG_ERROR, "URL %s lacks prefix\n", uri);
return AVERROR(EINVAL);
}
follow-up: 7 comment:6 by , 23 months ago
| Blocking: | → 7.1 |
|---|---|
| Component: | undetermined → avformat |
| Keywords: | regression added |
| Priority: | normal → important |
| Status: | new → open |
Patch submitted: https://ffmpeg.org/pipermail/ffmpeg-devel/2024-August/332678.html
follow-up: 9 comment:7 by , 23 months ago
͏ Sorry for the Off-Topic.
͏ But is posting to the mail list really the proper way to make commits in FFmpeg..?
͏ I'm unfamiliar with the project's committing style.
͏ And haven't yet learned.
͏ Preferably continued on:
͏ https://github.com/MasterInQuestion/talk/discussions/categories/FFmpeg
comment:8 by , 23 months ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Fixed in a87a96105e9150dba07e3a660e41f78557f3356c.
comment:9 by , 23 months ago
Replying to MasterQuestionable:
͏ Sorry for the Off-Topic.
͏ But is posting to the mail list really the proper way to make commits in FFmpeg..?
͏ I'm unfamiliar with the project's committing style.
͏ And haven't yet learned.
͏ Preferably continued on:
͏ https://github.com/MasterInQuestion/talk/discussions/categories/FFmpeg
Log into https://trac.ffmpeg.org/ticket/11134 and you'll see that they've been entered on the ticket. If you don't want the emails, don't sign up for them?



I'm not sure if this is a bug or feature. that example command https://www.ffmpeg.org/ffmpeg-protocols.html#zmq works again if i reverted 0263b6a48caaff839e4c28df15b299b89c7da92d.