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

burek burek at teamnet.rs
Mon Nov 25 03:05:02 EET 2019


[00:20:56 CET] <void09> padding
[00:21:54 CET] <jemius> 265 is really impressive. Reducing (264) from 9.1 GB to 1.1GB without visible differences. Codecs are black magic
[00:23:16 CET] <furq> that doesn't sound representative
[00:23:26 CET] <nicolas17> I tried 265 with low quality, and there were artifacts when looking at individual frames, but in motion they were pretty hidden
[00:24:03 CET] <nicolas17> "reducing from x to y" doesn't say much though, what if the source video had very high bitrate? :P
[00:24:59 CET] <jemius> furq, it is not, typically my stuff is 25% to 50% as large. But this time it apparantly worked very well. Also, the audio stream was transcoded from some apple foo to vorbis
[00:30:07 CET] <void09> jemius: try av1 :P
[00:30:24 CET] <void09> intel's encoder if you care for reasonable speed
[00:30:33 CET] <jemius> void09, the encoder has 0.2 fps on my machine, so: No ;)
[00:30:41 CET] <nicolas17> matches my experience
[00:30:44 CET] <nicolas17> also terrible multithreading
[00:30:47 CET] <void09> 0.2 fps is great speed
[00:30:56 CET] <nicolas17> but I heard rav1e is much faster
[00:31:04 CET] <jemius> I could draw the bloody frames faster with a pencil
[00:31:05 CET] <void09> svt-av1 is good for speed though, and lately i've seen reports that it outmatches x265 at some quality/speed level
[00:31:20 CET] <nicolas17> what is svt? I saw the instructions for compiling with svt but no information on what it *is*
[00:31:40 CET] <void09> https://github.com/OpenVisualCloud/SVT-AV1/
[00:31:58 CET] <void09> it's intel's open source implementation of an av1 encoder
[00:32:06 CET] <JEEB> SVT-AV1 has a crappy rate control but it's the one you use for live streaming proofs of concepts atm
[00:32:15 CET] <JEEB> and seemingly netflix also employs some people poking at it
[00:32:25 CET] <furq> unless you're on amd obviously
[00:32:38 CET] <JEEB> I'm not sure if the perf is much worse on AMD
[00:32:39 CET] <nicolas17> is it "just" faster? the "scalable" part made me think it was for SVC
[00:32:58 CET] <void09> performance is pretty decent on amd, probably less than intel, but not bad
[00:32:59 CET] <JEEB> nicolas17: nah, this is just scaling through cores/NUMA nodes
[00:33:26 CET] <JEEB> https://twitter.com/videolan/status/1172811555387432960
[00:33:37 CET] <furq> well it says "highly optimized for Intel® Xeon® Scalable processors and Intel® Xeon® D processors" which i guess nowadays implies "until we had to disable all that through microcode or else your ssh keys would be flashed on screen constantly"
[00:33:38 CET] <JEEB> it's the encoder you can make demos like this with with a rack server
[00:33:51 CET] <void09> but i plan to use only libaom at the slowest speed setting. or maybe even that VVC codec, i've seen a recent comparison where it's way better than av1
[00:33:53 CET] <JEEB> furq: I have a feeling that is just copypasted marketing wank
[00:34:03 CET] <JEEB> furq: they don't actually disable stuff on non-intel
[00:34:24 CET] <JEEB> they just always have to have the marketing thing there to remind other people why intel is putting time & money into it
[00:34:52 CET] <JEEB> because you can see the same kind of wording with other intel open source projects that don't really have much if anything to do with performance :P
[00:35:16 CET] <JEEB> it is the internal sales pitch / reasoning for a non-sales thing to exist, I guess?
[00:35:52 CET] <JEEB> the actual open source devs don't really care about making it less performant on non-intel
[00:35:59 CET] <nicolas17> well, it depends on what you mean
[00:36:06 CET] <JEEB> at least that's what my experience is
[00:36:36 CET] <nicolas17> "highly optimized for Intel" is marketing
[00:37:05 CET] <nicolas17> "we don't guarantee the effectiveness of optimization for non-Intel processors" is a disclaimer they're forced to add due to a legal settlement
[00:37:20 CET] <furq> was that after the whole icc GenuineIntel saga
[00:37:36 CET] <nicolas17> I think so
[00:37:43 CET] <furq> i guess that was 10 years ago already
[00:37:48 CET] <nicolas17> https://github.com/OpenVisualCloud/SVT-AV1/blob/master/NOTICES.md
[00:38:05 CET] <JEEB> and yea, ICC was not open source so it's much easier for such projects to add random stuff the management happens to want
[00:38:18 CET] <furq> yeah that makes sense
[00:38:23 CET] <JEEB> fun fact: according to my info ICC isn't even utilized too much in their open source
[00:38:25 CET] <furq> i thought svt was embroiled in that for some reason
[00:38:33 CET] <JEEB> SVT is actually bought tech & team
[00:38:40 CET] <JEEB> intel bought the company developing it
[00:38:44 CET] <JEEB> then made it OSS
[00:38:46 CET] <furq> i'm probably getting it mixed up with ipp
[00:38:51 CET] <JEEB> kind of like Google bought On2
[00:40:26 CET] <nicolas17> the story is like "google bought on2, released VP8 as-is as soon as they could, and then the internet noticed it sucks"?
[00:40:39 CET] <nicolas17> I've read bad stuff about VP8 and libvpx :P
[00:40:46 CET] <JEEB> libvpx literally just does what google needs
[00:40:55 CET] <JEEB> which is why it's good that AV1 has multiple encoders
[00:41:07 CET] <furq> has aom actually got any faster lately
[00:41:25 CET] <furq> or have they just resigned it to being some kind of reference encoder already
[00:41:32 CET] <nicolas17> furq: dunno about 'lately', but last I tried, master was indeed faster than 1.0
[00:41:44 CET] <furq> i've not really looked into it since 1.0
[00:41:44 CET] <nicolas17> dunno if it got even better since
[00:41:45 CET] <furq> so that counts
[00:42:05 CET] <nicolas17> the multithreading sucks
[00:42:12 CET] <furq> well what else is new
[00:42:58 CET] <JEEB> they're optimizing libaom, but it will forever be the google-coder
[00:43:08 CET] <furq> i still can't get vpx to use more than ~4 cores on 1080p even with row-mt
[00:43:30 CET] <furq> logical, not physical
[02:02:26 CET] <void09> what could I use to apply some procedural alterations to a video stream,  in real time, without re-encoding it. for example, to view a tv capture with the logo blurred out
[02:02:46 CET] <furq> -f nut -c:v rawvideo - | mpv -
[02:03:06 CET] <furq> or just mpv --vf if your filtering needs are simple enough
[02:03:27 CET] <void09> I have no idea how simple or complex they are
[02:03:51 CET] <void09> that's the only one I can think of at the moment, to blur or remove a logo (by using the surrounding pixel info
[02:04:34 CET] <void09> what could i use for that ?
[02:08:57 CET] <Damme> I feel more stupid now after a few hours playing around with ffmpeg... Does anyone have the patiance to help me get tonemap to work ? I want to map colors so a 10bit -> 8bit conversion doesn't look pale. I am totally lost
[02:09:33 CET] <JEEB> I think I just helped someone here with that a few days ago
[02:09:52 CET] <Damme> I think I can hear the arrow up key ;)
[02:10:02 CET] <JEEB> the fully software tonemap filter (older) requires linear rgb which only the zimg based zscale filter can produce
[02:10:18 CET] <JEEB> the opencl tonemap filter (newer) can do the linear'ization
[02:10:32 CET] <Damme> ahh, so I really need zscale ? I found a few threads about that on different forumt
[02:10:33 CET] <Damme> s*
[02:10:34 CET] <JEEB> I looked at the code and it seemed to be relatively simple to add that to the sw one too
[02:10:44 CET] <JEEB> Damme: for the older fully software filter, yes
[02:11:21 CET] <Damme> ffmpeg -h filter=tonemap_opencl
[02:11:22 CET] <Damme> ops
[02:11:27 CET] <JEEB> -vf "zscale=transfer=linear,tonemap=mobius,zscale=transfer=bt709,format=yuv420p"
[02:11:36 CET] <JEEB> Damme: that then needs opencl and the hwupload thing
[02:11:47 CET] <JEEB> look for ffmpeg-all.html on ffmpeg.org for the up-to-date docs
[02:11:54 CET] <JEEB> in addition to that of course
[02:12:57 CET] <Damme> yep, I'll need to get zscale to work to begin with atleast :) Running arch, donno if there is an aur for that yet
[02:17:14 CET] <void09> JEEB: any idea for software that can apply procedurally written alterations/filters to a video stream, that works on both linux /windows?
[02:17:47 CET] <void09> without needing re-encode, of course
[02:22:48 CET] <nicolas17> what
[02:22:56 CET] <nicolas17> you can't do that kind of stuff to a video without reencoding
[02:23:04 CET] <nicolas17> unless you mean doing it on the fly while playing it
[02:24:03 CET] <furq> void09: do you need to change the filter on the fly while it's running
[02:24:27 CET] <nicolas17> looks like mpv uses lavfi filters
[02:26:39 CET] <nicolas17> void09: search in ffmpeg video filters how to blur a logo, I think there's a delogo filter
[02:29:00 CET] <void09> there's ffmpeg filters for this?
[02:30:07 CET] <void09> I was thinking something like some kind of scripting language that works with pixels and coordinates, so you can use it cross platform. I think avisynth has something like this
[02:30:57 CET] <Damme> How come ffmpeg doesn't have libac anymore ? what is the idea to use instead?
[02:31:09 CET] <Damme> libav*
[02:31:10 CET] <furq> void09: https://ffmpeg.org/ffmpeg-filters.html#program_005fopencl-1
[02:31:20 CET] <DHE> what's libav?
[02:32:06 CET] <Damme> If I'm not totally wrong, support for zscale (libzimg / libav?)
[02:32:31 CET] <furq> it does have support for zscale
[02:32:39 CET] <DHE> libzimg is a feature you can import if the library is available
[02:32:55 CET] <Damme> aaaha
[02:33:06 CET] <Damme> I tought I needed to recompile ffmpeg lol
[02:33:09 CET] <JEEB> yes
[02:33:11 CET] <DHE> well you do...
[02:33:16 CET] <DHE> ./configure detects it
[02:33:20 CET] <Damme> ok
[02:33:23 CET] <JEEB> the module needs to be enabled and for that you need to have zimg available
[02:33:25 CET] <furq> i had to doublecheck that he hadn't actually renamed it libav
[02:33:31 CET] <JEEB> lol
[02:33:32 CET] <furq> don't worry everyone
[02:33:43 CET] <JEEB> nah, he's happy trying to have z.lib
[02:33:50 CET] <DHE> haha
[02:33:56 CET] <Damme> :|
[02:34:14 CET] <void09> https://ffmpeg.org/ffmpeg-filters.html#delogo
[02:34:23 CET] <void09> there is a delogo filter indeed
[02:34:43 CET] <JEEB> Damme: basically build/install https://github.com/sekrit-twc/zimg
[02:35:00 CET] <furq> void09: if you just want a cross-platform avisynth then use vapoursynth
[02:35:23 CET] <void09> not sure what i want, i have not researched this domain yet
[02:35:29 CET] <JEEB> and then rebuild FFmpeg with --enable-libzimg
[02:35:35 CET] <JEEB> and that will enable the zscale filter
[02:36:11 CET] <Damme> JEEB, thanks, I understand now :) and I found tons of different zscale examples so I think I'll solve this now :)
[02:36:12 CET] <JEEB> Damme: it's in my plans to enable support for yuv420p10 but it's not exactly on the top of my priority. I did check the opencl filter and it *probably* isn't too complex to add the linearization there
[02:36:45 CET] <JEEB> zimg itself can do the conversion, but it will not tone map. it will just cut at 100 nits
[02:36:53 CET] <JEEB> since tone map is not standardized
[02:37:13 CET] <JEEB> but you can use it + one of the tonemap filters to get a proper tone map
[02:37:28 CET] <Damme> aah ok.
[02:37:53 CET] <JEEB> -vf "zscale=transfer=linear,tonemap=mobius,zscale=transfer=bt709,format=yuv420p"
[02:37:54 CET] <JEEB> like this
[02:38:14 CET] <JEEB> "convert to linear RGB with zscale, do mobius tonemap, convert to 8bit 4:2:0"
[02:38:38 CET] <Damme> ah, now I understand the filter arguments.. It really confused me
[02:38:39 CET] <JEEB> anyways, sleep time for me
[02:38:48 CET] <Damme> Good night JEEB!
[02:38:53 CET] <JEEB> the format at the end is a "meta" filter
[02:39:10 CET] <JEEB> it basically sets the output pixel format for the filter before it
[02:39:34 CET] <JEEB> that way zscale there ends up outputting yuv420p (8bit, 4:2:0 YCbCr)
[02:39:38 CET] <JEEB> anyways, night'o indeed
[02:41:12 CET] <void09> delogo=x=0:y=0:w=100:h=77:band=10
[02:41:21 CET] <void09> how would one apply this filter and pipe  the output to mpv ?
[02:44:29 CET] <furq> -vf "delogo=x=0:y=0:w=100:h=77:band=10" -f nut -c:v rawvideo - | mpv -
[02:44:36 CET] <furq> or mpv --vf "delogo=x=0:y=0:w=100:h=77:band=10"
[02:45:14 CET] <void09> [lavfi] AVOption 'band' not found.
[02:45:32 CET] <void09> they changed the code and didn't update the docs?
[02:46:08 CET] <DHE> mpv -vf lavfi=[delogo=....] input.mkv
[02:46:08 CET] <furq> it does mention that band is deprecated
[02:46:15 CET] <furq> DHE: do you still need that
[02:46:26 CET] <DHE> dunno. my build of mpv is actually kinda old...
[02:48:35 CET] <furq> yeah you've not needed that for a while
[02:49:00 CET] <void09> furq: i removed "band" and it works :D
[02:49:07 CET] <void09> also needed to update x,y coordinates
[02:49:56 CET] <void09> it did not work with 0. I think they updated the code to begin with pixel number 1?
[02:55:04 CET] <void09> now time to try tthe remove logo thingie, seems more advanced
[03:04:34 CET] <void09> wow that worked on the first try
[03:04:54 CET] <void09> mpv --vf "removelogo=f=nocmlogo.bmp" outputvideo.mkv
[03:06:28 CET] <void09> although i expected a bit better results
[03:55:35 CET] <Atlenohen> Hey guys
[03:56:02 CET] <Atlenohen> someone said ffprobe analyzes a few frames and reports timecodes, but what if I use analyze_duration and the sizes maxed out?
[03:56:34 CET] <Atlenohen> And also, I told it to show all frames, and I went manually thoguht the PTS ...
[03:57:00 CET] <Atlenohen> Is that really getting to the bottom of it?
[04:07:48 CET] <lf94> Hey, is it possible to find out why av_find_decoder is failing? Where it is looking?
[04:08:04 CET] <lf94> It can't find H264 on Debian 9. ffmpeg -version shows its built in
[04:08:16 CET] <lf94> (I assume libavcodec has it too then)
[04:59:52 CET] <Damme> 4k to 1080p, using scale=1920:-1 and -c:v libx264 -crf 16 -preset slow -tune film but I still think the output is a bit too blocky, is two stage to go or go even lower with crf ?
[05:02:31 CET] <furq> if you mean 2pass then it makes no difference to quality
[05:02:37 CET] <furq> the first pass just picks a crf value for the second pass
[05:03:30 CET] <furq> you should probably try a slower preset before lowering the crf more
[05:07:00 CET] <Damme> ah thanks
[05:09:46 CET] <gp> I was just looking through history and saw opus in mp4 was added as experimental in 2017.  What exactly does experimental mean?  Does it mean likely someone will be able exploit and rm -rf / my system or that perhaps I git a few bits of audio that aren't exactly right?
[05:10:44 CET] <gp> or somewhere in between i am guessing?
[07:27:11 CET] <void09> anyone here played with the removelogo filter ? I want to know if it's possible to make a part of the logo completely removed (replaced with black pixels) instead of using dither for those pixels
[07:41:07 CET] <Al_nz1> Hello
[07:41:58 CET] <Al_nz1> I am trying to create a movie wtih 5ffmpeg.exe -framerate 24 -i 2019-11-2%1d_*.jpg mm2019.mp4
[07:42:42 CET] <Al_nz1> but i get could find no file with path 2019-11-2%1d.jpg and index in the range
[07:43:06 CET] <Al_nz1> the directory is full of files 2019-11-21_15_30_10_HVO.jpg
[07:44:42 CET] <montana> 5ffmpeg.exe ?
[07:44:49 CET] <montana> is that a typo?
[07:45:16 CET] <Al_nz1> montana: yes type
[07:45:18 CET] <Al_nz1> tpo
[07:45:20 CET] <Al_nz1> typo
[07:45:25 CET] <montana> can you retype it then
[07:45:53 CET] <Al_nz1> I have renamed the files to mm1 (1).jpg to mm1 (654).jpg
[07:46:33 CET] <Al_nz1>  Could find no file with path 'mm*.jpg' and index in the range 0-4
[07:46:33 CET] <Al_nz1> mm*.jpg: No such file or directory
[07:46:52 CET] <Al_nz1> ffmpeg.exe -framerate 24 -i mm*.jpg mm2019.mp4
[07:47:52 CET] <montana> don't put spaces on the name
[07:47:57 CET] <montana> that will fix it
[07:49:47 CET] <Kadigan> Al_nz1: in general, it helps that the %1d and such others are printf formats, so you can find info on them on the Internet.
[07:50:06 CET] <Al_nz1> the file name format is now 2019-11-23_03_55_37.268_HVO.jpg
[07:50:11 CET] <Al_nz1> but same error
[07:50:35 CET] <montana> what are you typing exactly
[07:50:54 CET] <Al_nz1> https://imgur.com/a/0rGOfjo
[07:51:28 CET] <montana> don't put *
[07:51:37 CET] <montana> on the name
[07:52:39 CET] <Al_nz1> what do i put the name as?
[07:52:42 CET] <montana> are you trying to batch it?
[07:52:54 CET] <Al_nz1> yes - create a video from a series of stills
[07:54:17 CET] <montana> i see
[07:54:17 CET] <Al_nz1> 2019-11-23_03_55_37.268_HVO.jpg is yyyy-mm-dd_hh_mm_ss.ddd_HVO.jpg
[07:54:31 CET] <montana> then you have to type the name of every still image
[07:54:52 CET] <montana> ffmpeg won't understand "*"
[07:55:04 CET] <montana> or go to use powershell
[07:55:13 CET] <montana> or use powershell to script it
[07:55:27 CET] <Al_nz1> https://stackoverflow.com/questions/50643085/generate-a-2-fps-mp4-from-images-using-ffmpeg
[07:55:31 CET] <montana> /join #powershell
[07:55:46 CET] <montana> then you have to type the name of every still image
[07:56:05 CET] <Al_nz1> or : https://stackoverflow.com/questions/24961127/how-to-create-a-video-from-images-with-ffmpeg
[07:56:57 CET] <Al_nz1> i dont understand fully all the wild card options like %03d ?
[07:57:05 CET] <montana> basically your question is about scripting
[07:57:13 CET] <montana> NOT ffmpeg
[07:57:33 CET] <montana> Al_nz1 basically you are to lazy to type out  every still image file name
[07:58:05 CET] <Al_nz1> when there is 600 yes!!
[07:58:12 CET] <montana> lol, fair enough
[07:58:17 CET] <montana> /join #powershell
[07:59:33 CET] <montana> Al_nz1 ask how to script every file name automatically
[08:01:26 CET] <montana> Al_nz1 why aren't you asking
[08:42:23 CET] <kepstin> fwiw, ffmpeg can do multi-frame picture with glob inputs (using *? wildcards), but i think it only works on linux
[08:42:59 CET] <kepstin> and you generally can't put that many file inputs on an ffmpeg command line due to command line length limits. plus it would just be a pain to combine them into a video.
[08:45:12 CET] <montana> why doesn't this work?  ffmpeg.exe -framerate 24 -i 1.jpg -2.jpg -3.jpg output.mp4
[08:45:30 CET] <montana> why doesn't this work?  ffmpeg.exe -framerate 24 -i 1.jpg -i 2.jpg -i 3.jpg output.mp4
[08:47:41 CET] <kepstin> that creates three separate video streams, each containing only one frame
[08:47:58 CET] <kepstin> and then since you haven't used any -map options, only one of the three is encoded to the output
[09:06:10 CET] <sandreas> Hello... After looking in the documentation, i would like to ask, if it is possible to get the duration of an audio file in accurate milliseconds? I tried a file, that has 22149ms and I always get 00:00:22.15.
[09:25:15 CET] <DonRichie> Hey, I have a problem using ffmpeg. I have 320k opus files and want to reencode them with lower bitrate.
[09:25:30 CET] <DonRichie> Problem is I want to keep the metadata and cover art
[09:26:24 CET] <DonRichie> Copying metadata seems to work mostly. But I have problems copying the mjpeg stream for the album cover
[09:27:15 CET] <DonRichie> it says "Unsupported codec id in stream 1" when I say "ffmpeg -i in.opus -map 0 -ab 128k -c:v copy out.opus"
[09:28:37 CET] <DonRichie> as you see, I try to keep the mjpeg stream as it is. hope someone knows how to debug that :)
[10:12:54 CET] <c_14> DonRichie: https://trac.ffmpeg.org/ticket/4448
[10:14:05 CET] <DonRichie> c_14: lol, nice they know that problem exists
[10:14:34 CET] <DonRichie> Isn't there an ignore flag? Since I just want to copy the data without manipulating
[10:16:16 CET] <JEEB> nope
[10:16:32 CET] <c_14> would map_metadata work maybe?
[10:16:44 CET] <JEEB> only if the writing module does the right thing?
[10:17:21 CET] <JEEB> but looking at that comment it really seems to be a lack of that
[10:17:33 CET] <JEEB> since the muxer doesn't take in "video" streams
[10:18:40 CET] <JEEB> DonRichie: the reason why it doesn't work is because it all goes through the "read bits" -> "parse input container and get packets" -> "do stuff" (like decode/encode/just pass through) -> pass packets to a writer -> write bits out
[10:19:08 CET] <JEEB> so at the point of the "pass packets to writer", that is a completely different structure since it's 100% controlled by the FFmpeg's writer just receiving your packets o' data
[10:21:47 CET] <DonRichie> hmmmm. okay seems like something I can't fix. I am currently trying to extract the album art and use the opusenc program to reinject it after reencoding
[10:22:03 CET] <JEEB> should be possible
[10:22:56 CET] <DonRichie> the opusenc tool also should be the program which injected the albumart in the first place.
[11:56:06 CET] <void09> is there any automated way to adjust the resolution/aspect ratio of a video so that it alligns with another video that is the same thing but has different format
[11:56:49 CET] <void09> let's say, to map a dvd 4:3 image to its 16:9 bluray version
[11:57:01 CET] <durandal_1707> scale2ref filter?
[12:01:20 CET] <void09> hmm can't really tell if that's it, but probably not
[12:02:07 CET] <void09> as such a filter would need to have an intelligent way of matching pictures that can be of very different quality, aspect ratio, and colour tones
[12:02:36 CET] <void09> well, it would only need to do this once, since the parameters would be constant after that
[12:03:46 CET] <void09> what I was thinking of doing, is to fill in the pixels occupied by a logo on a video, with pixels from the same material in a different video, that is of lesser quality, or has logo in a different position
[12:05:48 CET] <void09> so i would need a function that could compute the corresponding pixel's value in the other video, so it could replace it
[12:05:51 CET] <void09> does that make sense?
[13:38:32 CET] <Atlenohen> Hello
[13:39:10 CET] <Atlenohen> what would ffmpeg do if resolution changes middle of encoding, could mismatched resolution videos be concated, is that even possible, supported, feely wrong, but just doublechecking?
[13:39:22 CET] <Atlenohen> Or it adds "black bars" (canvas) automatically?
[13:39:31 CET] <Atlenohen> Or rescales the image?
[13:40:35 CET] <pink_mist> uh, how would resolution change in the middle of encoding? I don't know of any codec that supports that
[13:41:08 CET] <pink_mist> I'd presume you'd either get garbage out (since you put garbage in), or some form of error
[13:46:55 CET] <JEEB> Atlenohen: if you have video filter chain in the middle with a scaler it would most likely get scaled accordingly
[13:47:09 CET] <JEEB> Atlenohen: if you don't, it depends on the encoder what it does when it gets an AVFrame of a differing size
[13:47:17 CET] <JEEB> libx264 will attempt to reconfigure itself, for example
[14:00:19 CET] <Atlenohen> Oh, right, thanks.
[16:06:34 CET] <realies> can you append a reversed first second of an audio clip in the same audio clip with a single ffmpeg call?
[16:10:32 CET] <TheAMM> Probably, see the concat, atrim and areverse filters and use -lavfi aka -filter_complex
[16:12:40 CET] <realies> first three are pretty clear, not sure how should it be all mapped with the filter complex
[16:15:53 CET] <durandal_1707> realies: ffmpeg -i audio.wav -af "asplit[a][b],[b]atrim=end=1,areverse[b],[b][a]concat=a=1:v=0" -f null -
[16:18:28 CET] <realies> thanks a lot durandal_1707
[17:02:08 CET] <jemius> On desktop computers etc. video streams are typically decoded on the graphics card, using hardware acceleration, correct?
[17:02:55 CET] <bencoh> depends on the hardware / platform and software used, but in many cases yeah
[17:03:38 CET] <JEEB> many desktops nowadays have hw decoders, but often the default is software decoding
[17:03:54 CET] <JEEB> for example an awful lot of youtube playback with VP9 is probably swdec
[17:03:55 CET] <bencoh> ffmpeg's default you mean I guess
[17:04:02 CET] <bencoh> ah, that
[17:04:20 CET] <JEEB> yes, FFmpeg's default and also what I see being utilized w/ firefox/chromium :)
[17:04:36 CET] <JEEB> H.264 more often tends to be hwdec since that might go through media foundation
[17:04:41 CET] <bencoh> yeah
[17:04:46 CET] <jemius> does ffmpeg use acceleration by any means? I think most platforms don't have accelerated encoding
[17:04:52 CET] <bencoh> I completely forgot about youtube/vp9 to be honest :)
[17:05:18 CET] <JEEB> jemius: there are interfaces that FFmpeg has integrated that let you do hw decoding and encoding
[17:05:40 CET] <JEEB> that is not the default, though, as often that stuff requires specific environment and integration
[17:05:56 CET] <jemius> I often get the feeling as if in general, Linux computers use the CPU more intense when watching videos
[17:06:29 CET] <JEEB> depends. there is a partial reason due to the hw decoding interfaces being more all over the place
[17:06:39 CET] <JEEB> intel and AMD have vaapi, nvidia has vdpau *and* nvdec
[17:06:47 CET] <JEEB> then you have v4l2_whatever
[17:06:56 CET] <JEEB> while windows is mostly content with dxva2 and d3d11
[17:06:59 CET] <JEEB> *d3d11va
[17:11:02 CET] <Anderssen> on the topic of (de-)interlacing: can ffmpeg also put together a frame from two separate files? Like file1 contains top field and file2 contains bottom field?
[17:12:15 CET] <JEEB> you can interleave two inputs and those in theory can come from different files
[17:12:42 CET] <JEEB> just use a complex filter chain and [0:v:0][1:v:0] as inputs to interleave or something?
[17:13:18 CET] <jemius> Anderssen, in which situation does one need that?
[17:13:24 CET] <kepstin> yeah, i'd expect that to work fine. might be a bit of a pain if the timestamps don't match perfectly, but you could work around that with the -r input option or setpts filter.
[17:14:49 CET] <JEEB> setpts or something, yea
[17:16:10 CET] <bencoh> I wonder who outputs top/bottom in separate files as well :)
[17:17:51 CET] <Anderssen> jemius: in Germany we have some TV networks who encode their material sometimes in HD, and for SD, they slowly but surely have moved to not encode that on it's own anymore, but to encode it from the HD stream, and the HD stream has 50fps; and to encode this down to 25fps -- even though the movie had only 25fps to begin with -- they seem to do it in a somewhat unclever way so that the result has interlace artifacts.
[17:17:51 CET] <Anderssen> however, e.g.  the filter decomb telecide in avidemux seems to eliminate that very elegantly, however yadif or bwdif in ffmpeg seem to produce some minor artifacts in some situations; not big ones, but visible ones. and i've found out -- through experimenting with bitmaps -- that you can put together the original frame basically perfectly if you use the top field of one frame and the bottom field of the next frame; so
[17:17:52 CET] <Anderssen> to speak they have an offset of 1 frame.
[17:18:59 CET] <faLUCE> hello. Is it possible to change the volume of an ac3 audio without re-encoding ?
[17:19:23 CET] <JEEB> faLUCE: in theory there's some stuff in the metadata of the bit stream, but we do not yet have a bit stream filter for that
[17:19:26 CET] <JEEB> so no
[17:19:38 CET] <JEEB> you can write a bit stream filter like that like the h.264/hevc things, of course, if you need to
[17:20:00 CET] <faLUCE> JEEB: forgive off-topic do you know an utility (linux) for doing that?
[17:20:02 CET] <Anderssen> JEEB: gotta look into that how i do that with the complex filter chain, thanks for the tip!
[17:20:20 CET] <JEEB> faLUCE: no. I just understand that it should be possible (on *some* level)
[17:20:53 CET] <faLUCE> thnks, let's search
[17:20:57 CET] <JEEB> faLUCE: if it's just 5.1->stereo downmix woes (because of how 5.1 stuff is mastered), then just throw good ol' loudnorm at it :P
[17:21:06 CET] <JEEB> as in, during playback
[17:21:34 CET] <JEEB> if it's not that, you'll have to hope that whatever plays the stuff actually reads the metadata :P
[17:24:34 CET] <faLUCE> JEEB: is it metadata at the beginning of the file, or is it in other points too?
[17:24:46 CET] <JEEB> I don't remember the details, unfortunately
[17:24:51 CET] <faLUCE> np
[17:25:00 CET] <JEEB> I think the decoder actually extracts some of that stuff as metadata
[17:25:09 CET] <JEEB> you could see that plus the A/52 spec
[17:25:30 CET] <jemius> As I understood it the whole 1080i at 50fps is just a marketing trick, to make the customer believe he receives full HD
[17:25:50 CET] <jemius> wheres in the end the quality is about like 720p
[17:25:59 CET] <JEEB> faLUCE: https://www.atsc.org/standard/a522012-digital-audio-compression-ac-3-e-ac-3-standard-12172012/
[17:26:05 CET] <JEEB> together with the libavcodec decoder
[17:26:30 CET] <faLUCE> JEEB: thnks, I'm searching an utility firstly (not easy to find
[17:26:31 CET] <faLUCE> )
[17:27:00 CET] <JEEB> yea I don't think it's a common use case
[17:27:04 CET] <JEEB> not sure you'll find one
[17:41:50 CET] <faLUCE> meanwhile I found this utility: "ac3filter". The manual says "You should not use this option instead of player volume or system volume. An overflow and a noticeable decrease of playing quality can take place when there is a high gain. For more information, refer to 7.1. Loudness and dynamic range.    http://www.ac3filter.net/files/docs/ac3filter_1_30b/ac3filter_eng.html  . Is the same metadata you were saying, JEEB ?
[17:49:10 CET] <JEEB> faLUCE: ac3filter was just an old directshow filter for AC3
[17:49:38 CET] <JEEB> but either yes, that is part of it (although usually it's the DRC part)
[17:49:45 CET] <JEEB> or just the DRC part next to it is that
[17:49:55 CET] <JEEB> but it will not filter the bit stream for you
[17:49:56 CET] <JEEB> it's a decoder
[17:50:58 CET] <faLUCE> I see
[17:51:01 CET] <faLUCE> damn...
[17:51:12 CET] <faLUCE> I could not imagine that it was so hard
[17:53:04 CET] <JEEB> I am not sure how hard it is to code, but I think it's closer to "your specific use case is just rare"
[17:53:16 CET] <JEEB> I mean, even rarer than fixing up H.264 or HEVC parameter sets :P
[17:53:31 CET] <JEEB> and we only got a bit stream filter for that relatively recently
[18:46:52 CET] <faLUCE> JEEB: I don't understand why my case is rare. Is it because gain can be adjusted during playback ?
[18:47:07 CET] <JEEB> yes
[18:47:16 CET] <JEEB> or people live with what has been encoded for them :P
[18:47:20 CET] <JEEB> or they re-encode it
[18:47:44 CET] <JEEB> trying to patch the stream and handle it that way is definitely not the way people would take it generally :P
[18:47:54 CET] <JEEB> also I am not fully sure how far you can go with the metadata
[18:47:55 CET] <faLUCE> JEEB: but gain doesn't mean volume, right?
[18:48:04 CET] <JEEB> well I also meant DRC
[18:48:09 CET] <JEEB> aka normalization
[18:48:26 CET] <JEEB> which is usually done after you f.ex. downmix from 5.1 to stereo
[18:49:15 CET] <faLUCE> JEEB: I'm playing a 5.1 file on headphones or normal stereo. So, which is the proper way to adjust the volume?
[18:49:29 CET] <JEEB> with mpv I'd start with something like --af=format=channels=stereo,loudnorm
[18:49:40 CET] <JEEB> takes you to stereo, then adds loudness normalization
[18:49:59 CET] <JEEB> after that the difference between loud parts (effects) and voices should be much smaller
[18:50:13 CET] <JEEB> then you can adjust your volume without getting your ears killed too much
[18:50:40 CET] <faLUCE> I thought it did that automatically when recognizing a 5.1 file with 5 tracks
[18:50:54 CET] <JEEB> what you get automagically is correct downmix
[18:51:04 CET] <bencoh> "correct" :)
[18:51:19 CET] <JEEB> I'm pretty sure various specs including dolby's were referenced
[18:51:40 CET] <bencoh> ah, if that's what you meant by correct then yes
[18:51:43 CET] <faLUCE> this is out topic here, I'm going to ask it to mpv
[18:51:47 CET] <sandreas> Hello. After reading the documentation and finding nothing, I would like to ask if it is possible to change the time format of ffmpeg output (i get Duration: 00:00:22.15 for a file that has 22149ms - which is inaccurate) and if not, why does ffmpeg round the time this way?
[18:51:49 CET] <faLUCE> channel
[18:52:17 CET] <JEEB> bencoh: yes, and then if more adjustment due to the wide dynamic range and the original mixing is required, then that can be added.
[18:52:41 CET] <JEEB> 5.1 has a lot more freedom in the mix because it has all those five plus one things :P
[19:15:31 CET] <Hello71> ... isn't that called replaygain
[19:16:19 CET] <JEEB> not necessarily
[22:42:03 CET] <montana> would i able to transcode 10fps video to 4fps  using ffmpeg
[22:42:15 CET] <montana> it has to be 4 fps
[22:48:25 CET] <shibboleth> will i have to be running xorg and ffmpeg as the same user for vaapi accel?
[23:03:19 CET] <montana> does ffmpeg support rav1e encoding?
[23:06:21 CET] <JEEB> montana: yes. if you build the C library it can be linked against. the mappings got merged right after rav1e started using version numbers
[23:06:42 CET] <montana> is that mean "no" for prebuild versions?
[23:06:50 CET] <JEEB> I have no idea what the pre-built versions contain
[23:07:14 CET] <JEEB> this guy's linux builds at least don't have it https://johnvansickle.com/ffmpeg/git-readme.txt
[23:07:17 CET] <montana> https://ffmpeg.zeranoe.com/builds/
[23:07:31 CET] <JEEB> there you have the readme link
[23:07:35 CET] <JEEB> and not seeing rav1e there
[23:07:48 CET] <JEEB> if you want rav1e, please tell the person since those builds have nothing to do with FFmpeg itself :)
[23:08:38 CET] <montana> by person, you mean the  binary builder?
[23:09:09 CET] <JEEB> yes
[23:09:16 CET] <JEEB> pretty sure he has an e-mail there somewhere noted
[23:10:20 CET] <montana> okay
[23:10:27 CET] <montana> why is libaom-av1 unusable
[23:10:35 CET] <montana> it just does not work
[23:13:23 CET] <JEEB> I have no idea :P
[00:00:00 CET] --- Mon Nov 25 2019


More information about the Ffmpeg-devel-irc mailing list