[Ffmpeg-devel-irc] ffmpeg.log.20190223

burek burek021 at gmail.com
Sun Feb 24 03:05:03 EET 2019


[04:05:39 CET] <Aelius> I have a video that ffmpeg will not strip the subtitles from and I'm so confused
[04:06:01 CET] <Aelius> using -sn - no dice
[04:06:08 CET] <Aelius> -map 0:0 -map 0:1
[04:06:11 CET] <Aelius> no dice
[04:06:15 CET] <Aelius> the subtitle file is still there
[04:06:44 CET] <Aelius> it's even generating corrupt mp4 files because its including the subtitle as a toggleable thing in the mp4 video
[04:06:53 CET] <Aelius> which afaik is illegal for mp4 container
[04:09:10 CET] <Aelius> nvm I'm drunk
[04:11:09 CET] <Aelius> but somehow firefox still thinks the output mp4 is corrupt
[04:19:32 CET] <Aelius> yeah it's broken and I don't know why
[04:20:00 CET] <Aelius> trying to convert this mkv to mp4, it tells me it cant automatically select a codec for the subtitle file
[04:20:35 CET] <Aelius> so I convert the video without the subtitle and I extract the subtitle and attempt to burn the subs over the mp4
[04:21:43 CET] <Aelius> but actually
[04:21:46 CET] <Aelius> I was right before
[04:21:48 CET] <Aelius> Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s
[04:22:10 CET] <Aelius> this is part of the mp4 no matter what I do to tell ffmpeg to not include a damn subtitle
[04:22:11 CET] <Aelius> please help
[04:22:14 CET] <another> -dn
[04:23:30 CET] <another> or -map -0:2
[04:23:52 CET] <Aelius> Why wasn't the inclusive -map working, though?
[04:24:06 CET] <Aelius> shouldnt that only keep what I've explicitly mapped?
[04:24:09 CET] <another> good question, dunno
[04:24:17 CET] <another> should afaik
[04:26:48 CET] <Aelius> Stream map '0:2' matches no streams.
[04:26:57 CET] <Aelius> what is going on
[04:28:12 CET] <Aelius> it clearly says there's a stream 0:2, and then gives me that error when I try to deselect it
[04:28:47 CET] <Aelius> Unsupported codec with id 100359 for input stream 2
[04:29:29 CET] <Aelius> my best guess is that because there's some kind of unsupported ... something... in this file, ffmpeg is just completely not touching it no matter what I attempt
[04:33:43 CET] <furq> Aelius: pastebin the command line and output
[04:51:44 CET] <Aelius> furq: http://sprunge.us/ND9m2m
[04:53:18 CET] <Aelius> http://sprunge.us/zRCoBa ffprobe of the original file, which contains a lot of unsupported errors
[05:07:59 CET] <kandinski> how can I input BayerRG8 images into mmpeg? I'm looking at the ffmpeg.org documentation but can't find how. Is there another keyword I should search for?
[05:10:41 CET] <kandinski> in particular, I'm looking at decoding BayerRG8 images.
[05:13:01 CET] <kandinski> I don't have a video container: the device I'm working with just provides raw bayer frames, no header.
[05:17:20 CET] <kandinski> looking at the output of -pix_fmts, I see a bunch of 8-bit bayer formats, but they are named differently from the way the camera documentation does it.
[05:17:52 CET] <Aelius> what the hell..... I output it to webm and somehow 5s into the video, the width and height resolution swaps
[05:18:01 CET] <Aelius> grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
[05:21:34 CET] <kandinski> ok, I'm going to guess that BayerRG8 is what ffmpeg calls bayer_rggb8
[08:04:41 CET] <orlcp440> I have code that extracts PCM s24be audio from a matroska .mkv file and then send it over IP using RTP. However, I have to send an RTP packet every 1ms but right now it sends it way faster than that. What module is responsible to keep a packet rate (bitrate ?) constant when sending RTP packets
[10:12:34 CET] <Rooli> Hello Guys!
[10:13:48 CET] <Rooli> Does anyone here who know about NVENC and Nvidia Chips?
[10:14:22 CET] <Rooli> I would like to buy an Nvidia Card to make video encoding faster.
[10:14:52 CET] <Rooli> The new Turing chip has new features, like B-fames for x265
[10:16:04 CET] <Rooli> If I buy Pascal based card that does not support. So my question is: Is this HW feature affects ffmpeg in any way or not?
[10:18:35 CET] <Rooli> For example: I buy a Pascal 1060 or 1070, and I want to convert an AVC to x265 with 4 B-frames enabling NVENC. What will be the results? Also Turing chips has 15% quality increase in encoding.
[10:19:14 CET] <Rooli> Are these new features take effects in streaming only, or in ffmpeg too?
[10:21:57 CET] <Rooli> I think if I use ffmpeg with the command I write it has to be used by x265.exe in ffmpeg and using the GPU as a CPU and I have to have the same result no matter what HW I'm using.
[10:22:30 CET] <ritsuka> x265 is a hevc/h.265 encoder
[10:22:48 CET] <ritsuka> the nvidia gpu has its own h.265 encoder
[10:23:04 CET] <ritsuka> unrelated to x265
[10:24:20 CET] <Rooli> so if I use FFMPEG's x265 encoding commands with NVENC enabled, then FFMPEG uses the GPU's h265 encoder instead of the builtin library?
[10:25:02 CET] <Rooli> and also relies on the features of the hardware, no matter what CLI I use?
[10:25:11 CET] <ritsuka> it makes no sense, you either use x265 or the nvidia encoder
[10:25:39 CET] <ritsuka> if you tell ffmpeg to use nvenc, it will use nvenc
[10:26:17 CET] <Rooli> So Nvidia's GPU encoding is totally different than encoding with CPU?
[10:26:40 CET] <ritsuka> right, it's a piece of hardware integrated in the gpu
[10:26:54 CET] <Rooli> so let me give you an example.
[10:28:39 CET] <Rooli> I mentioned B-frames for x265. If I want to encode an x265 video with B-frames I can do it with My CPU with no problem, but it will be very slow. If I want to encode it with GPU, I have to have a Turing Chip inside, (as Pascal doesn't support it) no matter what CLI I Write. Is it correct?
[10:29:28 CET] <ritsuka> first, the video format is h.265, x265 is an encoder that outputs h.265.
[10:29:41 CET] <Rooli> ok
[10:29:52 CET] <ritsuka> And yes, the nvenc encoder will need hardware that supports b-frames
[10:31:52 CET] <Rooli> So If I want to save money and buy a GTX 1060 or 1070 and I try to make h265 videos using the card then I will not be able to produce h265 videos only in the way that the GPU allows.
[10:32:42 CET] <Rooli> Maybe I have to wait for the 1160
[10:33:10 CET] <Rooli> ritsuka, thank you very much for your help!
[13:59:48 CET] <Paramonins> Hello, I can not make a reliable stream from my Icecast server to Youtube with ffmpeg, please help. More details here: https://stackoverflow.com/questions/54841748/ffmpeg-youtube-streaming-issues
[14:01:08 CET] <JEEB> full uncut log from a known set of command line parameters onto a pastebin-like thing kthx
[14:01:11 CET] <JEEB> then link here
[14:01:53 CET] <JEEB> also for the record, -re will force (at least one thread if not all) sleep until the point of the next frame
[14:02:00 CET] <JEEB> that's how it emulates "real time"
[14:02:25 CET] <JEEB> but that's just one thing, I will not do further guesswork without a full uncut -v verbose log at the very least
[14:02:44 CET] <JEEB> (verbose level is the next one from normal, and has some extra info there while not being full-o-spam yet)
[14:02:52 CET] <JEEB> you can 2> ffmpeg.log
[14:02:56 CET] <Paramonins> thanks, can I just remove `-re` for the start?
[14:03:35 CET] <JEEB> not sure if that might go too fast then. usually I utilize something else to make a TCP or UDP stream which is going real-time so as to take the rate control out of ffmpeg.c
[14:03:47 CET] <JEEB> anyways, I'd like to see the full uncut logs with -v verbose
[14:04:16 CET] <JEEB> well you can redact credentials of course
[14:04:19 CET] <JEEB> but you know what I mean :P
[14:04:26 CET] <Paramonins> ok, let me create the log..
[14:09:44 CET] <Paramonins> here you go: https://pastebin.com/Ygh1WHZB
[14:09:53 CET] <JEEB> cheers
[14:10:30 CET] <JEEB> that hasn't finished yet
[14:10:56 CET] <JEEB> at least it hasn't failed yet
[14:11:28 CET] <JEEB> since it should say with -v verbose how many packets were read/decoded/encoded/written
[14:11:32 CET] <JEEB> at the end
[14:12:15 CET] <Paramonins> its a stream so it will not finish , the problem here is that Youtube live stream starts but saying that 65535x65535 is not supported
[14:12:35 CET] <Paramonins> anothe this is that lib
[14:12:55 CET] <Paramonins> sorry, 1 min
[14:14:11 CET] <Paramonins> Another thing is libx264 stops at this line:
[14:14:11 CET] <Paramonins> [libx264 @ 0x55ce63a05ae0] profile Constrained Baseline, level 4.0
[14:14:11 CET] <Paramonins> But if I am using flv format libx264 does initialize, at least I can see lines like
[14:14:11 CET] <Paramonins> [libx264 @ 0x563bdde386a0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html ...
[14:14:42 CET] <Paramonins> Can I just press [q] in my console so you can get the full log?
[14:14:53 CET] <JEEB> I'd say yes
[14:15:07 CET] <JEEB> also what is that thing with the flv / not flv?
[14:15:28 CET] <JEEB> you could attach the command to the log :P
[14:16:05 CET] <Paramonins> done https://pastebin.com/ehgD9WBC
[14:16:27 CET] <Paramonins> Please see
[14:16:28 CET] <Paramonins> https://stackoverflow.com/questions/54841748/ffmpeg-youtube-streaming-issues
[14:16:40 CET] <Paramonins> I have tried using `flv` format but it is unstable
[14:16:55 CET] <Paramonins> I have found that `fifo` format has reconnection options
[14:17:02 CET] <Paramonins> so tried that
[14:17:56 CET] <JEEB> I haven't worked with the fifo output and to be honest I'm not even sure if it does the required re-init
[14:18:48 CET] <Paramonins> ok, do you have any idea why "av_interleaved_write_frame(): Broken pipe" may be happening?
[14:18:58 CET] <JEEB> connection was closed from the other side is the most common reason
[14:19:13 CET] <JEEB> for network output that is
[14:19:21 CET] <Paramonins> Yes, I closed it by pressing [q] to get the complete log
[14:19:31 CET] <Paramonins> aha
[14:19:33 CET] <JEEB> no, that closes it from your side
[14:19:50 CET] <JEEB> which leads it to writing left-over frames and the footer if there is one
[14:19:56 CET] <Paramonins> is there a way to tell ffmpeg re-connect automatically?
[14:19:56 CET] <JEEB> and then closing the connection
[14:20:03 CET] <JEEB> no
[14:20:07 CET] <JEEB> also it's protocol specific
[14:20:22 CET] <JEEB> not to mention that since you've thrown random fifo stuff there I'm not even sure if your thing is doing the right thing
[14:20:43 CET] <JEEB> it doesn't help that you are not showing which command you utilized for the pastebin you posted
[14:21:09 CET] <JEEB> I am not sure if the fifo thing you're using is even supposed to work like you're trying to utilize it - and it doesn't help that you don't post the command line
[14:21:23 CET] <Paramonins> command: https://pastebin.com/V8CFrQ19
[14:21:43 CET] <JEEB> (next time please post them together then posting a log)
[14:22:03 CET] <Paramonins> ok, sure
[14:22:05 CET] <JEEB> ok, so the fifo thing at least lets you set up the sub-muxer
[14:22:28 CET] <JEEB> but yea, most likely rtmp_live does not get passed through for example
[14:22:39 CET] <JEEB> or maybe it is if it's the protocol
[14:22:48 CET] <JEEB> this looks messy and I have no idea how much of a hack the fifo thing is
[14:23:08 CET] <Paramonins> I have tried w/o rtmp_live with the same result, let me try one more time....
[14:23:17 CET] <JEEB> yea, that was my bad
[14:23:20 CET] <JEEB> it's a protocol option probably :P
[14:23:39 CET] <JEEB> and your protocol still is rtmp
[14:23:46 CET] <JEEB> although how the flying asdf is that even working
[14:24:00 CET] <JEEB> how is a "muxer" supposed to retry stuff
[14:24:23 CET] <JEEB> so many questions due to how this breaks the layers of abstraction
[14:25:06 CET] <JEEB> and since this doesn't seem to work at all for you to begin with it really sounds like whomever made this never tried rtmp or even thought of it when developing it
[14:25:19 CET] <JEEB> unfortunately we've got quite a few of such "some random person's pet module"s in there
[14:25:33 CET] <JEEB> which do work - for some specific use case :P
[14:25:52 CET] <JEEB> and then we get normal users here attempting to use them like they think it should be usable
[14:25:59 CET] <JEEB> *they should be usable
[14:26:20 CET] <JEEB> Paramonins: I would also recommend testing this with a recent FFmpeg master. I think there's some linux builds linked from ffmpeg.org by someone from this channel
[14:26:32 CET] <JEEB> so you can just try running a binary from your home dir
[14:26:51 CET] <JEEB> as in, instead of /usr/bin/ffmpeg it'd be ./ffmpeg for the current directory, for example
[14:26:52 CET] <Paramonins> my original command w/o using fifo: https://pastebin.com/yQRhET0S  - this thing is working, the stream is playable but it randomly stops at diffrent time. Basically yes, I am just trying random command line options... ffmpeg docs are very unclear.
[14:27:14 CET] <JEEB> yea, that looks like normal FLV -> RTMP thing
[14:28:38 CET] <Paramonins> yes, and this just stops playing with "av_interleaved_write_frame(): Broken pipe" and stops with signal 15 caught.
[14:29:27 CET] <JEEB> which means that at some point the other side drops the connection
[14:31:49 CET] <JEEB> if you are OK with spam, look into -debug_ts
[14:31:59 CET] <JEEB> I mean, it spams a whole lot less than -v debug
[14:32:09 CET] <JEEB> but still I think 3-4 lines per frame
[14:33:38 CET] <Paramonins> ok, so `fifo` will not help in this case - when the peer drops the connection. I will try the latest build and use `flv` codec, at least it is working. Weird there is no way to reconnect in case some network error for example.
[14:34:04 CET] <JEEB> s/codec/format/
[14:34:24 CET] <Paramonins> yes, sorry, format
[14:34:32 CET] <JEEB> Paramonins: for various protocols how much you need to do handshaking again would be rather specific to that
[14:34:40 CET] <JEEB> also there usually can be some other reason why it's kicking you off
[14:34:49 CET] <JEEB> and just shrugging that off might not be the right thing to fix
[14:35:53 CET] <Paramonins> agree
[14:37:40 CET] <JEEB> if you're on *nix you might want to stick your process under systemd or upstart or whatever your init system is
[14:37:45 CET] <JEEB> as a one-shot service
[14:37:54 CET] <JEEB> as that will also provide timestamps
[14:37:59 CET] <JEEB> for the log
[14:38:05 CET] <JEEB> esp. if you want to enable stuff like -debug_ts
[14:38:33 CET] <JEEB> then you know when exactly a packet was read from input, when exactly it was passed to decoding/encoding and when it was finally passed on to be written into the FLV writer (That's then connected to the RTMP protocol)
[14:38:50 CET] <JEEB> so you could debug if it's faulty timestamps or a timeout somewhere for some reason
[14:39:26 CET] <JEEB> because both -loop and -re could have interesting interactions if f.ex. loop jumps the input timestamp for some reason
[14:39:27 CET] <Paramonins> I have tried restarting ffmpeg in case of failure - but Youtube live stream URL changes every time, that will not work for me
[14:39:42 CET] <JEEB> and then -re would just sleep() for that large difference
[14:40:06 CET] <Paramonins> testing with ffmpeg-4.1.1 and -v verbose now
[14:40:25 CET] <JEEB> (just grab a master build unless fate.ffmpeg.org is red)
[14:40:31 CET] <JEEB> (for your type of system)
[14:40:44 CET] <JEEB> FATE being the automated test system
[14:41:10 CET] <Paramonins> ok, thanks
[14:42:02 CET] <Paramonins> removed `-re` for testing as well
[14:42:32 CET] <JEEB> since your input is files it might just go too fast in that case
[14:42:48 CET] <JEEB> although it might do better with the audio being live
[14:43:02 CET] <JEEB> so the interleaved writes might just buffer your video frames at encoding speed
[14:44:27 CET] <Paramonins> my video is basically a jpeg file - it always shows a single image
[14:44:32 CET] <Paramonins> as a logo
[14:44:46 CET] <Paramonins> the main content here is audio (music)
[14:45:18 CET] <Paramonins> since its a single image I set `-framerate 1`
[14:45:27 CET] <Paramonins> the minimum framerate possible
[14:45:29 CET] <JEEB> right, it just looked like you had multiple since you had %d
[14:45:32 CET] <Paramonins> saves lots of CPU
[14:45:38 CET] <JEEB> I think you had a pattern there
[14:46:50 CET] <Paramonins> no, that's a single file
[14:48:00 CET] <JEEB> but for a single frame I'm not sure if a generated filter chain would be better that would generate X fps constant input so you wouldn't have to use -loop
[14:48:19 CET] <JEEB> or alternatively you have a HTTP server that never sends out EOF serving the image
[14:48:43 CET] <JEEB> although I'm just thinking aloud at this point
[14:49:16 CET] <JEEB> anyways, test with current version and possibly test with -debug_ts to see if any anomalies in timestamps or so would pop out
[14:49:44 CET] <JEEB> at that point it would be useful to get timestamps in the logs to see the difference of different lines, but for that you'd have to strap your thing into a service system or so
[14:49:45 CET] <Paramonins> yep, thanks a lot! testing now.
[20:31:10 CET] <Guiri> I'm having a bit of trouble understanding the documentation on filters. It looks like I can't use -vf with filter_complex. I'm trying to figure out how to scale down a chain of movies using the concat filter. Here's what I have so far for the CLI chain: https://paste.fedoraproject.org/paste/pT23jIoVGgQMLxS~GKXmhg
[20:31:43 CET] <durandal_1707> Guiri: filters are separated by ,
[20:32:04 CET] <durandal_1707> you can not use -filter_complex and -vf at same time
[20:32:42 CET] <Guiri> So if I use scale with filter_complex is it ,video='scale=...' or ,scale=-2:480?
[20:37:11 CET] <furq> Guiri: if you want to scale after concat then concat=n=3,scale=-2:480
[20:39:08 CET] <Guiri> ty
[22:25:44 CET] <paveldimow219> Hi, is it possible to set profile-iop in cli? I need to set profile-level-id 420e1f when using H.264 with WebRTC
[22:26:32 CET] <paveldimow219> sorry 42e01f
[22:27:17 CET] <paveldimow219> I can set Baseline profile (42) and level 3.1 (1f) however I can't find anything about profile-iop (E0)
[22:32:11 CET] <JEEB> paveldimow219: is that even in the H.264 spec?
[22:32:42 CET] <JEEB> and then again, it's the encoder that needs to support that as well
[22:32:50 CET] <JEEB> it's the one that will be actually writing the profile value
[22:33:57 CET] <furq> what makes you think you need that exact value
[22:34:39 CET] <paveldimow_> well the thing is that my workflow is liek this: encoder -> ffmpeg -> wowza
[22:35:17 CET] <furq> i'm looking at the spec and i'm pretty sure 0x80 and 0xE0 are identical for baseline profile
[22:35:26 CET] <furq> and you should get 0x80 by default if you use constained baseline
[22:35:35 CET] <furq> r
[22:35:37 CET] <JEEB> constrained baseline is the thing that everything supports
[22:35:40 CET] <JEEB> not actual baseline
[22:35:41 CET] <furq> right
[22:35:45 CET] <JEEB> since baseline has some features that are not in main
[22:36:03 CET] <JEEB> because reasons and early 2000s still not having worn off of the stuff they smoked in the late 1990s
[22:36:50 CET] <paveldimow_> but my problem is Chrome and webRTC
[22:36:52 CET] <paveldimow_> they say
[22:37:02 CET] <paveldimow_> Chrome h264 renderer is only supporting the baseline-constrained profile (42E01F)
[22:37:42 CET] <furq> actually nvm
[22:37:55 CET] <paveldimow_> nvm?
[22:40:54 CET] <paveldimow_> I don't know if that means that I wrote something stupid and I am missing something or ?
[22:41:02 CET] <furq> no it means i wrote something stupid
[22:42:09 CET] <paveldimow_> Ah ok
[22:42:25 CET] <furq> E0 definitely seems wrong
[22:42:31 CET] <furq> that's for extended profile
[22:43:41 CET] <paveldimow_> but if I understand what JEEB wrote, I just need to set constrained baseline profile not extended?
[22:45:48 CET] <JEEB> I don't know what webrtc requires
[22:45:57 CET] <JEEB> but I have heard constrained baseline, not extended
[22:46:03 CET] <JEEB> if extended is a thing that exists and is required
[22:46:09 CET] <JEEB> (check both H.264 and webrtc *specs*)
[22:46:39 CET] <JEEB> then you will probably want to make sure the H.264 encoder you're using is creating that (if you are encoding through FFmpeg)
[22:46:57 CET] <JEEB> f.ex. if libx264 doesn't support that, then you will have to send them a patch for it
[22:49:55 CET] <paveldimow_> Ok, I will take a look at the specs. Thank you furq and JEEB for your help!
[23:49:24 CET] <Guiri> I read up on filter_complex and got a basic concat chain working. I'm still having a bit of trouble on scaling and padding the inputs. Could someone take a look? https://paste.fedoraproject.org/paste/QVrIeJznBZn-FRgZ-dCqzQ
[23:49:52 CET] <Guiri> furq's adviced above worked initally, except I was getting a padding error in a few cases with some test videos
[23:50:31 CET] <furq> well first of all you can replace all those [s1];[s1] etc with ,
[23:50:47 CET] <Guiri> ok
[23:51:18 CET] <furq> also define padding error
[23:51:56 CET] <Guiri> this is the error: https://paste.fedoraproject.org/paste/XIZ9XDAVY0A0JQIEaatTuQ
[00:00:00 CET] --- Sun Feb 24 2019


More information about the Ffmpeg-devel-irc mailing list