BtbN changed the topic of #ffmpeg to: Welcome to the FFmpeg USER support channel | Development channel: #ffmpeg-devel | Bug reports: https://ffmpeg.org/bugreports.html | Wiki: https://trac.ffmpeg.org/ | This channel is publically logged | FFmpeg 7.0 is released
Sciencentistguy has joined #ffmpeg
sugoi1 has joined #ffmpeg
sugoi has quit [Ping timeout: 252 seconds]
sugoi1 is now known as sugoi
ewomer has joined #ffmpeg
Traneptora has quit [Quit: Quit]
xx has quit [Ping timeout: 260 seconds]
lockywolf has quit [Quit: ZNC 1.8.2 - https://znc.in]
lockywolf has joined #ffmpeg
yans has joined #ffmpeg
yans has quit [Ping timeout: 246 seconds]
waleee has quit [Ping timeout: 246 seconds]
Kei_N_ has joined #ffmpeg
<iconoclasthero> https://bpa.st/QFQPY i was comparing the ffmpeg that i just compiled with the one from the ubuntu oracular repo and there are a bunch of options enabled in the latter that aren;t in the former. I'm wondering if that's because the repo version has a lot of redundant detaults enabled or ...?
Kei_N has quit [Ping timeout: 246 seconds]
<ePirat> iconoclasthero, its because distro packaging needs to be explicit about the enabled dependencies
Suchiman has quit [Quit: Connection closed for inactivity]
<ePirat> for a lot of dependencies, ffmpeg's configure will auto-detect them but for distro packaging you do not want to accidentally miss a depepdency that you actually expected to be enabled. So enabling them explicitly makes sure configure will error if they are not found.
<iconoclasthero> that's sort of what i thought. if you have a second, my install script is https://github.com/iconoclasthero/install-ffmpeg/blob/main/install-ffmpeg#L151 and the ./configure options start at the linked line 151. anything obvious i'm missing?
<iconoclasthero> if not, i'll look through the ubuntu list and go from there.
<iconoclasthero> on 176 I have a list element commented out with `#--enable-vulkan disabled` which isn't really a standard bash thing but it's the only way to comment something out of a list of items where the lines are termianted with ` \`
emmanuelux has quit [Quit: au revoir]
minimal has quit [Quit: Leaving]
Traneptora has joined #ffmpeg
Suchiman has joined #ffmpeg
intrac has quit [Remote host closed the connection]
intrac has joined #ffmpeg
evilscreww has joined #ffmpeg
iliv has quit [Quit: "<paniq> you know when i walk out the door, there is plenty of stupid people. i open irc, there is plenty of intelligent people. so the choice comes easy."]
iliv has joined #ffmpeg
sugoi has quit [Ping timeout: 246 seconds]
NotWarcop has quit [Remote host closed the connection]
rv1sr has joined #ffmpeg
sugoi has joined #ffmpeg
sugoi has quit [Ping timeout: 246 seconds]
evilscreww has quit [Quit: Leaving]
five6184803391 has quit [Remote host closed the connection]
five6184803391 has joined #ffmpeg
faxmodem has quit [Quit: so long and thanks for all the fish]
faxmodem has joined #ffmpeg
Suchiman has quit [Quit: Connection closed for inactivity]
soreau has joined #ffmpeg
<soreau> When I try to stream ffmpeg with an existing nginx instance with this command `ffmpeg -re -i file.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/feed/stream` I get this output:
<soreau> [out#0/flv @ 0x55f9fed78400] Error opening output rtmp://127.0.0.1/feed/stream: Input/output error
<soreau> Error opening output file rtmp://127.0.0.1/feed/stream.
<soreau> Error opening output files: Input/output error
<soreau> It seems it's trying to open the stream link as a file
<soreau> is there a way to tell it that it's a stream and not a file?
YuGiOhJCJ has joined #ffmpeg
coldfeet has joined #ffmpeg
Suchiman has joined #ffmpeg
<kmikita> "-c:v libxvid -qscale:v 2 -maxrate 4854000 -bufsize 3145728" I have exceed maxrate when using libxvid (native mpeg4 well done whith qscale+maxrate). Can I control maxrate with xvid?
Coinflipper has quit [Quit: ​]
Coinflipper has joined #ffmpeg
<kmikita> "qmin" and "qmax" ignored by libxvid?
SystemError has quit [Remote host closed the connection]
YuGiOhJCJ has quit [Quit: YuGiOhJCJ]
lavaball has joined #ffmpeg
SystemError has joined #ffmpeg
coldfeet has quit [Remote host closed the connection]
sopparus has quit [Ping timeout: 260 seconds]
graphitemaster has quit [Ping timeout: 260 seconds]
shikieiki has quit [Ping timeout: 260 seconds]
koi has joined #ffmpeg
rtwo has joined #ffmpeg
Naleksuh has quit [Ping timeout: 260 seconds]
lusciouslover has quit [Ping timeout: 260 seconds]
cheapie has quit [Ping timeout: 260 seconds]
markizano has quit [Ping timeout: 260 seconds]
lusciouslover has joined #ffmpeg
Naleksuh has joined #ffmpeg
sopparus has joined #ffmpeg
cheapie_ has joined #ffmpeg
<kmikita> find solution "-c:v libxvid -qmin 2 -qmax 5 -b:v 3500k -maxrate 4854000 -bufsize 3145728" lets to hold qmin quantizer in the bitrate limits
travisghansen1 has joined #ffmpeg
travisghansen has quit [Ping timeout: 252 seconds]
travisghansen1 is now known as travisghansen
markizano has joined #ffmpeg
Kaybi__2 has joined #ffmpeg
xx has joined #ffmpeg
ttys000 has quit [Ping timeout: 252 seconds]
dreamon has joined #ffmpeg
ttys000 has joined #ffmpeg
graphitemaster has joined #ffmpeg
Kroko has joined #ffmpeg
Kroko has quit [Remote host closed the connection]
sugoi has joined #ffmpeg
sugoi has quit [Ping timeout: 246 seconds]
lemoniter has joined #ffmpeg
emanuele6 has quit [Quit: WeeChat 4.4.1]
lemoniter has quit [Remote host closed the connection]
emanuele6 has joined #ffmpeg
darkapex_ has quit [Ping timeout: 248 seconds]
darkapex_ has joined #ffmpeg
Blacker47 has joined #ffmpeg
j45 has quit [Ping timeout: 276 seconds]
j45 has joined #ffmpeg
alexherbo2 has joined #ffmpeg
dreamon has quit [Ping timeout: 264 seconds]
<vlt> Hello. Is there a better way to get the output of `-filter:a astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level` than piping everything (including stream layout info) into a file and trying to grep every "[Parsed_ametadata_1 ...] frame:..." string?
HerbY_NL has joined #ffmpeg
lavaball has quit [Remote host closed the connection]
<vlt> The re expression, in case anyone is interested :D r"(\[Parsed_ametadata_1 @ .+\]) frame:(?P<frame>\d+) +pts:(?P<pts>\d+) +pts_time:(?P<pts_time>[\d.]+)\s*\1 lavfi.astats.Overall.RMS_level=(?P<rms>-?(?:[\d.]+|inf))"
HerbY_NL has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
beaver has joined #ffmpeg
\\Mr_C\\ has joined #ffmpeg
hightower2 has quit [Ping timeout: 255 seconds]
hightower2 has joined #ffmpeg
lucasta has joined #ffmpeg
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ffmpeg
<soreau> I think everyone here has asked a question at some point in history, and they are still idling for an answer to this day
<iconoclasthero> soreau, where is stream coming from?
<furq> vlt: ametadata=file=-
<soreau> iconoclasthero: in my command, it's file.mp4
<soreau> then -i arg
<soreau> the*
<iconoclasthero> i've played around with this a bit trying to move my mpd output around.
<furq> soreau: i/o error on an rtmp output usually means connection failed or the server closed the connection
<furq> -v verbose will show more info
<furq> or your rtmp server logs
<iconoclasthero> i ended up finding mediamtx
<iconoclasthero> furq, what's the differece between using -v and -loglevel ?
<furq> nothing
<furq> one is easier to type
<iconoclasthero> but you can only turn off output with e.g., loglevel error?
<soreau> but I used -v debug there
<soreau> seems like networking/server is working fine
<soreau> ffmpeg for some reason, is hell bent on opening "rtmp://127.0.0.1/feed/stream" as a file
<JEEB> why do you think so?
<soreau> me?
<furq> [tcp @ 0x557797207f80] Starting connection attempt to 127.0.0.1 port 1935
<furq> that doesn't look like it thinks it's a file
<JEEB> yea, it's TCP most definitely
<soreau> because [tcp @ 0x557797207f80] Successfully connected to 127.0.0.1 port 1935 message in the debug output and no errors in the nginx logs
<soreau> "Opening an output file: rtmp://127.0.0.1/feed/stream."
<JEEB> > fftools/ffmpeg_opt.c: av_log(NULL, AV_LOG_DEBUG, "Opening an %s file: %s.\n", inout, g->arg);
<JEEB> hard-coded
<JEEB> has nothing to do with the actual protocol, which you have very clearly specified as rtmp://
<soreau> ok so what's the issue then
<JEEB> and the TCP logs clearly show that a TCP connection is attempted
<soreau> it successfully connects
<soreau> that's not merely an attempt
<JEEB> if the TCP connection was successful it means that you connected to *something* (on the *TCP* level)
<BtbN> The issue is most likely the server just closing the connection unceremoniously.
<iconoclasthero> have you tried whitelist prot?
<soreau> but no errors in the nginx logs
<iconoclasthero> proto?
<soreau> who is talking to me?
<BtbN> With nginx-rtmp, that happens if you fail the ip-acl-check
<iconoclasthero> yeah, you have some whitelists at the top
<BtbN> it just closes the connection
<JEEB> thus you need to make sure that the thing you are connecting is a) RTMP b) what the path must be
<JEEB> and yea, it is thus mostly on checking the thing you are trying to push towards
<JEEB> since FFmpeg's muxer + proto seems to be doing what it's being asked to do successfully
<JEEB> I would follow BtbN's lead and check if that is the case
<soreau> [tcp @ 0x562c2d38ff80] Connection to tcp://127.0.0.1:1935?tcp_nodelay=0 failed: Connection refused
<soreau> [rtmp @ 0x562c2d38f880] Cannot open connection tcp://127.0.0.1:1935?tcp_nodelay=0
<soreau> This is what I get without nginx running
<JEEB> please read what BtbN says
<JEEB> he specifically seems to have experience with nginx-rtmp
<soreau> well I don't understand what he is saying
<BtbN> You probably don't have 127.0.0.1 in your ACL for that input
<BtbN> or did not define the input "feed" at all, that also causes it to just close the connection
<BtbN> Though I think it logs that case
<soreau> hm.. I don't see how to do any of this
<furq> i think you need debug loglevel set in nginx.conf for it to log disconnects
<furq> or at least something other than the default
<soreau> BtbN: this is my nginx config https://pastebin.com/raw/tN4ZY8kz
<soreau> for rtmp
<furq> the path is /live/stream
<BtbN> Yeah, there simply is no /feed
<soreau> yes but it doesn't work without /live/stream passed to ffmpeg either
<BtbN> And I'm not sure if "allow publish" at the server level is valid
<BtbN> though it does start up, so it can't be totally invalid
<soreau> so what's the syntax?
<soreau> I mean I should be asking nginx guys..
<JEEB> please ask the nginx-rtmp support channel?
<JEEB> aye
<soreau> but I didn't find anything on the net about it
<BtbN> try moving all ACLs into the application
<soreau> I don't even know what you mean by moving and ACL
<soreau> and which app?
<BtbN> You only got exactly one
<BtbN> I don't think those are valid at the server level
<BtbN> So just move them up in there, before the allow play one
<furq> looks like it is
<furq> but you shouldn't need those if the server is only listening on localhost anyway
<BtbN> You do need them
<BtbN> the default is to block everything
<BtbN> It does say it's valid in server context though
<furq> i don't have that anywhere in my config and it works
<furq> but then this is an old nginx
<soreau> this simply is not working
<soreau> I will try and do some more research on the nginx side
<furq> enable debug error logging in nginx if you didn't already
<furq> that should give you something in the logs
<soreau> ok
rsx has joined #ffmpeg
<soreau> I just see a few of these when I restart nginx
<soreau> 2024/09/05 06:59:39 [debug] 2417008#2417008: epoll add event: fd:7 op:1 ev:10000001
<soreau> in error.log
<jprjr> first thing I wold try soreau is removing any lines that begin with allow/deny
<soreau> hm, good idea
<jprjr> get the most minimal config working first, just establish the server + app
<soreau> same error
<jprjr> and what's your ffmpeg publish command look like?
<soreau> I posted it above..
<soreau> sec
<jprjr> I think I joined after you posted it
<soreau> ffmpeg -re -i file.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/feed/stream
<soreau> this is not a publish command in the config, I am trying to run this manually from terminal
<jprjr> change /feed/stream to /live/something-or-other
<soreau> oh fuck you
<soreau> how does that work?????????
<soreau> god damn it
<jprjr> In your nginx config you named the application "live"
<soreau> well well
<JEEB> FFmpeg sucks, right? :P
<jprjr> ffmpeg parses the rtmp url as rtmp://(host)/(application)/(stream)
<soreau> heh
<soreau> jprjr: thank you!!!
<soreau> TIL...
<jprjr> Or well lemme double-check my rtmp terminology here
<jprjr> Where I put (stream) a lot of apps refer to as a stream key
<jprjr> ok yeah I think RTMP, or at least, the nginx rtmp module refers to that last part of the URL as the stream so yeah, /(app)/(stream)
<iconoclasthero> wait, so the solution was to change the suffix of the stream address?
<soreau> well it runs to stream to rtmp but I cannot play the stream sadly
<soreau> iconoclasthero: no
<soreau> iconoclasthero: the identifier
<iconoclasthero> oh, i never got the nginx rtmp module working and give up on it.
<iconoclasthero> so i'm curious how this ends up.
<soreau> probably because of this problem :P
<soreau> I think now I just need to curb the rate or so
<jprjr> What's more accurately iconoclasthero the fix was to make sure the application part of the RTMP url matched the application defined in the nginx config
<iconoclasthero> possibly. i was running audio only and satisficed on mediamtx until the patch for libzmq came through this weekend.
<iconoclasthero> ah.
<jprjr> ie, if you write "application puppies {" in nginx, your RTMP url's path needs to begin /puppies
<iconoclasthero> so in my case i might want to use application mpd
<soreau> ok now I have it working
<soreau> just needed to s/h264/flv/
<soreau> iconoclasthero: so if you want to try again, now is the time :P
<jprjr> Typically I make the application match whatever the conceptual application is
<soreau> jprjr: thank you for pointing that out, I thought it was standard nginx config directive
<soreau> had no idea it meant 'you have to stream here'
<soreau> and thanks to everyone that pointed to the problem, even though it wasn't ffmpeg
<jprjr> like "ingest" for incoming streams, then you could do say, "720p" for transcodes to 720p
<jprjr> np, I wrote a whole app around ffmpeg and the nginx-rtmp-module a few years ago
<soreau> I figure you guys probably get a lot of 'oh I have problem xyz and ffmpeg does not work, so it must be ffmpeg's fault'
zayd has joined #ffmpeg
<soreau> jprjr: nice
<iconoclasthero> soreau, just to be clear what you're doing, you're trying to stream a file via rtmp to nginx's rtmp module so you can access it from outside via your RP as opposed to opening another port?
<soreau> no
<soreau> that was just the bait
<soreau> now I will tell you the switch
<JEEB> anyways, one thing seems to be a thing in general with RTMP
* iconoclasthero waitng with bated breath
<JEEB> the servers never give any info to the client
<soreau> I am using wf-recorder to stream (wlroots) desktop to rtmp
<JEEB> it's kinda OK with servers you host and where you can stare at relevant logs
<JEEB> (if the server even logs disconnects etc)
<JEEB> but lol 3rd party services
<iconoclasthero> well, in my case i'd be using some sort of stream from mpd.
<iconoclasthero> probably start with the named pipe at /tmp/mpd.fifo
<jprjr> If you have your MPD configured to support pipe output (should be default on Unix/Linux) I tend to use that over fifo
<jprjr> Main benefit is (last I checked) MPD will wait for your app to process the audio when you use a pipe, you can get blips in the fifo if you get out of sync
<iconoclasthero> i'm not 100% on my terminology here, i thought that using output type "fifo" path "/tmp/mpd.fifo" is called a named pipe
<iconoclasthero> while output type "pipe" was an unnamed pipe.
<jprjr> So I like to configure a pipe output and have it run a script that execs into ffmpeg. When I need to change something, edit the script, toggle the output
<jprjr> Let me double-check my MPD terminology here, you're right that a fifo is technically a named pipe
minimal has joined #ffmpeg
<iconoclasthero> b/c ffmpeg libzmq is working with the fifo but not with a direct [unnamed] pipe where mpd calls command: "ffmpeg -hide_banner -f s16le -ar 48000 -ac 2 -i - -f mpegts zmq:tcp://127.0.0.1:5555 >>
<iconoclasthero> /var/log/mpd/ffmpeg.log 2>&1"
<jprjr> ok yeah s, in MPD, a fifo output is a named pipe
<jprjr> But there's also MPD's "pipe" output which is really a subprocess
<iconoclasthero> right, and i've got that working with rtsp with mpd calling ffmpeg internally and then it goes to mediamtx and then i pick that up from outside.
<jprjr> I do something similar - MPD calls ffmpeg, but I just do mpegts over udp to mediamtx
<iconoclasthero> that was actually leads into one of my next questions: what formats can mpegts use?
<jprjr> for audio - nearly all the AAC variants (unsure about xHE-AAC, I think that would require LATM instead of ADTS muxing), AC3/EAC3, MP3, Opus, tons of others
<jprjr> But for the purposes of going into MediaMTX and presumably out as HLS - AAC, AC3/EAC3, MP3, Opus
<jprjr> The mediamtx readme lists the codecs it accepts with udp+mpegts
<vlt> furq: Thanks!
<Kaybi__2> Damn there is a lot of action right now =D
<Kaybi__2> I've had some conversations with intrac tonight and we didn't manage yet to find a solution to my issue, would someone want to try to help me as well? O:3
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ffmpeg
<iconoclasthero> so briefly, i had tried libzmq because someone here said they used it but when i compiled ffmpeg with it, it ended up broken, patch came through sunday or monday and i've been using that w/o mediamtx since.
zmt01 has joined #ffmpeg
<iconoclasthero> i've got autossh opening a tunnel and then just catching the zmq from localhost
<iconoclasthero> on some level I wanted to try to push as much traffic through nginx as possible, but even with the theoretical ability to use the tcp stream module, it seems like a lot of hastle to save an open port.
<iconoclasthero> (which, using an autossh tunnel does anyway)
sonicrules1234 has quit [Ping timeout: 276 seconds]
<iconoclasthero> but for the purposes of this discussion, if the mpeg-ts container can hold opus then I'm happy. i just noticed this morning that mpd was saying...
<iconoclasthero> ffmpeg was saying...
sonicrules1234 has joined #ffmpeg
zmt00 has quit [Ping timeout: 276 seconds]
<iconoclasthero> Stream #0:0[0x100]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s
<iconoclasthero> presumably a 384 kb/s mp2 is sufficient for audio
* soreau withers away on the vine
<soreau> Thanks again folks
soreau has left #ffmpeg [Leaving]
<Kaybi__2> I'm trying to create segments on-demand of a video file to create a HLS stream
<Kaybi__2> My sample file is a h265 video with eac3 audio
<Kaybi__2> I'm extracting keyframes pts from my file using ffprobe which gives me this sample output:
<Kaybi__2> - 0.000000
<Kaybi__2> - 4.963000
<Kaybi__2> - 9.927000
<Kaybi__2> - 13.096000
<Kaybi__2> - 16.266000
<Kaybi__2> When I run this ffmpeg command:
<Kaybi__2> > ffmpeg -i sample.mkv -c:v copy -c:a copy -hls_time 1us -hls_list_size 0 output.m3u8
<Kaybi__2> I get segments that are cut precisely at these keyframes which is good and expected!
<Kaybi__2> But when I run this ffmpeg command:
<Kaybi__2> > ffmpeg -ss 13.096000 -to 16.266000 -i sample.mkv -c:v copy -c:a copy -f mpegts segment-003.ts
<Kaybi__2> The segment generated is not the same that the upper command generated (duration is 6s vs expected 3s) as if my keyframe was not being used..
<Kaybi__2> When I analyze packets through ffprobe on these two different segments I can see that the good one only presents one heading keyframe while the bad segment contains many keyframes
<Kaybi__2> So the question is: How can I create a single segment using the exact same keyframes that ffmpeg is using when generating the whole playlist without transcoding?
<Kaybi__2> For information: On a h264 video + aac audio, those commands seems to work pretty nicely
<jprjr> iconoclasthero: so in your example ffmpeg cli you didn't specify an output codec though I'm assuming you know that
<jprjr> iconoclasthero: so that bitrate + codec combo is likely just a default for mpeg-ts. But yeah you can do Opus. I haven't tried udp+mpegts+opus+mediamtx specifically but the docs indicate you can do that
<jprjr> I'll be honest I'm not sure what zeromq does with ffmpeg, never used it
<iconoclasthero> @jpjr by any chance do you have any idea why mpd/ffmpeg can't make the unnamed pipe output to stdin work with zmq? i can get ffmpeg to use cat /tmp/mpd.fifo | ffmpeg stdin from the named fifo pipe, i can just use the named pipe as -i /tmp/mpd.fifo
<iconoclasthero> but i cannot get it to work where mpd calls ffmpg directly in the type "pipe" with ffmpeg in command
<iconoclasthero> ok
<iconoclasthero> sorry, i was typing with your responses off screen.
<jprjr> All good
<iconoclasthero> ffmpeg errors out with "Address family not supported by protocol (src/ip_resolver.cpp:542) / Aborted"
<iconoclasthero> oh, i don't know if this is relevant, but ffmpeg says this: `Input #0, s16le, from 'fd:':`
<iconoclasthero> if fd is file descriptor it occured to me it might need a number, eg., fd1
<jprjr> You could try 'pipe:0' instead of '-' for your input in ffmpeg but I'm pretty confident it knows '-' means stdin
<iconoclasthero> and i have no idea why ip_resolver would be in the mix since i'm using zmq:tcp://127.0.0.1:5555
<iconoclasthero> yeah, same thing.. and i see the same stream/bitrate info so it's getting the stream just fine i think. it's sending it to 127.0.0.1:5555 that appears to be the issue.
<jprjr> Question, are you using your ffmpeg command line directly in your mpd.conf file, or are you calling a script that then calls ffmpeg?
<iconoclasthero> does src/ip_resolver.cpp:542 mean that the error is from the line 542 of ip_resolver.cpp in the source code?
<iconoclasthero> the former.
<iconoclasthero> wait, it works when I call everything from the cli (i've not actually written this into a script or alias yet)
<iconoclasthero> but the rtsp outputs i have work when i call them from mpd directly and that's simpler so i was hoping i could do the same with zmq
<jprjr> I wonder if MPD is doing something odd with parsing the CLI, right
<iconoclasthero> command "ffmpeg -loglevel error -hide_banner -y -f s16le -ar 48000 -ac 2 -vn -i - -c libopus -b:a 64k -f rtsp rtsp://localhost:8554/mystream"
<jprjr> that error message about ip_resolver is coming from libzmq
<iconoclasthero> i looked into that briefly by looking at the ps aux and tried to escape the address, etc., and it didn't help
dreamon has joined #ffmpeg
<jprjr> yeah, I always just make mpd pipe outputs call like /home/me/bin/whatever, and then update said script
<jprjr> That way I rule out anything with how MPD parses things, calls processes, etc
<iconoclasthero> i suppose i can change my enable alias to an enable script and when i call the zmq thing it can just start ffmpeg in a detached screen
<jprjr> Question is MPD running as the same user as you or is it running as a daemon under systemd?
<iconoclasthero> the latter
<jprjr> Hm so, if your systemd unit is restricting any syscalls or anything that may have something to do with it?
<iconoclasthero> do you think that it if that was the case rtsp would still work?
<jprjr> Unsure
<jprjr> Since it works from your local CLI which is really a pretty different environment, that makes me wonder if either there's a restriction from systemd, or maybe libzmq relies in some environment variable being set, things like that
<iconoclasthero> mpd 323004 0.0 0.0 2864 1680 ? S 09:53 0:00 sh -c -- ffmpeg -hide_banner -f s16le -ar 48000 -ac 2 -i pipe:0 -f mpegts -acodec libopus -b:a 256k zmq:tcp://127.0.0.1:5555 >> /var/log/mpd/ffmpeg.log 2>&1
<iconoclasthero> mpd 323005 0.3 0.0 123140 20028 ? S 09:53 0:00 ffmpeg -hide_banner -f s16le -ar 48000 -ac 2 -i pipe:0 -f mpegts -acodec libopus -b:a 256k zmq:tcp://127.0.0.1:5555
<iconoclasthero> that's what ps aux shows when it tries to start it from the pipe output, mpd says broken pipe and ffmpeg says the thing about the address family which is apparently coming from zmq
<iconoclasthero> i keep scrolling down the user list hoping to see "lunalovegood" who told me about zmq in the first place, lol
<jprjr> In order to make things match more closely - I would try running MPD as yourself in the CLI, same way you're running your zmq ffmpeg command
<jprjr> If it works there - then you know it's likely some environment issue
<iconoclasthero> that is excellent troubleshooting advice.
<iconoclasthero> i need to go back and figure out how that's done since when pipewire came through i flat out refused to switch from a daemon.
<jprjr> Looking at the libzmq source, I do see calls to getenv, looks like it needs to create some kind of temp path at some point in some ip-related code but, I don't know if that's really the issue or not. Just that there seem to be cases where it looks at environment variables
<iconoclasthero> well, it's helpful to know WHERE the problem is... if it's not mpd and it's not ffmpeg then i can stop barking up those trees
<iconoclasthero> but yeah, i'll stop the systemd service and run it as $USER
<iconoclasthero> i might wait til this cover of knockin on heavens door is over though, lol
lavaball has joined #ffmpeg
<jprjr> Also re: pushing traffic through nginx and reducing ports, I've had more success using haproxy for port multiplexing, if that's what you're talking about
<jprjr> To do things like, ssh, ssh-over-tls, https, irc all on port 443
<iconoclasthero> huh.
<iconoclasthero> what irc do you use?
<iconoclasthero> please say quasselcore/quasselclient!
<jprjr> I run a bouncer - soju
<jprjr> then have gamja as a web interface, which is what I'm using now actually
<iconoclasthero> "haproxy" was a word i ran across recently but haven't investigated
<iconoclasthero> i stopped using a > decade-old router and had to open all the ports on a new router so it was time to rationalize what was open for several obvious reasons.
Kaybi__2 has quit [Quit: Client closed]
<jprjr> Yeah, the issue with nginx is a port can either be an HTTP listener, or a stream listener, not both. You could, I think (maybe?) define a port 443 stream listener then proxy to https on some other port, or a unix pipe, etc
<jprjr> but I don't think nginx supports using the PROXY protocol with proxied tcp connections (it only supports it for listeners) so your backend services may not have a way to determine the client IP
<jprjr> So I do haproxy in front of nginx, have haproxy use the PROXY protocol when communicating with nginx, configure nginx to get the IP from that so various logs etc show the client IP
<jprjr> Then in haproxy you can do content inspection, or route based on the SNI of the TLS connection, things like that
<iconoclasthero> i get to keep everything already on nginx there ?!!? that's fantastic if so.
<jprjr> Oh yeah
<iconoclasthero> so the theoretical lift (in my mind) to get everything moved from nginx to haproxy just got a hell of a lot lighter.
<jprjr> When you define the listener in nginx you just add the proxy_protocol directive, like "listen 8443 proxy_protocol;", and use the realip module to specify you'll allow the realip from 127.0.0.1
<jprjr> * "listen 127.0.0.1:8443 proxy_protocol" - probably just have it listen on localhost
<iconoclasthero> this is in nginx.conf or the sites_avalable confs?
<jprjr> then in haproxy there's a flag named like, "send-proxy" that will enable the proxy protocol
<jprjr> I think you need it defined on very "listen" directive
<jprjr> Can't recall if that's one of those settings that will get inherited by duplicate listen directives or not
<iconoclasthero> so ... erver {
<iconoclasthero> listen 80;
<iconoclasthero> in my sites-enabled
<jprjr> I think so? That's how it is in my config technically but also, I don't actually define listeners like that
<jprjr> My config is more like: server { include snippets/listen_https.conf; }
<jprjr> That way if I do have to change something I just change that included snippet file and reload
realtehreal has joined #ffmpeg
<jprjr> instead of updating all my sites-available conf files
<iconoclasthero> i think that if i have to go through and change everything in sites-enabled then i should probably do that as well... i mean i'm making the change anyway, right?
<jprjr> So I have it defined on every listen directive since that's included multiple times, so I'm not 100% sure if you *have* to define it on every listen directive or not
<jprjr> because I know some flags like, ipv6only - you only have to define on 1 listen directive and it gets inherited
soreau has joined #ffmpeg
<jprjr> Anyway we've gotten pretty far from ffmpeg lol
<soreau> I am getting this error when attempting to build my applications against latest ffmpeg:
<soreau> error: 'AVFilterLink' {aka 'struct AVFilterLink'} has no member named 'frame_rate'
<soreau> has this changed recently? the docs seem to say it should still exist
<iconoclasthero> yes, we have and i appreciate the info.
<soreau> and by latest, I mean git ma*
<soreau> master
<iconoclasthero> my ffmpeg is out of date again. :(
<jprjr> looking at latest release it's there, not sure about latest git
alexherbo2 has quit [Remote host closed the connection]
<soreau> jprjr: where is it defined?
<soreau> oh "Definition at line 794 of file avfilter.h."
* soreau looks
<jprjr> Looks like it's not in latest git
<soreau> ah
alexherbo2 has joined #ffmpeg
<soreau> So what's the solution, forget/nix it, or some complex replacement?
* soreau git log's
<soreau> -p
<jprjr> Guess it depends on what you're doing with that field
<soreau> lavfi: move AVFilterLink.frame_rate to FilterLink.. a23d565ea7
<jprjr> I think that implies they made it an internal field
<soreau> so just nix it
<jprjr> Since FilterLink isn't prefixed it's probably just kept private
<soreau> because things seem to work fine without it
alexherbo2 has quit [Remote host closed the connection]
<soreau> what might be the next release date with this change? (if that's not asking too much ;)
<jprjr> I've never used AVFilterLink myself, at least not directly. I use avfilter_link() to link filter contexts together
<soreau> I see
\\Mr_C\\ has quit [Remote host closed the connection]
Kaybi__2 has joined #ffmpeg
lavaball has quit [Quit: lavaball]
lavaball has joined #ffmpeg
dreamon has quit [Ping timeout: 255 seconds]
\\Mr_C\\ has joined #ffmpeg
\\Mr_C\\ has quit [Remote host closed the connection]
\\Mr_C\\ has joined #ffmpeg
dreamon has joined #ffmpeg
Tano_ has quit [Quit: WeeChat 4.3.2]
sugoi has joined #ffmpeg
sugoi has quit [Ping timeout: 252 seconds]
coldfeet has joined #ffmpeg
beaver_ has joined #ffmpeg
beaver has quit [Ping timeout: 260 seconds]
Kaybi__2 has quit [Quit: Client closed]
Kaybi__2 has joined #ffmpeg
ewomer has quit [Quit: WeeChat 4.4.1]
coldfeet has quit [Remote host closed the connection]
Rena has quit [Read error: Connection reset by peer]
Rena has joined #ffmpeg
beaver_ is now known as en_detente`
jarrhed has quit [Ping timeout: 260 seconds]
en_detente` is now known as baby`said`no
jarrhed has joined #ffmpeg
Kaybi__2 has quit [Quit: Client closed]
dreamon has quit [Ping timeout: 265 seconds]
lucasta has quit [Quit: Leaving]
realtehreal has quit [Ping timeout: 252 seconds]
pocketprotector has joined #ffmpeg
stolen has joined #ffmpeg
rodeo has quit [Ping timeout: 252 seconds]
rodeo has joined #ffmpeg
Sketch has quit [Ping timeout: 248 seconds]
halvut has joined #ffmpeg
lavaball has quit [Quit: lavaball]
HerbY_NL has joined #ffmpeg
HerbY_NL has quit [Client Quit]
rsx has quit [Quit: rsx]
sugoi has joined #ffmpeg
<iconoclasthero> jprjr: https://paste.rs/KGkF3.txt #33
Sketch has joined #ffmpeg
<iconoclasthero> https://bpa.st/VICIW 85, 95
<iconoclasthero> commenting line #33 out of the unit file and it works.
Kaybi__2 has joined #ffmpeg
<Kaybi__2> Hi guys, is there:
<Kaybi__2> - a way to limit amount of generated segments on this command?
<Kaybi__2> - a way to start generating upon a specific segment (by number, or pts_time I have both)
<Kaybi__2> > ffmpeg -i sample.mkv -c:v copy -c:a copy -f ssegment -segment_list index.m3u8 -segment_time 1us segment%03d.ts
sugoi has quit [Ping timeout: 252 seconds]
HerbY_NL has joined #ffmpeg
zsoltiv_ has quit [Ping timeout: 255 seconds]
coldfeet has joined #ffmpeg
<Kaybi__2> Well -ss and -to are fine to limit the number of generated segments, now I'll have to find a way to keep timestamps from the original file and the segment numbering (since it starts with 0 on each new command)
HerbY_NL has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
baby`said`no has quit [Remote host closed the connection]
Renb has joined #ffmpeg
Rena has quit [Ping timeout: 260 seconds]
<another|> possibly `-initial_offset` ?
Kaybi__2 has quit [Ping timeout: 256 seconds]
jarrhed has quit [Remote host closed the connection]
zsoltiv_ has joined #ffmpeg
jarrhed has joined #ffmpeg
HerbY_NL has joined #ffmpeg
lucasta has joined #ffmpeg
HerbY_NL has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Tano has joined #ffmpeg
rvalue- has joined #ffmpeg
rvalue has quit [Ping timeout: 265 seconds]
rvalue- is now known as rvalue
<jprjr> iconoclasthero: interesting, maybe libzmq is using AF_NETLINK for some kind of IPC thing?
<iconoclasthero> got me, but you were right that it was systemd. that unit file came directly from the compiled git source of mpd 0.23
<iconoclasthero> so that's something Kellerman et al. put in there for some reason. replacing it with these and it works:
<iconoclasthero> IPAddressAllow=localhost
<iconoclasthero> IPAddressDeny=any
sugoi has joined #ffmpeg
Sketch has quit [Ping timeout: 246 seconds]
soreau has left #ffmpeg [Leaving]
<iconoclasthero> jprjr ^
sugoi has quit [Ping timeout: 260 seconds]
minimal has quit [Quit: Leaving]
HerbY_NL has joined #ffmpeg
CAT_S has joined #ffmpeg
lavaball has joined #ffmpeg
coldfeet has quit [Remote host closed the connection]
Sketch has joined #ffmpeg
intrac has quit [Quit: Konversation terminated!]
intrac has joined #ffmpeg
<jprjr> Yeah, I'm guessing that's all MPD itself really needs for 99% of use-cases
<jprjr> Not sure how many other people are spawning ffmpeg, which then pulls in libzmq, right
apxx has joined #ffmpeg
HerbY_NL has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
HerbY_NL has joined #ffmpeg
CAT_S has quit [Ping timeout: 246 seconds]
HerbY_NL has quit [Client Quit]
CAT_S has joined #ffmpeg
Blacker47 has quit [Quit: Life is short. Get a V.90 modem fast!]
jemius has joined #ffmpeg
Traneptora has quit [Quit: Quit]
Traneptora has joined #ffmpeg
jemius has quit [Quit: Leaving]
ttys000 has quit [Ping timeout: 265 seconds]
ttys000 has joined #ffmpeg
sihloo has quit [Ping timeout: 252 seconds]
sihloo has joined #ffmpeg
<iconoclasthero> well, jptjr, i think it would be great if mpd could be compiled with zmq directly and cut out ffmpeg...and since it'll never happen, i might as well include rtsp and webrtc in this hypothetical mpd that will never exist.
<iconoclasthero> but the autossh tunnel and zmq have been remarkably stable even as I've moved my laptop back and forth from 2 lans.
rv1sr has quit []
Juest has quit [Ping timeout: 248 seconds]
Juest has joined #ffmpeg
halvut has quit [Ping timeout: 252 seconds]
lavaball has quit [Remote host closed the connection]
lairv has joined #ffmpeg
sugoi has joined #ffmpeg
<lairv> I have an issue with this command: 'ffmpeg -i bg.mp4 -c:v libvpx-vp9 -i overlay.webm -filter_complex "[0:v][1:v]overlay=shortest=1[out]" -map "[out]" merged.mp4'
<lairv> it combines a background video with a foreground video, and the results has the length of the shortest video
<lairv> however in my tests, the output has actually one less frame than the shortest video
Juest has quit [Ping timeout: 252 seconds]
sugoi has quit [Ping timeout: 260 seconds]
Juest has joined #ffmpeg
CAT_S has quit [Ping timeout: 245 seconds]
hightower2 has quit [Remote host closed the connection]
five6184803391 has quit [Remote host closed the connection]
five6184803391 has joined #ffmpeg
stolen has quit [Quit: Connection closed for inactivity]
SuicideShow has quit [Ping timeout: 246 seconds]
SuicideShow has joined #ffmpeg
emmanuelux has joined #ffmpeg
kron has quit [Remote host closed the connection]
kron has joined #ffmpeg
JanC has quit [Remote host closed the connection]
Mavrik has quit [Quit: Ping timeout (120 seconds)]
JanC has joined #ffmpeg
Mavrik has joined #ffmpeg
grufwub has quit [Remote host closed the connection]
grufwub has joined #ffmpeg
HarshK23 has quit [Quit: Connection closed for inactivity]
minimal has joined #ffmpeg
johnjaye has quit [Ping timeout: 260 seconds]
johnjaye has joined #ffmpeg
yans has joined #ffmpeg
Sketch has quit [Ping timeout: 260 seconds]
cheapie_ is now known as cheapie
Fischmiep has quit [Remote host closed the connection]
Fischmiep has joined #ffmpeg
yuckey2d has quit [Ping timeout: 272 seconds]
Sketch has joined #ffmpeg
Sketch has quit [Ping timeout: 246 seconds]
Sketch has joined #ffmpeg
darkapex_ has quit [Remote host closed the connection]
darkapex_ has joined #ffmpeg
sugoi has joined #ffmpeg
sugoi has quit [Ping timeout: 246 seconds]
yans has quit [Remote host closed the connection]
yans has joined #ffmpeg
<travisghansen> I have a command to stream that I want to add an ability to simulcast to using tee...before even trying multiple outputs I am trying a single and it fails...what am I doing wrong: -f rtsp rtsp://127.0.0.1:8554/streamystreamy vs -f tee '[f=rtsp]rtsp://127.0.0.1:8554/streamystreamy'
five6184803391 has quit [Remote host closed the connection]
five6184803391 has joined #ffmpeg
<travisghansen> this is the failure: https://pastebin.com/MiGh8Fmk
chiselfuse has quit [Ping timeout: 260 seconds]
chiselfuse has joined #ffmpeg
<another|> >Since the tee muxer does not represent any particular output format, ffmpeg cannot auto-select output streams. So all streams intended for output must be specified using "-map". See the examples below.
SystemError has quit [Remote host closed the connection]
<travisghansen> ah, thank you kindly
yans has quit [Remote host closed the connection]
<travisghansen> I'm an idiot with mapping (and ffmpeg in general) but that should push me over the hill for this setup, thanks
SystemError has joined #ffmpeg