Ffmpeg-devel-irc
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
February 2018
- 1 participants
- 56 discussions
[01:01:39 CET] <gagandeep> kierank: the course on coursera that i was looking into is beyond the simple codec functioning (like image enhancement and other stuff)
[01:02:20 CET] <gagandeep> kierank: i also encountered a term called information theory, should i look into it for basic understanding regarding compression and decompression
[01:02:28 CET] <kierank> not really
[01:03:42 CET] <gagandeep> kierank: for the last two days i was struggling with installing the ffmpeg using source and then later figuring out something called pkg-config through which one can finally use libraries
[01:04:01 CET] <kierank> you don't need pkg-config to build ffmpeg
[01:04:12 CET] <gagandeep> i was trying to follow a tutorial for using libav
[01:05:07 CET] <kierank> https://trac.ffmpeg.org/wiki/CompilationGuide/Generic
[01:05:09 CET] <kierank> just follow that
[01:06:04 CET] <gagandeep> i followed that and had ffmpeg already, it was to use the libav that i was struggling as i had never used external libraries
[01:07:29 CET] <gagandeep> basically i was confused that how avcodec.h is including avutil.h as it was not in the same directory
[01:07:45 CET] <gagandeep> when i was looking into the source code
[01:08:06 CET] <kierank> you shouldn't need to use any of the libraries for this
[01:08:14 CET] <kierank> this entire task is doable with ffmpeg.c
[01:08:20 CET] <kierank> and you don't need to read that
[01:08:25 CET] <kierank> just do ./ffmpeg -i blah
[01:09:38 CET] <gagandeep> what do you mean by this line
[01:12:04 CET] <gagandeep> kierank:what do you mean by ./ffmpeg -i
[01:12:12 CET] <kierank> it's the ffmpeg application
[01:12:23 CET] <kierank> that it builds by default
[01:13:10 CET] <gagandeep> oh!! so if one runs ffmpeg, all the files will be built automatically
[01:13:55 CET] <kierank> ?
[01:14:04 CET] <kierank> no, you build the git tree and then you get the ffmpeg application
[01:39:10 CET] <BBB> greentea: in case you didnt get an answer yet, just ask :)
[02:18:09 CET] <cone-288> ffmpeg 03James Almer 07master:f235359b2b11: avformat/utils: don't overwrite the return value of read_packet()
[05:23:32 CET] <cone-288> ffmpeg 03Serhii Marchuk 07master:6d763ab58811: avformat/dashenc: add option to change HTTP method
[05:23:33 CET] <cone-288> ffmpeg 03Karthick Jeyapal 07master:e3851f6a3739: avformat/dashenc: Removed usage of deprecated 'filename' variable
[08:36:41 CET] <cone-697> ffmpeg 03Tobias Rapp 07master:fa0c9d69d3d7: fftools/ffmpeg: replace call to av_strerror with av_err2str
[11:39:55 CET] <bogdanc> where is the definition of AVFrame ?
[11:42:21 CET] <nevcairiel> libavutil/frame.h
[11:42:37 CET] <wm4> a quick grep would tell you too
[11:45:52 CET] <bogdanc> couldnt really tell from all the "AVFrame" in all the headers
[11:46:16 CET] <nevcairiel> "struct AVFrame" would probably find it right away i reckon
[11:47:04 CET] <bogdanc> didn't cross my mind to also put typedef in there
[11:47:24 CET] <bogdanc> or struct..
[12:23:27 CET] <wm4> so would the nvidia headers change actually require real hw to test it? (that means whether it really manages to dlopen the driver etc.)
[12:28:31 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:bbed942dfd64: avcodec/rscc: Skip empty frames (nb_tiles == 0)
[12:28:31 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:7414d0bda776: avcodec/utvideodec: Check subsample factors
[12:50:21 CET] <nevcairiel> wm4: probably not, its just a header afterall, it just needs to find it
[13:33:15 CET] <BtbN> wm4, no, it's all runtime-loaded.
[13:33:34 CET] <BtbN> And I suspect it might actually work on MSVC, if you convince configure and pkg-config hard enough. Will try again right now.
[13:37:49 CET] <BtbN> Visual Studio wants to update itself before doing anything. Great.
[13:41:26 CET] <wm4> lol
[13:41:43 CET] <BtbN> I don't overly care about MSVC, but I don't want to break a configuration that works right now. If I manage to make it build, I'll just push the patch.
[13:42:07 CET] <BtbN> It estimates 2 hours for the update. Yeah, I'll go grab food I guess.
[14:00:49 CET] <wm4> blocking forced autoupdate are just MS' thing, huh
[14:40:02 CET] <nevcairiel> dont think i have ever seen that with msvc
[14:40:11 CET] <nevcairiel> it tells you there is an update, but forced?
[14:40:47 CET] <wm4> dunno, apparently it stopped BtbN from doing his thing
[14:42:14 CET] <BtbN> nevcairiel, it looks like it was started previously, but canceled
[14:42:38 CET] <BtbN> so the whole thing was in a half-updated state. Even cl on the commandline just opened the visual studio installed and started the update
[14:43:23 CET] <BtbN> but it's done now, so I can actually do stuff now
[15:33:33 CET] <BtbN> Does msys really have cygpath?
[15:33:42 CET] <JEEB> yes
[15:34:43 CET] <BtbN> ok, so I will just add a parameter to the nv-codec-headers repo Makefile for it to write native Windows paths into the pkg-config file and call it a day
[15:35:37 CET] <nevcairiel> mingw can understand native windows paths, so maybe it should always do that on windows then? could probably do that without parameters
[15:36:13 CET] <BtbN> Cygwin gcc should as well
[15:36:28 CET] <BtbN> But how to reliably detect Windows in a Makefile?
[15:37:40 CET] <nevcairiel> ifeq ($(OS),Windows_NT)
[15:37:54 CET] <nevcairiel> unless cygwin is evil and overrides that
[15:38:01 CET] <BtbN> it doesn't seem to
[15:44:25 CET] <BtbN> This whole thing is made annoying by the 15 minute breaks to wait for configure to run
[15:47:29 CET] <BtbN> But it takes way longer now than it did before. So I guess this was a success
[15:47:41 CET] <nevcairiel> heh
[15:47:51 CET] <nevcairiel> can always grep the config.log to check
[15:48:15 CET] <BtbN> I want to build-test it anyway, so might as well wait
[15:56:02 CET] <jdarnley> BtbN: If you're actually running in cygwin then use dash. It cuts the run time to a mere 2/3rds.
[15:56:25 CET] <jdarnley> I can't say whether msys or other shells have it.
[15:58:45 CET] <nevcairiel> dash comes with msys as well
[16:05:38 CET] <BtbN> so explicitly invoke configure with dash you mean? I'll try that
[16:06:15 CET] <nevcairiel> one of these days someone should figure out how to make the slow fork emulation fast
[16:08:37 CET] <jdarnley> Yes I do mean runf: dash ./configure --whatever
[16:14:20 CET] <BtbN> The only way to make it fast it to make the Kernel do it
[16:16:11 CET] <BtbN> still takes ages with dash
[16:23:03 CET] <cone-549> ffmpeg 03Timo Rothenpieler 07master:27cbbbb33f25: compat: remove in-tree NVidia headers
[16:26:00 CET] <JEEB> yayifications
[16:29:23 CET] <wm4> nice
[16:30:45 CET] <wm4> who can add nv-codec-headers.git to the github mirror?
[16:32:20 CET] <durandal_1707> oh noo, you ignored Nicolas and pushed patch
[16:33:28 CET] <wm4> no he didn't
[16:33:44 CET] <wm4> the discussion was over when he confirmed it worked on MSVC (or actually pushed a fix to the headers repo)
[16:35:42 CET] <durandal_1707> you missed last nicolas mail then
[16:38:50 CET] <jamrial> BtbN: run configure with --disable-everything
[16:39:02 CET] <jamrial> it doesn't disable autodetect stuff
[16:39:44 CET] <jamrial> and it's much faster since it's not doing a thousand recursive dep checks
[18:02:13 CET] <BtbN> durandal_1707, you mean the one to wait a week?
[18:02:35 CET] <BtbN> That was if nobody comes up to fix MSVC. Which happened, as I finally got around to fixing it.
[18:56:38 CET] <BtbN> I guess it's michaelni for the github mirror? But I'm not sure who managed the actual mirroring
[18:59:14 CET] <jamrial> BtbN: nicolas sent his email at the exact same minute you sent your "fixed and pushed" email
[18:59:21 CET] <jamrial> hence the confusion
[19:03:53 CET] <BtbN> I think his mail was also about "Push if nobody fixes it"
[19:04:00 CET] <BtbN> It's fixed, so I don't see an issue
[19:38:27 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:090c0abff9c8: avcodec/bintext: sanity check dimensions
[19:38:28 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:49062a90174b: avcodec/exr: fix invalid shift in unpack_14()
[19:38:29 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:3981fb8d2a03: avcodec/g2meet: Check tile dimensions with av_image_check_size2()
[19:38:30 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:8b5c29b6c2ab: avcodec/truemotion2rt: Check input buffer size
[19:38:31 CET] <cone-549> ffmpeg 03Michael Niedermayer 07master:f9cb17f988cc: avcodec/msmpeg4dec: Check for input end in msmpeg4v34_decode_mb()
[21:27:38 CET] <chance83> is there a way to stop ffprobe decode errors by having it wait to decode until it gets sps/pps?
[21:31:15 CET] <atomnuker> FUCK YEAH IT WORKS
[21:31:17 CET] <BtbN> if a file does not provide sps/pps immediately it's broken. Also, not a question for -devel
[21:31:18 CET] <atomnuker> https://pars.ee/temp/sharpen_vulkan.webm
[21:31:35 CET] <atomnuker> vaapi decode, mapping to vulkan, unsharp_vulkan and a hwdownload
[21:31:51 CET] <atomnuker> speed is _an_order_of_magnitude_ better than opencl
[21:32:07 CET] <durandal_1707> show the numbers
[21:32:19 CET] <atomnuker> 6 frames per second vs 60
[21:32:24 CET] <chance83> BtbN think of udp stream
[21:32:45 CET] <durandal_1707> atomnuker: something is not right!
[21:32:45 CET] <atomnuker> yep, 6 frames per second for opencl sharpening with vaapi interop
[21:32:47 CET] <BtbN> what's with a UDP stream?
[21:33:12 CET] <atomnuker> its 25 for nvidia with opencl and software decoding and manual uploading
[21:33:12 CET] <BtbN> you better use some container that repeats the extradata frequently for a lossy transport
[21:33:31 CET] <chance83> when you attach you arent gauranteed to have it at the start
[21:33:47 CET] <BtbN> well, can't decode until you get it
[21:33:54 CET] <BtbN> also, still not a topic for -devel
[21:34:41 CET] <atomnuker> of course it looks ruined by 20 fucking minutes of libvpx-vp9 encoding but oh well
[21:37:58 CET] <atomnuker> keep in mind this is for a 4k video so its quite intensive
[21:38:46 CET] <atomnuker> I could improve things a lot more for vulkan too, I do work on 16x16 tiles but should probably tune this to whatever the device has
[21:39:08 CET] <durandal_1707> atomnuker: is that convolution of 3x3 kernel?
[21:39:29 CET] <atomnuker> yep, standard sharpen/blur kernel
[21:39:54 CET] <BtbN> now write a CUDA one and compare :P
[21:40:30 CET] <atomnuker> can't, none of the cuda filters work for me, despite hardware decoding working
[21:40:39 CET] <atomnuker> because configure can't find cuda.h
[21:40:40 CET] <BtbN> uh, what? What breaks?
[21:40:51 CET] <BtbN> you need the CUDA SDK to build them
[21:41:09 CET] <atomnuker> from the nvidia website?
[21:41:10 CET] <BtbN> most linux distros have it in their (non-free) repos
[21:41:21 CET] <BtbN> at least Ubuntu and Gentoo do
[21:41:31 CET] <atomnuker> I think I have the sdk, its like a gig on archlinux and provides cuda
[21:41:52 CET] <BtbN> Yeah, that's all you need. Probably need to set proper include paths, as it usually goes into /opt
[21:43:22 CET] <atomnuker> right, that bit me when I tried to install vulkan's validation layer which went into /usr/local/etc/ but here they should've been in /usr/local/share
[21:51:48 CET] <cone-549> ffmpeg 03James Almer 07master:40102a213740: avcodec/Makefile: skip nvdec.h header when nvdec is not enabled
[22:00:51 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:876ecfccfb27: avcodec/dxtory: Remove code that corrupts dimensions
[22:00:52 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:b4135fb335f0: avcodec/diracdec: Use int64 in global mv to prevent overflow
[22:00:53 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:afc85dacba4b: avcodec/jpeg2000dwt: Fix integer overflows in sr_1d53()
[22:00:54 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:6648d3fef6b0: avcodec/aacdec_templat: Fix integer overflow in apply_ltp()
[22:00:55 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:6822bd50c1ea: avcodec/diracdec: Fix integer overflow in mv computation
[22:00:56 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:24a3c45da511: avcodec/cavsdec: Check alpha/beta offset
[22:00:57 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:789a12b140ba: avcodec/smc: Check input packet size
[22:00:58 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:fbf690d79a61: avcodec/utvideodec: Check subsample factors
[22:00:59 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:add3c2468e96: avcodec/bintext: sanity check dimensions
[22:01:00 CET] <cone-549> ffmpeg 03Michael Niedermayer 07release/3.0:b910b3492665: Changelog: update
[23:40:19 CET] <cone-549> ffmpeg 03James Almer 07n3.0.11:HEAD: avcodec/Makefile: skip nvdec.h header when nvdec is not enabled
[00:00:00 CET] --- Wed Feb 28 2018
1
0
[00:43:36 CET] <greentea> JEEB: I see. How about Libmp3lame for x64 msvc windows?
[00:44:28 CET] <JEEB> no idea
[00:44:56 CET] <JEEB> basically depends on how easily you can get a pkg-config pc file from all those things
[00:46:41 CET] <BtbN> pkg-config on msvc is problematic though
[00:46:52 CET] <JEEB> yes and no, it seems to work with libx264?
[00:47:09 CET] <JEEB> also pkg-config has that option for MSVC style parameters
[00:47:18 CET] <BtbN> when I tried it, it tried to mix in "system" libs, and msvc barfed on them
[00:47:18 CET] <JEEB> which may or may not work
[00:47:24 CET] <JEEB> right
[00:47:39 CET] <JEEB> yea, it can be """fun""", that I'm not going to say isn't true
[00:47:56 CET] <JEEB> but at least I've seen someone succeed with libx264, and I think I did at one point too
[00:48:57 CET] <greentea> I have done it with libx264 no problem.
[00:49:21 CET] <BtbN> Generally, I'd say avoid building with msvc if you at all can
[00:49:35 CET] <BtbN> gcc is better at optimising anyway
[00:50:12 CET] <greentea> i would use gcc with visual studio, i guess.....might lose debugging
[00:50:35 CET] <BtbN> Or just don't use Visual Studio. There are other IDEs
[00:50:52 CET] <JEEB> yea if you want to specifically use MSVC's debugger (which is actually surprisingly decent) you need MSVC
[00:51:01 CET] <JEEB> for mingw-w64 you just have gdb
[00:51:05 CET] <JEEB> which can be good enough
[00:51:21 CET] <JEEB> but it sure as hell is less welcoming than MSVS :)
[00:51:28 CET] <BtbN> I guess profiling code on Windows is also pretty much msvc-only
[01:02:51 CET] <greentea> https://pastebin.com/NML50sSX
[01:03:40 CET] <greentea> Getting fatal error LNK1181 : cannot open input file 'm.lib', when using --enable-libvorbis, having libvorbis.lib and libogg.lib in the libdirs
[01:04:59 CET] <hypothete> Hi all, I'm hoping you can clear up some confusion I'm experiencing. Can FFmpeg export transparent GIFs? I'm producing animated GIFs successfully from transparent PNGs, but the background is always black.
[01:05:16 CET] <BtbN> yeah, that's it picking up a "system"-lib, which msvc simply does not have
[01:30:40 CET] <greentea> is it possible to build m.lib or is it a msvcr thing?
[01:30:52 CET] <greentea> JEEB or anyone :)
[01:48:01 CET] <CowboyPride> Evening all, I'm attempting to compile ffmpeg but keep getting an errror. I've done much searching on google, verfiying by dependcies are building correctly and even attempted many of the fixes found but to no success.
[01:49:17 CET] <CowboyPride> The gist of the error is `ERROR: x265 not found using pkg-config` but x265 is indeed being built and is showing in the bindir where it should be.
[01:50:10 CET] <marcurling> Hello, which option should I set to encode an interlaced source interlaced (and will the field order will be the same by default)?
[01:50:29 CET] <CowboyPride> I first was trying to use a script to automate it based upon instructions I've found, but then afterwards went through manual process of compling each compent and still arrive at the same result.
[01:50:56 CET] <CowboyPride> My install script is here, https://pastebin.com/raw/CQdXgRTV
[01:51:53 CET] <CowboyPride> My build result for x265 and the end result for ffmpeg along with ffbuild/console.log can be found here, https://pastebin.com/raw/5PkzMEHY
[01:53:30 CET] <CowboyPride> I've also been searching items showin in console.log have yet to get a successful build.
[01:53:49 CET] <CowboyPride> Any assistance would be appreciated.
[01:56:06 CET] <CowboyPride> I'm trying to this to build successfully so that I can include this in a docker build.
[01:56:38 CET] <furq> CowboyPride: --extra-libs=lpthread
[01:57:16 CET] <CowboyPride> Thanks, let me try that.
[01:59:35 CET] <CowboyPride> Cool, that solves the x265 error, now I can move on the next error I just got.. C compiler test failed, hopefully shouldn't have much more problems.
[02:01:50 CET] <CowboyPride> "gcc: error: lpthread: No such file or directory", at least I'm getting somewhere now.
[02:09:39 CET] <Laurenceb_> hi
[02:09:52 CET] <Laurenceb_> has anyone ever looked at dashcam metadata encoding?
[02:10:30 CET] <Laurenceb_> I've got a cobra dashcam and wanted an automated way to extract gps data from files loaded onto a server
[02:22:58 CET] <marcurling> Hello, does ffmpeg has something like a -quiet option for he doesn't spend time in verbosing all errors?
[02:23:33 CET] <furq> -v error
[02:23:49 CET] <furq> you probably also want -stats or else it'll hide the stats bar
[02:23:51 CET] <marcurling> :me thanks furq
[04:22:16 CET] <CowboyPride> I finally have a working build, it's compiling now... Been a very long day. Much thanks furq
[05:48:05 CET] <kota1> I'm using ffmpeg to do a stream, and I"m running into inconvenient behavior
[05:48:21 CET] <kota1> I'm using the realtime filter to output the stream in, well, realtime
[05:48:30 CET] <kota1> My files have subtitles that I'm burning into the stream
[05:49:37 CET] <kota1> If I try to seek the file using output seeking, the subtitles appear at the proper time (a line spoken at 00:30 is seen/heard at the same time subtitles appear for 00:30), but it doesn't jump to that location of the file
[05:49:56 CET] <kota1> because of the realtime filter, I have to sit and wait for the seek to get there in real time, which doesn't do me any good.
[05:50:48 CET] <kota1> If I try to seek the file using input seeking, it seeks immediately, but the subtitles do not appear at the proper time (a line spoken at 00:30 in the new timecode does not have its appropriate subtitle, the subtitles start appearing as though the file hadn't been seeked at all)
[05:51:14 CET] <kota1> Is there a way to reconcile this behavior so that I can seek a file, output it in real time for the stream, and have the subtitles timed properly?
[05:52:53 CET] <kota1> ffmpeg -ss 00:30:00 -i file.mkv -vf subtitles=file.mkv,realtime gives me mistimed subtitles
[05:53:26 CET] <kota1> ffmpeg -i file.mkv -ss 00:30:00 -vf subtitles=file.mkv,realtime gives me aligned subs, but takes 00:30:00 to start streaming
[12:45:20 CET] <kms_> how to trim audio to video stream length?
[12:55:01 CET] <Nacht> Anyone know what this means? : "Application provided invalid, non monotonically increasing dts to muxer"
[12:56:10 CET] <Nacht> I got this bunch of files made by Rotter in both OGG and AAC. Yet when I want to convert them to MPEGTS, I get gaps with AAC between concatted files, and with OGG I suddenly get 24 hours and 50 mins out of 24 hours of data.
[12:56:23 CET] <Nacht> Now I recon the extra 50 mins comes from the correction made to the PTS/DTS
[13:23:26 CET] <JEEB> Nacht: DTS did not increase between packets
[13:28:38 CET] <Nacht> Hmmm. If I use the AAC, I get 24 hours, but gaps between the TS files, yet when I use the OGG I get an extra 50 mins. Is there a way to tell ffmpeg to skip the invalid DTS packages ?
[13:32:38 CET] <terminalator> Which options would you recommend when using ffmpeg for making gifs?
[19:54:27 CET] <hojuruku> If you google: qtdemux qtdemux_parse_trak:<qtdemux0> Track shorter than 20% (gstreamer trying to read what ffmpeg vaapi creates with a rx560 mesa-git vaapi) you'll only come up with me talking about it :( That's the error that gstreamer gives. vlc is suggesting the first two frames are no good. How do you analyse a mp4 file for iso standards compliancy?
[19:54:58 CET] <JEEB> the container or the content?
[19:55:16 CET] <JEEB> because mp4 is one thing, and then the contained H.264 or H.265 or whatever track is separate
[20:10:55 CET] <hojuruku> i'm looking at it in full TRACE level debugging in gstreamer, it's got different time scale: 1/1000 sec/ duration: 5834998 for the audio and the video
[20:16:20 CET] <JEEB> time scale being different between tracks is completely normal
[20:19:17 CET] <hojuruku> JEEB: here's some useful information. What do you think of this ffprobe on the stream? https://pastebin.com/TRVM9XiH
[20:57:56 CET] <alexpigment> i'm making some audio files for testing, and i just ran across something kinda odd
[20:58:23 CET] <alexpigment> if i encode this 96/24 flac file without specifying anything, it preserves the 24-bit aspect
[20:58:32 CET] <alexpigment> but i can't specify 24 explicitly it seems
[20:58:39 CET] <alexpigment> -sample_fmt s24 doesn't work
[20:59:03 CET] <alexpigment> and ffmpeg -sample_fmts only has 8, 16, 32, and 64bit depths
[21:00:28 CET] <alexpigment> oh, i guess i just specify s32...
[21:00:30 CET] <alexpigment> weird
[21:01:56 CET] <durandal_1707> flac accepts only 16 or 32 bit pcm bit depth
[21:02:12 CET] <alexpigment> so what is a 24-bit flac then?
[21:02:14 CET] <durandal_1707> and encodes 24bit for 33 case
[21:02:26 CET] <alexpigment> so is there a way to make a 32-bit flac?
[21:02:35 CET] <alexpigment> not that i care to make that; i'm just making a test bank
[21:03:14 CET] <durandal_1707> 32 bit flac is not posssible practically
[21:03:19 CET] <alexpigment> k
[21:07:54 CET] <furq> there are other lossless formats that support 32-bit if that's of any interest to you
[21:09:24 CET] <alexpigment> well i know PCM does it
[21:09:28 CET] <alexpigment> i'm sure there are others
[21:09:38 CET] <alexpigment> i'm really just trying to create every permutation of flac at the moment
[21:09:48 CET] <furq> well i have some annoying news for you
[21:09:56 CET] <furq> apparently there is a flac encoder that does 32-bit int
[21:10:02 CET] <alexpigment> great ;)
[21:10:04 CET] <furq> i have no idea if libflac will decode it though
[21:10:21 CET] <furq> http://flake-enc.sourceforge.net/
[21:11:10 CET] <alexpigment> well, if the vast majority are 16 and 24-bit, i'm fine with this test bank
[21:11:16 CET] <alexpigment> does 8-bit flac exist?
[21:12:14 CET] <furq> [flac @ 0x80d4bba00] Specified sample format u8 is invalid or not supported
[21:12:16 CET] <furq> apparently not
[21:12:30 CET] <alexpigment> oh yeah, i guess it says s16 and s32 right here during encode
[21:12:40 CET] <alexpigment> sorry, i read that and didn't fully process it
[21:13:02 CET] <alexpigment> i'm also listening to an 8khz flac file right now :)
[21:13:08 CET] <furq> yeah i was about to say
[21:13:11 CET] <furq> apparently libflac does it
[21:13:25 CET] <alexpigment> k, i may look into that next
[21:13:26 CET] <durandal_1707> use float and wavpack
[21:14:15 CET] <alexpigment> wavpack is on my list but it's down the chain a little bit
[21:14:20 CET] <alexpigment> i want to hit the common formats first
[21:14:34 CET] <alexpigment> (mp3, pcm, aac, ogg, flac, etc)
[21:14:34 CET] <furq> Stream #0:0: Audio: flac, 44100 Hz, mono, s16 (8 bit)
[21:14:35 CET] <furq> fun
[21:15:05 CET] <alexpigment> so how do you get an 8-bit file?
[21:15:14 CET] <alexpigment> do you have to feed it an 8bit source and then use s16?
[21:15:15 CET] <furq> i encoded an 8-bit wav and then used the flac cli
[21:15:19 CET] <alexpigment> gotcha
[21:15:21 CET] <furq> i assume there's some way to do it with ffmpeg but idk how
[21:15:31 CET] <alexpigment> yeah, i only know about sample fmt
[21:15:32 CET] <furq> the only way i know to set the bit depth with flac is -sample_fmt and that doesn't work
[21:15:42 CET] <durandal_1707> 8bit needs heavy dither
[21:15:44 CET] <alexpigment> i bet there's a filter to convert to 8bit
[21:15:57 CET] <furq> durandal_1707: i don't think he's that bothered about sound quality
[21:16:00 CET] <durandal_1707> and it sounds bad
[21:16:00 CET] <alexpigment> well fortunately, i'm not too concerned about the quality
[21:16:01 CET] <alexpigment> yeah
[21:16:02 CET] <alexpigment> :0
[21:16:13 CET] <alexpigment> i'm not really trying to squeeze out all the quality i can for 8bit ;)
[21:16:37 CET] <alexpigment> this is more about "oh, does something fail when i throw a file at it"
[21:16:58 CET] <furq> it is probably worth testing other flac encoders
[21:17:12 CET] <furq> i know some of them use features that libflac doesn't that are part of the spec and some that aren't part of the spec
[21:17:12 CET] <alexpigment> yeah, you're probably right
[21:17:15 CET] <alexpigment> i'll put that on my list
[21:17:18 CET] <furq> flaccl will definitely encode stuff outside of spec
[21:17:32 CET] <furq> i'd put that down the list though because pretty much everyone uses libflac or ffmpeg afaik
[21:18:13 CET] <alexpigment> yeah, probably a good point
[21:18:55 CET] <furq> ape, wv, shn, tta and tak are the only other lossless formats i've ever seen in the wild
[21:19:00 CET] <furq> in order of how often i've seen them
[21:19:12 CET] <alexpigment> i don't even know what tta or tak are
[21:19:19 CET] <furq> stuff like optimfrog and LA aren't even worth testing really
[21:19:26 CET] <alexpigment> and ape and shn i haven't seen since flac really took off
[21:19:28 CET] <furq> hardly anything even decodes them
[21:19:35 CET] <furq> there's still a lot of shn on archive.orgf
[21:19:36 CET] <furq> -f
[21:19:44 CET] <alexpigment> yeah, i'll definitely test it
[21:19:49 CET] <furq> and ape is popular on non-western p2p
[21:19:57 CET] <alexpigment> ape is popular in 2001
[21:19:58 CET] <alexpigment> ;)
[21:19:58 CET] <furq> got to get that extra 1% compression
[21:20:01 CET] <furq> yeah pretty much
[21:20:08 CET] <furq> it's popular in countries where they haven't upgraded anything since 2001
[21:20:11 CET] <alexpigment> haha
[21:20:30 CET] <alexpigment> if you find a house with a VCD player, you might find an APE file or two
[21:21:22 CET] <furq> i've seen plenty of ape in the last few years
[21:21:29 CET] <furq> any reasonable person just converts it to flac though
[21:22:12 CET] <furq> decoding ape ultra quality is actually slower than encoding flac -8 here
[21:22:31 CET] <furq> when i've encoded it it's slowed the conversion down by more than 50%
[21:22:56 CET] <hojuruku> https://bugs.freedesktop.org/show_bug.cgi?id=105277 i've taken the time to write up the bug for ffmpeg's vaaapi with mesa git's radeonsi driver on polaris hardware creating corrupt streams. What is the avc flag in mp4 video stream do.. see the ticket
[21:23:18 CET] <hojuruku> < is_avc=true
[21:23:18 CET] <hojuruku> < nal_length_size=4
[21:23:18 CET] <hojuruku> ---
[21:23:18 CET] <hojuruku> > is_avc=false
[21:23:18 CET] <hojuruku> > nal_length_size=0 - will that cause problems is_avc=false?
[21:23:24 CET] <alexpigment> fortunately, audio encoding these days really is trivial for most formats. if one codec is slower but much more compatible, i'll take the slower option every time
[21:23:39 CET] <furq> i meant ape decoding
[21:23:50 CET] <alexpigment> oh i read that wrong
[21:23:54 CET] <alexpigment> decoding is slower than encoding flac
[21:23:55 CET] <alexpigment> gotcha
[21:23:57 CET] <furq> yeah
[21:25:31 CET] <hojuruku> JEEB: does that bug report make the issue clearer. I really appreciate the help you've given me with this on and off over the last month.
[21:28:29 CET] <jkqxz> hojuruku: Does it work if you make a raw file and then remux it afterwards?
[21:29:20 CET] <jkqxz> That is, don't make the mp4 file in one step.
[21:30:16 CET] <jkqxz> The Mesa VAAPI implementation doesn't support packed headers, so you end up with no extradata in the file if you mux directly to mp4 or other format with global headers.
[21:33:55 CET] <chance83> is there a way to stop ffprobe decode errors by having it wait to decode until it gets sps/pps?
[21:34:04 CET] <alexpigment> furq: are you aware of any optimizations flac makes for 22khz? this should sound way worse than it does
[21:34:36 CET] <furq> not really but i've never encoded anything other than 16/44 or 16/48
[21:34:45 CET] <alexpigment> it's really weird
[21:34:49 CET] <hojuruku> jkqxz: can you give an exmaple of how to try this. the corrupted file of sorts is on the freedesktop ticket (8mb)
[21:34:57 CET] <alexpigment> i would have no idea it wasn't 44 or higher
[21:35:04 CET] <hojuruku> jkqxz: you can only see it's corrupt if you try and play with totem / gstreamer or one of many hardware players.
[21:35:08 CET] <alexpigment> without a side by side. and even then, i'm having a hard time hearing the difference
[21:35:59 CET] <hojuruku> jkqxz: with avc off and a different nal_length_size=0 is that a problem?
[21:37:01 CET] <jkqxz> Yeah, your file there works fine in an ffmpeg-based player (e.g. mpv). So use one of those or remux it afterwards.
[21:42:32 CET] <philipp64> hi. got a newbie developer question... I want to be able to test network performance on video streaming on a headless device. I'm thinking I could write a null rendering output device.
[21:43:09 CET] <philipp64> I want it to render in realize, so it would "pace" itself to the frame rate, and then allow me to measure jitter, loss, etc. any pointers on adding such an output driver?
[21:56:59 CET] <hojuruku> GST_DEBUG=3 totem https://bugs.freedesktop.org/attachment.cgi?id=137664 , see if it works.
[21:57:00 CET] <hojuruku> https://bugs.freedesktop.org/show_bug.cgi?id=105277#c2
[21:57:38 CET] <hojuruku> The source file is throwing ffmpeg off, vaapi encoding works perfectly with other source files such as big buck bunny the plot thickens jkqxz JEEB
[22:00:36 CET] <jkqxz> And does this new file work if you remux it after the encode?
[22:03:15 CET] <jkqxz> Like "ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.file -vf scale_vaapi=w=1366:h=768 -c:v h264_vaapi -b:v 2000k -qp 20 -bf 0 -profile:v constrained_baseline -quality:v 0 -level:v 3.1 -coder:v cavlc intermediate.h264 ; ffmpeg -i intermediate.h264 -c:v copy output.mp4" or something.
[22:07:34 CET] <hojuruku> jkqxz: i'll give that a test, but i just found out gstreamer has got the same bug, see the ticket new comments. gstreamer is also failing with mesa vaapi on polaris too the same way when it does the encoding.
[22:43:11 CET] <hojuruku> jkqxz: i'm testing it now mate sorry for the delay, someone asked me to check something on the ticket too: https://bugs.freedesktop.org/show_bug.cgi?id=105277#c4 it doesn't relate to that gstreamer bug at all, this is something new.
[22:56:19 CET] <alexpigment> are there lossy formats that support 24-bit audio?
[22:56:54 CET] <alexpigment> i'm not seeing any indication of bit depth in the resultant files (aac, ac3, ogg, mp3, etc)
[22:58:34 CET] <JEEB> lossy formats generally don't have a "bit depth"
[22:58:41 CET] <alexpigment> i was starting to get that vibe
[22:58:46 CET] <JEEB> which is why most lossy decoders output float
[22:58:50 CET] <alexpigment> yeah
[22:58:56 CET] <alexpigment> ftlp (24-bit) is what they all show
[22:59:02 CET] <alexpigment> er
[22:59:03 CET] <alexpigment> fltp
[22:59:21 CET] <alexpigment> that's in the encoding info that ffmpeg spits out
[22:59:23 CET] <JEEB> then you get to dither that to whatever value space you need at the end
[22:59:48 CET] <alexpigment> well, i guess that saves me some trouble on these batch file encodes, at least
[22:59:50 CET] <JEEB> that said I think the DTS spec requires specific decoding so that the attachment extensions can be added to it
[23:00:17 CET] <JEEB> so it in theory has a bit depth in output, and then on that decoded output you get a crankload of extensions like the XLL one
[23:00:28 CET] <JEEB> which people call DTS-HD MA (aka "the lossless thing")
[23:00:48 CET] <JEEB> well, not in theory but basically DTS decided that shit gets decoded to this precision in this way
[23:00:55 CET] <JEEB> and then you can hoop things on top of that :P
[23:01:24 CET] <JEEB> but that's kind of the outlier
[23:01:43 CET] <JEEB> and you would in theory get better lossy output by having a full floaty decoding flow
[23:01:50 CET] <alexpigment> well, would dolby's equivalent not be the same?
[23:01:53 CET] <JEEB> no
[23:02:00 CET] <JEEB> truehd is MLP
[23:02:03 CET] <JEEB> which is a separate format
[23:02:15 CET] <alexpigment> ah
[23:02:30 CET] <hojuruku> jkqxz: fmpeg-git -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -t 60 -i pony.mkv -map 0:0 -vf scale_vaapi=w=1366:h=768 -c:v h264_vaapi -b:v 2000k -qp 20 -bf 0 -profile:v constrained_baseline -sn -quality:v 0 -level:v 3.1 -coder:v cavlc -c:a aac -ab 128k -ar 48000 -ac 2 -sn vaapitest3-intermediate.h264; ffmpeg-git -i vaapitest3-intermediate.h264 -t 60 -i pony.mkv -map 0:0 -map 1:1 -movflags +faststart -c:a aac
[23:02:30 CET] <hojuruku> -ab 128k -ar 48000 -ac 2 -sn vaapitest3.mp4 DID NOT WORK :(
[23:03:12 CET] <jkqxz> Um, what even happens if you mux aac into a raw H.264 file?
[23:03:31 CET] <hojuruku> i didn't do that i used map to only take the video stream
[23:04:14 CET] <jkqxz> Why didn't you do it without the audio? That makes it much more confusing.
[23:04:21 CET] <alexpigment> jkqxz: i think we all know the answer to this. the world ends
[23:07:29 CET] <hojuruku> jkqxz: [mp4 @ 0x55a35c67acc0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[23:07:32 CET] <jkqxz> There is also no copy in the send command, which I think means it would be reencoding (presumably with x264).
[23:07:48 CET] <hojuruku> jkqxz: doing it that way may have given me a new error explaining the problem.
[23:08:28 CET] <classsict> hi, someody can explainme or pointme where find what mean this "Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scaler_0'"
[23:08:47 CET] <classsict> I'm use vaapi
[23:12:14 CET] <jkqxz> classsict: <https://trac.ffmpeg.org/wiki/Hardware/VAAPI#SurfaceFormats>
[23:14:52 CET] <classsict> yes, I read, but really I'm a little lost here
[23:15:31 CET] <classsict> ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -ar 48000 -ac 2 -f s16le -i /dev/zero -i input.mp4 -c:v h264_vaapi -b:v 1M -maxrate 1M -bufsize 2M -acodec libopus -ar 48000 -f flv output.flv
[23:15:52 CET] <classsict> I'm create a silence audio stream.
[23:16:28 CET] <classsict> and the input is h264, i'm not sure if hw decoder can decode this, or not
[23:20:44 CET] <atomnuker> you're trying to hardware decode from /dev/null
[23:21:21 CET] <hojuruku> jkqxz: you can't put audio in a .h264 file. btw when it's video only in the mp4 it works in totem. I will go test it in the hardware player now too.
[23:21:24 CET] <hojuruku> [h264 @ 0x556e70a00800] h264 files have exactly one stream
[23:21:25 CET] <hojuruku> Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
[23:21:25 CET] <hojuruku> Error initializing output stream 0:0 --
[23:24:45 CET] <hojuruku> classsict: no audio stream is silence. you want to encode a silent audio stream?... why?
[23:25:12 CET] <classsict> because I have to convert in hls
[23:25:24 CET] <alexpigment> hojuruku: i haven't been following above, but if the problem is that you're trying to make an h.264 elementary stream, and you need to disable the audio, just use -an
[23:25:37 CET] <classsict> and some player expect audio, if not, doesn't work
[23:26:25 CET] <hojuruku> alexpigment: jkqxz told me to put the audio in an elementary stream, that's impossible so i gave my example to combine the video / audio. in doing that got a hint from ffmpeg what is wrong with the mesa encoded h264 stream - TIMESTAMPS in the stream.
[23:26:55 CET] <alexpigment> gotcha
[23:27:17 CET] <alexpigment> sorry, it just seemed like if you were getting the "exactly one stream" error, you needed to explicitly -an the audio
[23:27:28 CET] <alexpigment> anyway, i'll leave it to you and jkqxz to figure it out
[23:30:32 CET] <jkqxz> No, I was trying to suggest leaving the audio out completely because it confuses everything. You definitely don't want to encode audio on the first step because H.264 annex B stream contain only H.264, not anything else.
[23:31:55 CET] <jkqxz> In any case, if all of your stuff can play the video-only file then that indicates the audio is the problem and all of this mucking around with video is a red herring.
[23:33:43 CET] <jkqxz> Or the muxing somehow.
[23:35:25 CET] <hojuruku> jkqxz: or broken timestamps in a video stream confusing some players trying to mux it all together?
[23:35:50 CET] <hojuruku> jkqxz: remember the same command line options are used to encode the audio when i'm using libx264
[23:41:55 CET] <alexpigment> weird. does opus only support 48khz??
[23:44:55 CET] <kerio> yep
[23:45:06 CET] <alexpigment> hmmm
[23:45:11 CET] <alexpigment> seems kinda limiting, but ok ;)
[23:45:19 CET] <kerio> it's a lossy codec
[23:45:54 CET] <kerio> any artifacts caused by the resampling are shadowed by the loss in compression
[23:45:58 CET] <alexpigment> yeah, but if the most common input sample rate is 44100, it seems weird to not accept it
[23:47:30 CET] <kerio> the most common output sample rate is 48000 tho
[23:48:42 CET] <alexpigment> kerio?
[23:48:49 CET] <alexpigment> 1983
[23:48:51 CET] <alexpigment> CD
[23:48:53 CET] <alexpigment> 44.1
[23:49:06 CET] <kerio> k
[23:49:16 CET] <JEEB> broadcast is pretty much all 48kHz
[23:49:21 CET] <alexpigment> there is 35 years of 44.1k audio out there
[23:49:24 CET] <JEEB> while CD and related things are 44.1kHz
[23:49:39 CET] <alexpigment> right
[23:49:41 CET] <furq> the most common output rate is 48khz though
[23:50:15 CET] <alexpigment> if the assumption that opus is only going to be used for audio from video files, then maybe there's a point to be made there
[23:50:29 CET] <furq> most playback paths will resample 44.1 to 48
[23:51:10 CET] <furq> idk about specialist audio equipment but that's a huge minority these days
[23:51:21 CET] <alexpigment> anyway, i realized that the failure was because i was explicitly setting -ar
[23:51:31 CET] <kerio> the assumption is that having one model is simpler than having two
[23:51:31 CET] <alexpigment> honestly, i'm fine with the assumption
[23:51:51 CET] <alexpigment> i just think it's weird that it fails when you specify a non-48000 -ar value
[23:52:10 CET] <furq> that's an ffmpeg/libopus interop failing really
[23:52:17 CET] <furq> the actual opus cli doesn't do that
[23:52:34 CET] <kerio> isn't there some "opus custom" thing that does actually let you pick a sample rate
[23:52:48 CET] <furq> yeah but it's recommended not to use it
[23:52:53 CET] <furq> it's not guaranteed to be decodable
[23:53:09 CET] <JEEB> https://wiki.xiph.org/OpusFAQ#How_do_I_use_44.1_kHz_or_some_other_sampling_…
[23:53:20 CET] <JEEB> the xiph.org FAQ has a thing about non-48kHz rates
[23:53:50 CET] <hojuruku> https://bugs.freedesktop.org/show_bug.cgi?id=105277#c6 JEEB jkqxz holy crap guys you did it - you found a workaround to get my hardware player happy, even though totem isn't appeased. :) :) :)
[23:54:11 CET] <furq> i like how the answer to the question is "how do i use 44.1khz?" is "don't use 44.1khz"
[23:54:14 CET] <furq> -is
[23:54:24 CET] <JEEB> yup, "just resample it around it"
[23:55:05 CET] <alexpigment> k, well it's probably ideal to warn rather than error at -ar 44100
[23:55:17 CET] <alexpigment> that's my 2 cents on it; you may all disagree
[23:55:31 CET] <JEEB> if you didn't specify the rate it wouldn't error out
[23:55:32 CET] <furq> you're probably right but there's probably Reasons that doesn't happen
[23:55:50 CET] <jkqxz> hojuruku: Right, so it probably is the headers. The Intel implementation does have correct headers so I would expect it not to be affected by the same problem, then. (But very interesting if it is!)
[23:55:50 CET] <alexpigment> i'm creating this audio test bank with batch commands, and all of the sudden my script fails massively on opus except for 4 files
[23:55:50 CET] <JEEB> it's just that ffmpeg.c doesn't do resampling in an encoder unless it's part of the encoder in the spec
[23:56:03 CET] <JEEB> or well, FFmpeg doesn't do it :P
[23:56:36 CET] <JEEB> ffmpeg.c would insert the resampler for you if you hadn't told it to keep the input at 44.1kHz
[23:56:43 CET] <alexpigment> right
[23:56:46 CET] <alexpigment> it does
[23:56:50 CET] <hojuruku> jkqxz: i wont copy paste you again - you can add that to freedesktop bugzilla yourself - get some cred for helping fix this issue.
[23:57:17 CET] <alexpigment> i'm just thinking there's no reason to fail. just say "unsupported sample rate, resampling to 48000"
[23:57:29 CET] <JEEB> but the encoder doesn't resample?
[23:57:47 CET] <JEEB> and there must be a reason to require 44100
[23:57:57 CET] <alexpigment> i'm confused
[23:57:59 CET] <JEEB> thus since you have specifically said you want 44100 if 44100 is not good it will error
[23:58:14 CET] <JEEB> read the FAQ I linked :P
[23:58:26 CET] <alexpigment> i did
[23:58:46 CET] <alexpigment> i'm saying that if you don't specify -ar 44100, it resamples for you
[23:58:49 CET] <alexpigment> ffmpeg, that is
[23:58:58 CET] <alexpigment> if you specify -ar 44100, it fails
[23:59:04 CET] <JEEB> yes, since you didn't tell it I WANT 44100
[23:59:09 CET] <alexpigment> do we really need a failure case, since there is no other option?
[23:59:23 CET] <JEEB> well there's plenty of other things that you specify because you want EXACTLY THAT
[23:59:28 CET] <JEEB> this is just one of them
[23:59:47 CET] <alexpigment> on the other hand, you can specify yuv420p for hardware encoders and it uses nv12
[23:59:57 CET] <alexpigment> it's not a consistent standpoint across the board
[23:59:59 CET] <JEEB> I have no idea about that bullshit
[00:00:00 CET] --- Wed Feb 28 2018
1
0
[00:48:49 CET] <atomnuker> FUCK avconfig.h
[00:48:53 CET] <atomnuker> FUCK IT WELL
[00:49:00 CET] <atomnuker> who thought this was a good idea
[00:49:08 CET] <JEEB> \o/
[00:49:25 CET] <atomnuker> lets have a second configure file
[00:49:32 CET] <atomnuker> for each fucking library
[00:49:46 CET] <nevcairiel> the big difference is that its installed
[00:49:48 CET] <atomnuker> which contains the same fucking things as the main one
[00:49:54 CET] <nevcairiel> many projects have an installed version file or something
[00:50:03 CET] <nevcairiel> and it contains hardly the same things
[00:50:09 CET] <nevcairiel> avconfig.h has only a handful of lines
[00:50:18 CET] <atomnuker> yes, but they're all from config.h
[00:51:08 CET] <nevcairiel> the point is its hardly special to have an installed version/build info file
[00:52:45 CET] <atomnuker> why does gcc not error out when libavutil/avconfig.h doesn't exist in any way, shape or form but if I do #include "I_DONT_EXIST.h" it does
[00:53:58 CET] <atomnuker> oh god its using the system installed header
[00:57:25 CET] <iive> is avconfig.h a new thing? i don't remember seeing it.
[00:57:36 CET] <iive> is it ffmpeg thing, or merged?
[00:58:02 CET] <nevcairiel> it exists since forever and on both sides long before the split
[00:58:43 CET] <iive> hum...
[00:59:24 CET] <JEEB> yup
[00:59:33 CET] <JEEB> avconfig.h has been there in different libs for quite a while
[00:59:56 CET] <JEEB> or well, it's included from avutil generally
[01:00:31 CET] <iive> so there is one avconfig.h for all libraries?
[01:00:57 CET] <iive> ops
[01:01:27 CET] <iive> not separate different one for each library?
[01:01:34 CET] <nevcairiel> yes libavutil/libavconfig.h, its global for all of them
[01:01:59 CET] <nevcairiel> it contains a few system-dependent defines needed by public headers
[01:02:00 CET] <iive> ok, then it's just a config.h, changed to be installed
[01:05:03 CET] <atomnuker> yay, it works, I can now fully compile lavu and enable/disable options
[01:06:10 CET] <atomnuker> I'll need to do an ugly fucking hack and move avtime.h (the renamed time.h) to time.h when installing though
[01:07:39 CET] <atomnuker> how is deprecation going to work? keep 2 copies (avtime.h and time.h) around?
[01:07:54 CET] <nevcairiel> shit worked before, why cant you make it work again
[01:08:13 CET] <nevcairiel> clearly compilers can figure it out given the proper options
[01:12:34 CET] <atomnuker> yeah, I guess I can copy the system time.h heder to the build directory
[01:14:08 CET] <atomnuker> nope, guess not
[01:47:07 CET] <atomnuker> pushed to exp_meson on my repo, someone else can take a look at it if they want to
[01:47:54 CET] <atomnuker> reported a bug to meson but I bet you they'll say "not our bug, its ninja's fault" and then that'll go nowhere because that's google's turf
[01:48:09 CET] <JEEB> yea, that's the worst case with google projects
[01:48:36 CET] <JEEB> might take a look later since it seems like it could be quite useful for systems like windows not having configure times of 10min :P
[01:48:53 CET] <atomnuker> it'll still take a while though
[01:49:17 CET] <atomnuker> a lot of the time is spent compiling over and over again for each individual math function
[01:49:52 CET] <atomnuker> so erf, erf2, erf2f, log10f, cosf, powf, llrint, llrintf, rintf, and so on
[01:50:08 CET] <rcombs> nevcairiel: atomnuker: at least it's not pyconfig.h
[01:50:21 CET] <nevcairiel> the endless forking of sub bash processes is whats really making it slow on windows, not the compile tests
[01:50:39 CET] <rcombs> which is literally python's config.h, but installed
[01:50:58 CET] <atomnuker> I thought it was the forking for the compiling tests, but oh well
[01:51:23 CET] <atomnuker> in total there's exactly 45 tests done just for lavu
[01:51:29 CET] <rcombs> it defines _GNU_SOURCE and _XOPEN_SOURCE and such
[01:51:31 CET] <JEEB> that's not too fast enough, but the bash stuff is the really bad stuff
[01:52:03 CET] <JEEB> and yes, I am under no illusion that it is usable yet :)
[01:52:05 CET] <rcombs> unconditionally, too, so if you define them to the correct values before including it, you get redefinition errors
[01:52:21 CET] <JEEB> the configure system in FFmpeg is just so complex :P
[01:52:58 CET] <rcombs> and oh boy, are we replacing configure in ffmpeg
[01:53:03 CET] <rcombs> that'll be fun for me
[01:53:08 CET] <atomnuker> why?
[01:53:35 CET] <rcombs> I have a lot of configure patches in my fork
[01:53:56 CET] <rcombs> most notably the concept of external components
[01:53:59 CET] <JEEB> don't worry, the script isn't going anywhere any time soon
[01:54:07 CET] <JEEB> given its size/features
[01:54:22 CET] <JEEB> I think this is closer to "let's see if this makes any sense"
[01:54:28 CET] <JEEB> PoC in a sense
[01:54:43 CET] <rcombs> I made every codec a tri-state, with external being "built, but not included in the main lib, and instead emitted as a separate .so"
[01:55:11 CET] <rcombs> so you can imagine my chagrin when runtime codec registration vanished
[01:55:22 CET] <nevcairiel> that sounds like a weird concept
[01:56:00 CET] <rcombs> patents are bad, news at 11
[01:56:28 CET] <JEEB> right, so you could have an all-enabled build with things build as separate libs
[01:56:36 CET] <JEEB> and then distro parts of those
[01:56:40 CET] <rcombs> yup
[01:56:56 CET] <rcombs> and only pay for what users actually end up using
[01:57:01 CET] <rcombs> much safer
[01:58:45 CET] <atomnuker> I know rcombs has to encode files by feeding them into a binary encoder one chunk (as a wav file) at a time and then reading the written wave files
[01:59:01 CET] <rcombs> yeah and it makes me hate myself
[01:59:22 CET] <JEEB> reminds me of aac2wav
[05:44:32 CET] <cone-779> ffmpeg 03James Almer 07master:f4709f1b7b90: configure: add missing audio_frame_queue dependency to vorbis encoder
[11:48:45 CET] <durandal_170> is it me, or this year students are extremly impatient and lazy?
[12:22:28 CET] <SortaCore> isn't that all students durandal
[12:32:51 CET] <J_Darnley> Can someone explain how a parser works in ffmpeg?
[12:33:17 CET] <J_Darnley> I need to add features to the dirac parser.
[12:33:39 CET] <wm4> like a BSF, except they can also access a weird dummy AVCodecContext to set parameters parsed from the packet data
[12:33:43 CET] <J_Darnley> But I don't know a thing about them.
[12:34:03 CET] <J_Darnley> I don't know thosework either.
[12:34:36 CET] <J_Darnley> How does it signal to everything else what bytes should be grouped into one frame?
[12:34:59 CET] <nevcairiel> it buffers that internally
[12:35:19 CET] <wm4> well it returns 1 packet at once
[12:35:48 CET] <wm4> so if you're feeding it parts of a packet, it'll buffer that as nevcairiel said, and return it all once it knows there's a packet boundary
[12:36:17 CET] <wm4> though sometimes it might expect that you feed it complete packets, based on the settings
[12:36:20 CET] <nevcairiel> basically you call ff_combine_frame from within the parser with the appropriate parameters
[12:36:56 CET] <nevcairiel> best to just look at one of the existing ones
[12:37:43 CET] <J_Darnley> The dirac one does exist so maybe I need to ask atomnuker about the specifics of it.
[12:38:06 CET] <J_Darnley> I notice that it doesn't call ff_combine_frame
[12:38:31 CET] <nevcairiel> yeah it seems to do some complicated nonsense
[12:38:38 CET] <nevcairiel> either dirac is a terrible format, or someone was naughty
[12:38:51 CET] <J_Darnley> "complicated nonsense" is just dirac all over.
[12:39:14 CET] <wm4> some parsers are only used to "analyze" the data
[12:39:26 CET] <wm4> so libavformat can export all codec parameters or whatever
[12:39:45 CET] <wm4> so this kind of parser would just take a packet and return it as is
[12:40:56 CET] <atomnuker> J_Darnley: if the container or lavf or whatever supports PARSER_FLAG_COMPLETE_FRAMES then the parser is essentially bypassed and the frames are assumed to be unfragmented
[12:41:03 CET] <J_Darnley> Oh wait, there is also the dirac demuxer.
[12:41:17 CET] <atomnuker> so if you demux dirac in mkv that's what you'll get
[12:41:36 CET] <atomnuker> otherwise it'll buffer and attempt to find something that looks like a frame
[12:41:48 CET] <atomnuker> and once it does it'll splice parts together to make a packet
[12:41:56 CET] <atomnuker> inefficient
[12:42:17 CET] <atomnuker> I assume you want to modify it so that it accepts 2 fields as 0's, right?
[12:42:29 CET] <atomnuker> (its the only reason why anyone would want to look at it anyway)
[12:42:36 CET] <J_Darnley> Not yet.
[12:42:45 CET] <J_Darnley> I need to add fragment support to it.
[12:43:39 CET] <J_Darnley> And fragment means something in a dirac stream. (to those unfamiliar with it)
[12:47:22 CET] <J_Darnley> Oh thank god. The dirac demuxer doesn't actually do anything. It is just a "wrapper" on top of a raw demuxer
[12:49:00 CET] <atomnuker> from what I can see the parser scans each fragment for whether it contains something that looks like an end, and if not it'll append it to a growing buffer until it does find an end
[12:49:32 CET] <atomnuker> if it does find something like an end it'll do some checking to see if the offset matches to the size specified in the start of a frame
[12:49:44 CET] <atomnuker> and if it does, it outputs the packet, else it keeps buffering
[12:50:49 CET] <atomnuker> not sure how it would work with slices (dirac fragments)
[12:50:52 CET] <wm4> yeah, for raw demuxers like this you always need a packet splitting parser
[12:51:01 CET] <atomnuker> maybe you should look at the h264 parser
[12:51:24 CET] <nevcairiel> h264 is easy, it has clear start codes and frame/slice boundaries
[12:51:36 CET] <nevcairiel> from looking at the dirac parser, either the author was insane, or the format is
[12:51:53 CET] <wm4> maybe both?
[12:54:51 CET] <atomnuker> well consider this: the identifier for all boundaries is 'BBCD', 32 bits, and packets are usually huge and golomb coded
[12:55:49 CET] <nevcairiel> aliasing protection?
[12:56:15 CET] <nevcairiel> thats the only thing that saves h264, the startcode can never be aliased in the data anywhere
[12:56:30 CET] <J_Darnley> None, as far as I know.
[12:56:45 CET] <atomnuker> the only protection is that there's a 32 bits for the previous unit offset, and 32 bits for the next unit offset
[12:56:46 CET] <J_Darnley> There is more in the header that you sould use as a sanity check
[12:57:08 CET] <atomnuker> so if the start <next> offset matches the end <previous> offset, they match
[12:57:20 CET] <atomnuker> but here's the thing: they're both allowed to be 0
[12:57:34 CET] <atomnuker> if its a stream without an end
[12:58:22 CET] <J_Darnley> And that is despite the spec saying this "The encoded stream forms a doubly-linked list with each picture header indicating an offset to the previous and next picture"
[12:59:19 CET] <nevcairiel> ie. its not really designed for random bitstream access?
[12:59:35 CET] <atomnuker> and its not like 32bits of 'BBCD', then 64 bits of 0s is uncommon since slices are padded (by huge amoutns) and aligned to the nearest byte
[13:01:44 CET] <nevcairiel> i mean its fine if its not, not all codecs are, its only a problem if you try to use it in a manner where this would be required. vp9 would be really hard to re-packetize if you saved it as a raw stream, so people just dont do that
[13:03:43 CET] <SortaCore> https://trac.ffmpeg.org/ticket/6996 what's going on with this ticket
[13:17:22 CET] <jdarnley> I need to read more but I am getting the impression that the parser expects a Picture data unit (which spans many buffer lengths) to be followed by an End Sequence.
[13:18:14 CET] <jdarnley> Whereas a stream with Picture Fragments will have many small data units
[13:19:31 CET] <atomnuker> yep, that's what the parser expects
[13:19:55 CET] <atomnuker> what does the decoder expect? slices or full frames?
[13:21:07 CET] <jdarnley> My hacked up branch supports a single slice.
[13:21:21 CET] <jdarnley> But my hacked up branch is unreliable.
[13:22:09 CET] <atomnuker> JEEB: yay, its not a ninja bug - https://github.com/mesonbuild/meson/pull/3142
[13:22:30 CET] <atomnuker> though I don't know how many compilers support -idirafter
[13:24:01 CET] <atomnuker> icc/gcc/clang all do but meson apparently supports msvc 2015
[13:25:38 CET] <JEEB> atomnuker: cool
[13:56:56 CET] <nevcairiel> atomnuker: how does the current makefiles set this up so this is never a problem, and why cant this just be the same way?
[13:58:04 CET] <atomnuker> not sure, I don't think it includes -I ../libavutil (if building to a separate directory inside the repo) and I can't change or remove cflags included by the build system
[13:59:05 CET] <atomnuker> nope, apparently not even building outside the repo will work
[14:02:29 CET] <nevcairiel> there is implicit_include_directories (boolean) which sounds like you might be able to suppress that include
[14:09:50 CET] <wbs> atomnuker: the normal build system never adds the libav* directories to the include path, only the base dirctory
[14:10:07 CET] <wbs> so everywhere you need to include it by libavutil/time.h to actually get that file
[14:10:18 CET] <atomnuker> except in lavu itself
[14:10:29 CET] <wbs> yes, but there you can distinguish with <time.h> vs "time.h"
[14:12:02 CET] <atomnuker> nevcairiel: wow, that worked, thanks
[14:14:44 CET] <nevcairiel> that particular flag requires meson 0.42, in case you are keeping track of a minimal version
[21:41:14 CET] <vrd> hi can anyone direct me towards how to read in an image in ffmpeg? Thanks in advance!
[21:41:40 CET] <JEEB> that's for the users' channel
[21:42:06 CET] <wm4> same as videos, but yeah what JEEB said
[21:43:31 CET] <vrd> Okay, but I'm trying to implement a filter, and wanted to know how to use my filter inside ffmpeg for an image
[21:44:37 CET] <JEEB> well testing your libavfilter filter should be possible with just the ffmpeg.c application
[21:44:41 CET] <JEEB> no need to make your own API client for it
[21:45:17 CET] <BBB> what have you tried? if the question is more specifically about AVFrame, maybe its OK to ask
[21:45:29 CET] <vrd> Okay ,Thanks :D
[21:46:00 CET] <vrd> Yeah , its more of the AVFilterContext,AVFrame jargon
[21:46:11 CET] <JEEB> ok
[21:46:40 CET] <JEEB> I think I linked this somewhere as a random libavfilter filter that isn't too long
[21:46:43 CET] <JEEB> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavfilter/vf_chromakey.c;h…
[21:46:52 CET] <JEEB> it has the basic struct at the end
[21:47:10 CET] <JEEB> and the basic functions that the function pointers in the struct point to
[21:49:48 CET] <vrd> Getting it a little,Thanks!
[23:23:09 CET] <greentea> Can I ask about help with configuring and building FFmpeg for windows x64 using msvc? (also with libvorbis, libogg)
[00:00:00 CET] --- Tue Feb 27 2018
1
0
[00:28:27 CET] <gagandeep> guys what do you call the library inclusion in gcc like in this code 'gcc -o main.c -lavcodec'
[00:29:06 CET] <gagandeep> the -lavcodec while compiling, i want to read more about this command
[00:37:58 CET] <gagandeep> nevermind it's related to something called pkg-config
[00:45:47 CET] <DHE> gagandeep: pkg-config is a tool that produces the commandline options required for compiling with libraries. avcodec will require avutil among other things, so pkg-config can track that
[00:46:47 CET] <JEEB> as I noted the other day, set PKG_CONFIG_PATH to <your prefix>/lib/pkgconfig where the prefix is what you set in FFmpeg's configure (default is /usr/local)
[00:46:54 CET] <JEEB> and pkg-config --libs libavcodec
[00:46:58 CET] <GTAXL> How do you set HTTPS headers for an HLS, I'm using version ffmpeg version 3.2.2-1~bpo8+1
[00:47:11 CET] <JEEB> will give you the flags to link against libavcodec
[00:47:26 CET] <JEEB> and if you add --cflags you get the stuff to be able to include the headers
[08:46:57 CET] <techbomber> is it better to use 12bit/10bit over 8bit ?
[08:47:16 CET] <pmjdebruijn> without context that question has no answer
[08:47:58 CET] <techbomber> for video encoding
[08:48:01 CET] <pmjdebruijn> but essentialy if you source is 8bit, it's unlikely you'll get a big advantage out of >8bit
[08:48:18 CET] <pmjdebruijn> also >8bit may reduce your video file compatibility with older players
[08:48:27 CET] <techbomber> fair enough
[08:48:44 CET] <techbomber> what does commericial bluray use then
[08:48:49 CET] <pmjdebruijn> but again, you're not providing much information to sensibly answer your question
[08:48:58 CET] <pmjdebruijn> techbomber: 10bit is only available on 4K bluray IIRC
[08:49:05 CET] <pmjdebruijn> but /me isn't an expert by a long shot
[08:49:23 CET] <pmjdebruijn> so you'll likely need a very recent bluray blayer
[08:49:38 CET] <pmjdebruijn> AFAIK 1080p "traditional" BluRay is 8bit
[08:50:01 CET] <techbomber> i see even 12bit now
[08:52:21 CET] <pmjdebruijn> "see" where?
[08:52:33 CET] <pmjdebruijn> anyhow increasing bit depth is increasingly pointless
[08:52:59 CET] <pmjdebruijn> there's a difference what you want/need in edit, vs the final output product
[08:53:08 CET] <pmjdebruijn> higher bit depth mostly makes sense for editing
[08:53:12 CET] <pmjdebruijn> as intermediates
[08:53:33 CET] <pmjdebruijn> the 10bit in output format is mostly to accomodate higher dynamic range displays, which are still fairly uncommon
[08:54:11 CET] <pmjdebruijn> but again, if you're transcoding, and your source is 8bit, it's irrelevant anyhow
[08:54:26 CET] <pmjdebruijn> unless you're going to do some funky editing
[09:07:17 CET] <furq> 10bit will give a minor compression advantage even for 8-bit sources and particularly for animation
[09:07:32 CET] <furq> but support for h264 10-bit is basically nonexistent outside of desktop computers
[09:07:45 CET] <furq> hevc 10-bit is a bit better in that regard
[09:08:31 CET] <furq> if you're looking for picture quality improvements with 8-bit sources then no
[11:03:42 CET] <capreyon> someone plss suggest me the repository link of 360 video filter
[11:03:46 CET] <termos> The AVCodecContext.time_base is `0/2` after `avcodec_parameters_to_context` and `avcodec_open2` when opening my input. This causes my filter graph to segfault as it requires a proper time_base to generate the `buffer` arguments. Is this a bug in the library? Right now I'm forced to use the legacy AVStream.codec AVCodecContext instead, as that's the only one with the correct time_base values
[11:05:44 CET] <durandal_1707> capreyon: are you applying for gsoc?
[11:09:18 CET] <capreyon> yes @durandal_1707
[11:12:01 CET] <durandal_1707> capreyon: search for it on github under name panorama
[11:14:19 CET] <durandal_1707> it should be in ffmpeg fork
[11:20:28 CET] <capreyon> https://github.com/FFmpeg/FFmpeg :@durandal_1707 are you talking about this link?
[11:21:52 CET] <durandal_1707> capreyon: no, but you are looking at repository which is fork of that one, and have panorama branch
[11:22:39 CET] <durandal_1707> s/at/for
[11:34:17 CET] <durandal_170> capreyon: found it?
[12:04:30 CET] <capreyon> someone plss send me the link of 360 video filter repository on github?
[12:06:11 CET] <durandal_170> capreyon: why you dont contact your mentor via mail?
[12:07:33 CET] <capreyon> kk fine thanks @durandal_170
[12:42:02 CET] <shtomik> Can somebody help me with transcoding pleasE?
[12:56:42 CET] <shtomik> Guys, I always have an issue: [mp4 @ 0x7f87ee000600] Application provided invalid, non monotonically increasing dts to muxer in stream 1: -1024 >= -1024 (and it's always video stream), when I want to transcode mp4 file to mp4 file, I use transcoding.c example files, what could it be? thanks!
[14:51:41 CET] <classic> Hi, somebody know how I can use vaapi with two graphic cards? because alternate in /dri128 and /dri129
[14:51:48 CET] <classic> I need get this fixed.
[15:33:06 CET] <shtomik> Guys hi, who can explain it to me, I'm using transcoding.c to transcode mp4 to mp4(with different encoder params) file. But on the output I have mp4 with low fps and bitrate, in result - twice longer?
[15:33:58 CET] <shtomik> But fps and bitrate I set x2. Thanks!
[15:34:30 CET] <shtomik> Input fps = 23, I set output fps = 30, bitrate = 2k output bitrate = 4k.
[16:02:07 CET] <caim> Hello again :-) Anyone knows what might be wrong with these commands ? /usr/local/bin/ffmpeg/ffmpeg-3.4.1-64bit-static/ffmpeg -i rtmp://ipaddress:1935/live1/streamname -f image2 -s 1000x564 -vf fps=1/60 -an -updatefirst 1 -y /var/www/streamx.jpg . Trying to generate thumbnails for a bunch of streams but it seems really hit or miss. Sometimes it takes one minute , sometimes it takes even 5 or 6 ...
[16:02:40 CET] <King_DuckZ> hi, can somebody point me to a recent tutorial/guide/example on how to write a video file using ffmpeg please?
[17:03:47 CET] <gh0st3d> Anyone know of good ways to programmatically create animated videos? Currently using phantomjs with an animated html file and piping screenshots to ffmpeg. It runs a little slower than I'd like with not the best quality, and some of the animations aren't supported in phantom it seems
[17:27:30 CET] <blap> render each frame to a png?
[17:37:53 CET] <saml> you got some html crap and you want to turn that into video?
[17:38:22 CET] <saml> can't think of a better way than screencapture
[17:38:36 CET] <saml> unless browser can export frames
[17:39:43 CET] <DHE> I've seen browser javascript that can export frames. but I think I'd rather do the screen capture method
[17:40:46 CET] <saml> use chrome cast :P
[17:41:01 CET] <DHE> that... might actually work..
[17:41:24 CET] <gh0st3d> Lol, i like all the phrasing. Yeah I'm just wondering if there's some magical library that's relatively easy to use to create animated videos without HTML
[17:42:05 CET] <saml> what's it for? what are you building?
[17:42:05 CET] <gh0st3d> I've been googling for a week or so though, so at this point I'm pretty confident there's not haha
[17:42:22 CET] <saml> are you generating video for customer support through automated web page interaction?
[17:42:47 CET] <gh0st3d> We're starting to create content videos, and I'm building a system that creates "personalized" versions for our members. It basically just adds 10s to the end of the video with their profile showing
[17:42:59 CET] <gh0st3d> I have it working with a static image, and I've got the rough version of the animated HTML with their profile
[17:43:23 CET] <gh0st3d> But the animated is pushing the time close to 30s which will cause it not to work with the serverless method I was planning on
[17:43:49 CET] <saml> sounds pretty web scale. good luck
[17:44:16 CET] <gh0st3d> Thanks, appreciate it!
[18:31:48 CET] <joao> Hi there, can anyone help me?
[18:32:34 CET] <pomaranc> joao: no
[18:33:25 CET] <joao> I have 2 ".m3u8" links, and i want to use ffmpeg to rtmp them to 2 diferent places. But i dont know how
[18:35:09 CET] <joao> Can anyone help?
[18:40:42 CET] <joao> I have 2 ".m3u8" links, and i want to use ffmpeg to RTMP them to 2 diferent places. But i dont know how
[18:42:18 CET] <saml> joao, two ffmpeg commands?
[18:42:40 CET] <saml> ffmpeg -i 1.m3u8 <input options like codec> rtmp://1
[18:42:49 CET] <saml> ffmpeg -i 2.m3u8 <input options like codec> rtmp://2
[18:43:18 CET] <saml> *output options
[18:44:49 CET] <joao> didn't work
[18:44:58 CET] <joao> it stops after 5seconds
[18:45:35 CET] <joao> saml thanks for trying to help :)
[18:45:40 CET] <saml> i have no idea
[18:46:02 CET] <saml> what's rtmp endpoint? twitch?
[18:47:03 CET] <joao> widestream.io
[18:47:13 CET] <saml> wow nice
[18:47:28 CET] <saml> did you try streaming a regular video file to rtmp?
[18:47:45 CET] <saml> like ffmpeg -re -i yolo.mp4 .... rtmp://widestream.io
[18:47:52 CET] <joao> yes,take a look
[18:47:53 CET] <joao> http://widestream.io/live-24134
[18:48:04 CET] <saml> nice
[18:48:12 CET] <saml> do you have example url of m3u8?
[18:48:21 CET] <saml> actually i never tried streaming m3u8 to rtmp
[18:48:53 CET] <saml> wow it's live streaming now at widestream.io
[18:48:59 CET] <saml> is that copyrighted movie?
[18:49:16 CET] <joao> it is a tv channel actually
[18:49:22 CET] <joao> from Portugal
[18:50:03 CET] <saml> that's nice
[18:51:18 CET] <joao> the ideia is to make this for like 3 or 4 channels
[18:51:26 CET] <joao> but i can only once at time
[18:51:30 CET] <joao> :(
[19:02:45 CET] <alexpigment> hey guys, i've got a question about using filters with multiple input files
[19:03:09 CET] <alexpigment> i'm specifying -i [infile] twice so that i can adjust the audio/video sync with -itsoffset
[19:03:15 CET] <alexpigment> i've got a handful of video filters being used
[19:03:23 CET] <alexpigment> but i also need to apply dcbias to the audio
[19:03:32 CET] <alexpigment> do i do two -vf chains?
[19:04:07 CET] <alexpigment> oh nm
[19:04:08 CET] <alexpigment> -af
[19:04:12 CET] <alexpigment> sorry :)
[19:12:36 CET] <saml> i use -filter_complex because i'm cmoplex
[19:23:31 CET] <alexpigment> -filter_complex requires that i look at examples every time i use it, so i try not to use it :)
[19:35:58 CET] <gagandeep> guys is the tutorial on writing a video player in 1000 lines, deprecated, because on using the function av_register_all(), the compiler is printing deprecated
[19:50:38 CET] <King_DuckZ> is there any difference between av_register_all() and avcodec_register_all()? which one should I use?
[19:52:20 CET] <gagandeep> King_DuckZ: even though it was deprecated, my compiler was giving error because i was not providing flags for libswscale, now it is compiling properly
[19:53:19 CET] <King_DuckZ> gagandeep: which one is deprecated?
[19:54:06 CET] <JEEB> King_DuckZ: in the latest master av_register_all is no longer in the docs
[19:54:24 CET] <JEEB> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=doc/APIchanges#l33
[19:54:31 CET] <JEEB> it's in the APIchanges doc
[19:55:01 CET] <King_DuckZ> JEEB: I'm following the 3.4 docs, isn't that the latest version?
[19:55:09 CET] <JEEB> it's the latest released version
[19:55:24 CET] <JEEB> the difference is that av_register_all is in libavformat
[19:55:37 CET] <JEEB> and avcodec_register_all is in avcodec
[19:56:26 CET] <JEEB> that said I only called av_register_all :D
[19:56:30 CET] <JEEB> in my example code I wrote some time ago
[19:56:43 CET] <King_DuckZ> so I should call both? or just avcodec_register_all() since the other one is getting removed?
[19:56:43 CET] <JEEB> (and avfilter_register_all
[19:56:50 CET] <JEEB> both are removed
[19:57:08 CET] <JEEB> the whole pseudo-registration stuff is going away
[19:57:09 CET] <King_DuckZ> :s
[19:57:24 CET] <JEEB> but as it notes it's still within deprecation period
[19:57:27 CET] <JEEB> so just call av_register_all
[19:57:31 CET] <JEEB> that seems to be enough
[19:57:38 CET] <King_DuckZ> ok
[19:57:51 CET] <JEEB> (or you can make an ifdef or configure check in your project about it)
[19:58:24 CET] <King_DuckZ> I'm trying to follow this http://ffmpeg.org/doxygen/3.4/encode_video_8c-example.html and I'm getting confused
[19:59:02 CET] <JEEB> don't follow that one specifically, since it does a lot of stuff that you can do better with the helpers in the API
[19:59:39 CET] <JEEB> like the dummy image generation
[19:59:53 CET] <JEEB> also you generally don't want to just fwrite your stuff out
[20:00:04 CET] <JEEB> instead you want to use avformat to properly write it out in a container
[20:00:11 CET] <King_DuckZ> ok, do you have a link to some tutorial or example then please? in my program I have frames being generated by the code, and I just need to write the backend that saves them in a video file
[20:00:37 CET] <King_DuckZ> so I don't care about reading at this point
[20:01:10 CET] <JEEB> either the transcoding or muxing example
[20:01:42 CET] <JEEB> it contains a whole lot more than you need, but you already probably grasp the idea of having an AVFrame and filling it with your image?
[20:01:56 CET] <JEEB> then you just need to initialize an encoder and feed/receive frames from it
[20:02:05 CET] <King_DuckZ> that's wishful thinking :p
[20:02:14 CET] <JEEB> this API is the currently recommended decoding/encoding API https://www.ffmpeg.org/doxygen/trunk/group__lavc__encdec.html
[20:02:44 CET] <JEEB> (it has been for quite a while, we don't switch the internals around too often vOv)
[20:03:23 CET] <King_DuckZ> ok, I'll have to go catch my train, I'll look into this tomorrow again, thanks so far!
[20:04:21 CET] <JEEB> but yea, basically you want to 1) make your images into AVFrames, 2) open an encoder 3) feed it stuff while you can't receive stuff 4) when you receive stuff you then open the avformat context and add stream(s) and write header -> start writing
[20:04:35 CET] <JEEB> at the end flush encoder encoder and write footer
[20:04:55 CET] <JEEB> close avformat context and consider the thing written
[20:07:28 CET] <shtomik_> JEEB: Hi JEEB, can you help me with transcoding, please? I don't understand why I have a problem with audio if I use a avformat devices, for transcoding to mp4.
[20:08:57 CET] <JEEB> shtomik_: as soon as I saw those mac specific input things all my interest stopped. also it's telling that your problem might not be in the code per se if it works without the video
[20:13:02 CET] <shtomik_> JEEB: I think that the problem with timing, because on output I have more video packets than audio(Video packets for 30 sec and audio for 25)
[20:13:23 CET] <shtomik_> JEEB: but with ffmpeg it's work perfectly ;(
[21:54:11 CET] <marcurling> Hello, is there some keys I can bash while encoding to have stats, pause or whatever?
[21:57:32 CET] <DHE> unless you changed the loglevel, you should get a status line refreshed every 1/2 second by default
[22:01:18 CET] <marcurling> DHE I got it, just to know if you could have some other infos or tune some params while encoding... Thanks indeed
[22:51:09 CET] <greentea> I am having trouble trying to get libvorbis, libogg, into ffmpeg in a static build using MSVC compiler and link, windows x64 using msys shell
[22:51:34 CET] <greentea> https://pastebin.com/wqYmRbMr
[23:00:42 CET] <trfl> I'm trying to do hardsubbing (burn in subtitles) by piping mpv into ffmpeg, and am having problems keeping the colorspace from getting lost
[23:00:56 CET] <trfl> for example, the original mkv that i'm reading from will say the following if handed to ffmpeg: Stream #0:0(jpn): Video: h264 (High 10), yuv420p10le(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9]
[23:01:17 CET] <trfl> but if I transcode it to libx264, I get this: Stream #0:0(jpn): Video: h264 (High) (H264 / 0x34363248), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9]
[23:02:43 CET] <JEEB> could either be a filter chain not passing that on issue, or something else not passing it on
[23:03:02 CET] <JEEB> the progressiveness is by default so that's kept, just the bt.709 flag is lost
[23:03:31 CET] <trfl> the full command I'm attempting currently is: ffmpeg -i blurei.mkv -map 0:v -vcodec libx264 -t 1 -f nut hardsub/ffmpeg.nut
[23:03:41 CET] <trfl> losing the bt.709 flag could cause issues for some players right?
[23:04:07 CET] <JEEB> well thankfully your resolution is something that everything expects to be BT.709
[23:04:14 CET] <JEEB> larger than 1024x576
[23:04:27 CET] <JEEB> but still, would be nice if it would keep that
[23:04:39 CET] <trfl> yeah, was hoping the same command would work for dvdrips as well
[23:04:41 CET] <JEEB> (when no relevant conversions happened from the filter chain)
[23:04:50 CET] <alexpigment> trfl: you can specify the colorspace stuff
[23:05:03 CET] <JEEB> yes, but that's kind of besides the point :D
[23:05:19 CET] <alexpigment> -color_primaries bt709 -color_trc bt709 -colorspace bt709
[23:05:33 CET] <alexpigment> the real issue though is losing high 10
[23:05:34 CET] <JEEB> if he isn't doing actual colorspace conversions the metadata should stay, and if there was a conversion the AVFrame should be updated to match
[23:05:44 CET] <alexpigment> in which case, you need to have a 10-bit version of x264 in your ffmpeg
[23:05:45 CET] <JEEB> well generally hardsubbing is done for hw compatibility
[23:05:57 CET] <JEEB> and you well know how well 10bit is supported in hwdec :)
[23:06:04 CET] <trfl> that's nice to know (and I'll use that if push comes to shove) but I was hoping for a "simple" command that could be handed an .mkv file and it'd automatically Do The Right Thing without having to tweak it
[23:06:06 CET] <JEEB> so that might be as expected
[23:06:13 CET] <trfl> i'll explicitly drop Hi10p and go for yuv420p8
[23:07:11 CET] <JEEB> in theory since ffmpeg.c is "static as fuck" it could wait until it gets the first image from the filter chain to initialize the encoder
[23:07:15 CET] <JEEB> and set the values from the filter chain
[23:07:28 CET] <JEEB> after which the only thing that's required is to make sure the filters pass it on
[23:09:40 CET] <trfl> sounds like a good approach in the long run yea
[23:09:55 CET] <trfl> I suppose the alternative would be to always convert the colorspace to bt709 on the way out, and then tagging it with that? I'm not familiar with kind of loss you'd get out of that
[23:10:04 CET] <trfl> assuming a dvdsrc that is
[23:10:38 CET] <JEEB> DVDs are BT.601/the other very similar thing
[23:10:52 CET] <JEEB> which is what most players expect for 1024x576 or smaller
[23:10:56 CET] <trfl> ooh, thought they were night and day :\/
[23:11:19 CET] <JEEB> well, I meant there are two very similar if not the same values which DVDs use
[23:11:33 CET] <JEEB> there is a small diff between BT.709 and BT.601 but even that is barely visible usually
[23:11:43 CET] <JEEB> BT.709 vs BT.2020 is where the gamut goes wiiide
[23:12:02 CET] <alexpigment> i always thought 601 vs 709 was just limited vs full
[23:12:07 CET] <alexpigment> but i could be very wrong about that
[23:12:12 CET] <JEEB> http://avisynth.nl/index.php/Colorimetry#How_can_I_see_if_the_correct_stand…
[23:12:27 CET] <JEEB> that's the same image rendered as either Rec.601 or Rec.709
[23:13:06 CET] <alexpigment> yeah that's pretty subtle..
[23:13:15 CET] <alexpigment> definitely more subtle than limited vs full range
[23:13:19 CET] <JEEB> yup
[23:14:12 CET] <JEEB> anyways, since crap was really bad at messaging the colorimetry before, players will basically expect BT.601 if ~< (1024x576), and BT.709 if >~ (1024x576)
[23:14:18 CET] <JEEB> even if not marked
[23:14:23 CET] <alexpigment> although there is a bigger difference in 601 mistakenly decoded as 709 and vice versa
[23:14:37 CET] <alexpigment> yeah i ran into that in browsers before
[23:14:50 CET] <JEEB> well the second thing is that
[23:14:56 CET] <alexpigment> i had to tag something as 601 or 709 explicitly if the resolution was a certain size3
[23:14:58 CET] <JEEB> the upper "correct" one is BT.601
[23:15:14 CET] <JEEB> and then the lower one is "mistakenly converted to RGB as BT.709"
[23:15:21 CET] <trfl> aight so that's not bad enough to worry about, good to know
[23:15:37 CET] <trfl> but how about the plan to convert everything to bt.709 and tag it as that?
[23:15:44 CET] <JEEB> not recommended
[23:15:50 CET] <JEEB> why do an extra conversion if you don't have to?
[23:16:33 CET] <JEEB> trfl: anyways, if you are not doing conversions you can just run ffprobe first with the json output
[23:16:37 CET] <JEEB> -show_streams
[23:16:47 CET] <JEEB> and pick the parameter from there
[23:16:51 CET] <JEEB> and set it in ffmpeg.c
[23:18:25 CET] <trfl> aight, sounds good! say, is there a way to set it using the ffmpeg cli tool? or is it purely an internal thing?
[23:18:41 CET] <JEEB> yes, alexpigment over there noted the parameters
[23:18:50 CET] <JEEB> for ffmpeg.c to force the encoder to have those params
[23:19:10 CET] <trfl> ...i'm a dum
[23:19:15 CET] <trfl> aight, thanks o/
[23:19:51 CET] <alexpigment> the parameters i gave are generic ffmpeg params; should work with any encoder. there are specific x264 params that you can also specify, but i think (rather, i hope) the generic ones map to those x264 ones on the backend
[23:20:34 CET] <JEEB> they're the ones that set stuff in the avcodeccontext
[23:20:43 CET] <JEEB> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavcodec/libx264.c;h=12379…
[23:20:49 CET] <JEEB> and yes, libx264 utilizes those values if available
[23:20:59 CET] <JEEB> (during init time)
[23:21:19 CET] <JEEB> I actually tried to enable reconfig when you feed it frames but I failed so far :<
[23:22:04 CET] <JEEB> (and I had a little API client I was poking things with so I knew the AVFrames contained the data)
[23:22:07 CET] <JEEB> *metadata
[23:28:53 CET] <JEEB> greentea: this is the proper channel, but I'm pretty sure you just didn't get a reply because MSVC is not what people generally try things with, including me
[23:29:12 CET] <JEEB> building FFmpeg itself is not a problem, and with some trying you can even get libx264 linked
[23:29:23 CET] <JEEB> haven't seen libvorbis or libopus though
[00:00:00 CET] --- Tue Feb 27 2018
1
0
[00:05:23 CET] <jkqxz> atomnuker: Works for me? (Or at least, the output looks very similar to the input.)
[00:59:10 CET] <gagandeep> guys i am reading a tutorial on how to write a video player in 1k lines so as to understand the working on ffmpeg libraries but i cant properly include files from the library
[01:01:05 CET] <JEEB> this is for #ffmpeg
[01:01:13 CET] <JEEB> that is for usage of the libraries
[01:01:18 CET] <JEEB> this is for development OF the libraries
[01:02:59 CET] <gagandeep> yeah but i have to see how libraries work with the external video containers, or is there other way for understanding as i have just begun learning video and audio compressions
[01:03:30 CET] <JEEB> if you want help with the usage of FFmpeg's libraries, let's move this discussion to #ffmpeg
[01:03:39 CET] <gagandeep> k
[01:41:06 CET] <BtbN> philipl, I'm at an event right now so kinda hard to do stuff, but just link it again, I will look at it eventually.
[01:50:16 CET] <philipl> BtbN: https://github.com/philipl/ffmpeg/tree/yuv444p10
[02:00:06 CET] <jamrial> i don't think this will be well received
[02:00:14 CET] <jamrial> the new pixfmt, i mean
[02:03:15 CET] <philipl> It was not badly received last time.
[02:03:31 CET] <philipl> The alternative is to not map it to anything and just ignore it.
[02:03:48 CET] <philipl> but the current situation is broken
[02:04:09 CET] <atomnuker> jkqxz: odd, seems like it works on decoding a video but not on frames imported from drm
[02:04:25 CET] <atomnuker> (though yeah, I can't see much of a change in output)
[02:04:44 CET] <jkqxz> Maybe it only works on Y-tiled surfaces.
[02:05:45 CET] <jkqxz> Can you make a Y-tiled surface in whatever your external thing is? (gbm_surface_create_with_modifiers?)
[02:07:33 CET] <atomnuker> dunno what Y-tiling is, I was just curious whether denoise_vaapi would work if I randomly put it in when encoding from the screen
[02:08:29 CET] <BtbN> philipl, it's definitely fine with me, but I don't think I'm the one to convince about that pix_fmt. I'm in favor of adding it though, as it clearly has real world usage.
[02:08:56 CET] <jkqxz> philipl: I think it's a reasonable answer. But, what is going to create it? Are you going to add swscale support as well?
[02:09:00 CET] <BtbN> the nvenc part is ok, once the pix_fmt is in
[02:09:41 CET] <jkqxz> atomnuker: It will likely work if you pass it through a do-nothing scale_vaapi instance first.
[02:09:52 CET] <atomnuker> I did
[02:12:25 CET] <jkqxz> Works for me in that case. ('hwmap=derive_device=vaapi,denoise_vaapi,scale_vaapi=format=nv12' gives black, 'hwmap=derive_device=vaapi,scale_vaapi=format=nv12,denoise_vaapi' works.)
[02:12:40 CET] <jkqxz> Well, "works". Doesn't obviously do anything, but the image is right.
[02:12:59 CET] <jkqxz> (With kmsgrab, which is I assume what you're using there.)
[02:22:18 CET] <atomnuker> yep, works, seems like adding :format=yuv420p or :format=nv12 fixes it
[02:44:09 CET] <philipl> jkqxz: I would prefer the lazily evaluate the swscale part - I think the set of scenarios where you'd actually use this are very small - (hevc main 10 4:4:4...).
[02:44:31 CET] <philipl> But if people insisted on swscale support to add the pix_fmt, I guess i'd do it.
[03:20:41 CET] <philipl> annoyingly the generic conversion logic in swscale doesn't handle the bit shifting, even though the shift is a pixdesc property
[06:35:10 CET] <philipl> BtbN: Things I learned today: 1) swscale_unscaled's generic path doesn't know about the 'shift' field of the pix_desc and so does the wrong thing for this case. I roughly know how to fix that. 2) The scaled path fails for different reasons that I haven't nailed down yet. 3) swscale doesn't know how to dither to 10bits so one of the motivations of this exercise goes away - it's going to truncate to
[06:35:16 CET] <philipl> 10bits regardless of anything else.
[10:49:35 CET] <nevcairiel> philipl: adding a new format that in its commit message says "this is basically useless, so don't worry about it" feels like you might as well not add it =p
[16:51:44 CET] <philipl> nevcairiel: tis true.
[16:52:58 CET] <philipl> BtbN: So, another thought. Given that I now know we don't having dithering to 10bits, and that you wouldn't want swscale in a hardware transcode pipeline, should we just add P016 to the set of support formats for nvenc? and leave 444p16 there? It avoids the incorect format preference problem and then everything should work as well as it can.
[18:17:33 CET] <atomnuker> would anyone like to help in adding support for meson?
[18:17:35 CET] <atomnuker> https://github.com/atomnuker/FFmpeg/tree/exp_meson
[18:17:44 CET] <JEEB> ooh
[18:17:47 CET] <atomnuker> it can currently compile a subset of libavutil
[18:17:49 CET] <JEEB> someone *actually* made a PoC?
[18:17:57 CET] <JEEB> I was wondering about that, but FFmpeg is lolhueg
[18:18:20 CET] <atomnuker> welp so is mesa but they got meson support
[18:18:30 CET] <atomnuker> the pain starts with libavcodec though
[18:18:35 CET] <JEEB> :D
[18:18:35 CET] <atomnuker> libavutil is small
[18:18:42 CET] <JEEB> yea, libavutil is the first step thing
[18:18:52 CET] <philipl> BtbN: whelp - even that isn't a cheap fix as we don't know how to transform to P016 today.
[18:18:56 CET] <JEEB> all those deps and options and things being able to be enabled
[18:19:08 CET] <JEEB> or disabled
[18:19:27 CET] <atomnuker> jamrial / nevcairiel: any of you interested in having meson?
[18:20:21 CET] <atomnuker> currently the only thing stopping me from compiling the entire lavu is bprint.c
[18:20:56 CET] <atomnuker> for some reason it thinks strftime isn't defined but time.h is included right there and its pretty well defined there
[18:37:35 CET] <durandal_1707> atomnuker: so you picked another project which you not gonna complete?
[18:42:51 CET] <atomnuker> durandal_1707: have you seen the monstrosity that is hwcontext_vulkan and vulkan_common?
[18:43:35 CET] <atomnuker> its not easy to think of a way to abstract all the verbosity
[18:44:03 CET] <durandal_1707> just post it, finish later
[18:45:04 CET] <atomnuker> I'll post it once I have a sharpen compute shader working, and for that I need to add some more abstraction for a compute pipeline in vulkan_common and rename the chromaticaberration filter
[18:45:33 CET] <atomnuker> we should have a lavfi template for filters
[21:57:09 CET] <jkqxz> jamrial: Have you seen <http://ffmpeg.org/pipermail/ffmpeg-user/2018-February/038989.html>?
[21:58:28 CET] <jkqxz> I'm kindof ambivalent about fixing it.The behaviour of the encoder there is technically invalid in that it didn't create extradata, but there isn't any way of doing it (because the implementation is incomplete and doesn't support getting the headers), and it does provide the headers inline so it works for most use-cases.
[21:59:10 CET] <jkqxz> Still, it is kindof a regression, even if the files it previously made were pretty dubious.
[22:09:09 CET] <jamrial> jkqxz: wouldn't the correct fix here be making h264_vaapi encoder fill and propagate extradata instead if AV_CODEC_FLAG_GLOBAL_HEADER is set?
[22:10:49 CET] <jkqxz> It does on Intel. AMD doesn't support packed headers, though, so you can't.
[22:11:01 CET] <jkqxz> (That's why it's a problem only on AMD.)
[22:19:33 CET] <nevcairiel> it would generate a technically invalid mp4 file, so failing is not wrong?
[22:20:52 CET] <nevcairiel> although a more specific error m ight be nice
[22:21:06 CET] <jamrial> yeah, both mp4 and matroska files muxed like this would be invalid, even if playable by lax players/parsers since the headers would be available inband
[22:21:15 CET] <jkqxz> Indeed. You can write a raw stream and remux it later.
[22:21:19 CET] <jamrial> agree with the need for an error. there's none right now
[22:21:34 CET] <BtbN> can't you put in a bsf to extract the extradata?
[22:21:45 CET] <jamrial> possibly
[22:22:23 CET] <jamrial> extract_extradata, but it sends the extracted headers as packet side data, and i don't know if the muxers actually bother to look at that for h264 right now
[22:23:03 CET] <jkqxz> IIRC muxer creation is still before you have the first packet anyway?
[22:23:49 CET] <jamrial> yes, but both matroskaenc and movenc support getting extradata from the first packet and rewrite the output file header if needed
[22:23:56 CET] <jamrial> depending on codec
[22:25:00 CET] <jamrial> at least in matroska, with flac the extradata has a fixed size, so seek, rewrite header, seek back
[22:25:27 CET] <jamrial> with aac that's not the case, so we reserve the max amount of bytes extradata might need
[22:25:54 CET] <nevcairiel> aac max size isnt that big, for h264 the size could vary widely
[22:25:59 CET] <jamrial> we could do the same for h264, but i don't think cluttering muxers because one encoder doesn't behave correctly is a good idea
[22:28:39 CET] <jamrial> also, max sps is 32 and max pps is 256, so fuck that. the amount of reserved space would be huge
[22:36:32 CET] <jkqxz> You currently get a "some packed headers are not available" warning on AMD, but it's not very clear that that will break muxing to some formats.
[22:37:09 CET] <atomnuker> can you mux to nut?
[22:38:48 CET] <jkqxz> Seems to work currently.
[23:01:31 CET] <atomnuker> fuck, libavutil/time.h gets included instead of time.h even if a c file uses #include <time.h> if the -I <directory> gets included
[23:04:30 CET] <klaxa> i just saw someone apply for the dicom project, i'd like to do that as well, should i just also apply? :I
[23:04:30 CET] <BtbN> why do we even have a header whose name collides with common libc headers?
[23:04:42 CET] <klaxa> ah, gsoc
[23:04:59 CET] <nevcairiel> BtbN: because usually thats not a problem? :p
[00:00:00 CET] --- Mon Feb 26 2018
1
0
[00:21:48 CET] <utack> is the hdr peak detection for tone mapping also possible in ffmpeg?
[00:25:20 CET] <JEEB> I don't think peak detection is in there
[00:25:29 CET] <JEEB> koda implemented the tone mapping as it was quite some time ago
[00:26:00 CET] <JEEB> (mpv had peak detection then as well I think, but looking at the options it doesn't seem to have one for that
[00:26:07 CET] <JEEB> it has an option to define the peak, though
[00:26:16 CET] <utack> yeah ok, i could not find any reference to it
[00:26:34 CET] <utack> i guess it does take the peak defined the input file, or does that get lost in my filter chain?
[00:27:28 CET] <utack> does "crop" do anything bad, drop any info? "crop=3840:2076:0:42,zscale=w=1280:h=692,zscale=transfer=linear,tonemap=mobius,zscale=transfer=bt709:matrix=709:primaries=709,format=yuv420p10"
[00:28:20 CET] <JEEB> I wouldn't be surprised if a lot of filters would drop the side data, and I'm not even sure if the tonemap filter reads that mastering screen side data
[00:29:08 CET] <JEEB> http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavfilter/vf_tonemap.c;h=1…
[00:29:23 CET] <utack> i have to admit i still have no idea what HDR actually tries to do, or why it is supposed to be any good. is there any kind of "hdr for dummies" somewhere that explains what it tries to solve?
[00:29:26 CET] <JEEB> so it will first try to get side data of type AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
[00:29:39 CET] <JEEB> 2390-2 is pretty good as a primer
[00:29:41 CET] <JEEB> I think?
[00:29:54 CET] <JEEB> https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2390-2-2017-PDF-E.pdf
[00:30:14 CET] <JEEB> it begins with stuff like "Introduction and design goals for HDR television"
[00:30:15 CET] <utack> cool thanks
[00:30:19 CET] <JEEB> and "common misconceptions on HDR"
[00:31:02 CET] <JEEB> so yea, the tonemap filter will first look at side data of that type, and then take a look if the frame has the mastering side data
[00:31:30 CET] <JEEB> the problem is I don't know if lavfi filter chains make any attempt at passing the side data through
[00:32:25 CET] <utack> i'll just pipe to mpv with and without crop and see if it changes anything at all
[00:33:10 CET] <JEEB> that won't keep the side data anyways if there was any
[00:33:16 CET] <JEEB> as it's side data of the internal AVFrame stuff
[00:33:26 CET] <JEEB> so sharing that between two apps doesn't exactly work :)
[00:34:34 CET] <shastenm> Hey, I got an issue I am trying to solve. I am trying to render on Kdenlive, and I get this nasty response. It leaves me this message, "Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead," but I don't know what to do.
[00:35:07 CET] <JEEB> there's a function that handles that IIRC
[00:35:23 CET] <shastenm> From what I have researched online, it's an ffmpeg bug, but I need a work around.
[00:36:58 CET] <shastenm> Does anyone have any ideas?
[00:37:05 CET] <JEEB> not a bug, if you want to share stuff from an encoder to a muxer when adding a stream
[00:37:09 CET] <JEEB> avcodec_parameters_from_context
[00:37:13 CET] <JEEB> you have this
[00:38:28 CET] <JEEB> https://ffmpeg.org/doxygen/trunk/group__lavc__core.html#ga0c7058f764778615e…
[00:39:04 CET] <JEEB> it's even utilized in the examples now as far as I can tell
[00:41:47 CET] <shastenm> I can see that it can be worked around, but I am still a little lost.
[00:42:02 CET] <JEEB> it's not worked around, it is how the API is to be used now
[00:42:50 CET] <JEEB> anyways, if you are just a confused user of an application using FFmpeg's libraries then just go poke the authors of that application
[00:43:23 CET] <JEEB> if they are using a recent FFmpeg while not using the APIs right that is their problem and they can ask for help here if they require such
[00:43:40 CET] <JEEB> although on linux you have the problem that distributions are distributing whatever they want
[00:43:51 CET] <JEEB> also I have no idea if that message is an actual error
[00:43:58 CET] <JEEB> your actual failure might be somewhere else
[00:44:09 CET] <shastenm> You won't hear any arguments from me there.
[00:44:59 CET] <shastenm> According to the Arch Wiki, it's a soft error, but nothing will render just the same.
[00:45:33 CET] <JEEB> then it's something else and so far this thing has been zero per cent about FFmpeg
[00:45:45 CET] <JEEB> but rather an application using the FFmpeg libraries' API
[00:45:53 CET] <JEEB> so please go to the support for that application
[00:46:17 CET] <JEEB> if they need support in using the API according to the latest requirements (which do not change often, btw) they are free to ask for help here
[00:46:39 CET] <shastenm> Let me see what I can find from Kdenlive then.
[00:47:53 CET] <JEEB> you'll probably want to give them more information about the specific point of failure than you gave to me :P
[00:50:01 CET] <shastenm> It's hard because nothing shows up in the dmesg or other outputs to point me into a direction.
[00:52:52 CET] <JEEB> feel free to ask them for how the application logs more
[00:52:55 CET] <JEEB> :P
[00:54:12 CET] <shastenm> Yeah, I will do that.
[01:04:43 CET] <JEEB> gagandeep: during configuration of your FFmpeg you set a --prefix (default is /usr/local) and you do make/make install which installs the headers and libraries so that they are usable, and installs relevant pkg-config files
[01:05:29 CET] <JEEB> so to utilize, say, libavutil you need to set PKG_CONFIG_PATH to <your prefix>/lib/pkgconfig and run `pkg-config --libs --cflags libavutil`
[01:05:36 CET] <JEEB> that will give you the flags needed to include and link
[01:05:57 CET] <JEEB> the stuff in the FFmpeg source tree is not meant for usage as-is
[01:06:06 CET] <JEEB> I usually have my own prefix under home
[01:06:22 CET] <JEEB> /home/jeeb/ownapps/ffmpeg_root etc
[01:06:53 CET] <gagandeep> yeah, i mean looking in the files the includes were not making any sense from relative directory point of view
[01:07:44 CET] <gagandeep> ok, let me try this path config, and if i run into any trouble i'll ask you again, thanks
[01:08:30 CET] <JEEB> set the prefix (or use the default) when configuring FFmpeg, and properly install FFmpeg into that prefix. then utilize PKG_CONFIG_PATH to append your prefix's lib/pkgconfig directory into the search path
[01:08:49 CET] <JEEB> after that when that PKG_CONFIG_PATH variable is set you should be able to just call pkg-config --cflags libavutil for example
[01:09:04 CET] <JEEB> to get the required compiler flags for the includes to work
[01:09:17 CET] <JEEB> a lot of libraries have pkg-config files and it's pretty much the standard with how stuff works
[01:10:29 CET] <gagandeep> this is my first time using libraries and packages where compiler flags are needed, so again, thanks
[02:27:18 CET] <acDC> i want to make a stream (http ts format) from a portion of my computer screen, then use that as a source for p2p broadcast. there are so many instructions and i find it all confusing
[02:27:55 CET] <acDC> using windows 7 pro 32 bit
[03:19:46 CET] <gagandeep> JEEB: i followed the compilation guide on ffmpeg which was using the ./configure method to compile from the sources
[03:49:36 CET] <Kennedy> how's everyone doing?
[10:36:39 CET] <blap> crosscompiling ffmpeg: build ffmpeg libavdevice/sdl2.c fatal error: SDL.h: "No such file or directory"
[10:37:05 CET] <blap> but file exists /usr/include/SDL2/SDL.h
[10:37:48 CET] <blap> maybe $(SRC_PATH) is wrong
[10:41:02 CET] <blap> ahh my DESTDIR was /usr/local and the includes are in /usr
[10:51:21 CET] <blap> no that didn't fix
[11:04:05 CET] <blap> fixed it
[12:10:44 CET] <blap> hm when i copy the built FFmpeg tree to the target device and run make install, it begins rebuilding
[13:35:42 CET] <DHE> blap: timestamps were probably re-written. that's what make does
[13:36:32 CET] <blap> it was the scp.. i needed "scp -r -p" to preserve mtime
[13:36:34 CET] <blap> ty DHE
[13:37:52 CET] <blap> weird that i get flickering with mpv+opengl but not ffplay+opengl on the pi3 with kms(vc4) overlay
[13:38:23 CET] <JEEB> mpv utilizes opengl much more heavily
[13:38:54 CET] <blap> yeah i saw it was setting-up a shader to do yuv conversion for e.g. i think
[13:38:58 CET] <sfan5> on the rpi you should be preferring gles anyway
[13:39:26 CET] <blap> ok ty. i see that is set-able
[14:03:25 CET] <shtomik> Guys, tell me, please, what's wrong with my sound? https://www.youtube.com/watch?v=4oe4Ub2fBp4, What am I doing wrong in transcoding audio? Thanks!
[14:03:53 CET] <JEEB> use pastebin or gist to just post your code
[14:06:09 CET] <shtomik> JEEB: Hello, JEEB, 1 min, thanks!
[14:11:05 CET] <shtomik> JEEB: https://pastebin.com/XM6ZXJJP
[14:44:04 CET] <shtomik> JEEB: Are u here? I'm trying to play with filter_spec, but there is no result yet ;(
[16:35:15 CET] <shtomik> Somebody is here ? ;(
[18:31:34 CET] <durandal_1707> shtomik: what? fixed your code?
[18:33:57 CET] <shtomik> durandal_1707: No, but I think I know what's the problem... All is good with sound if I don't capture picture... Problem with nb_samples or with audio sync
[18:37:02 CET] <shtomik> durandal_1707: But I don't know yet how to fix it
[18:41:14 CET] <shtomik> durandal_1707: I add av_buffersink_set_frame_size(), but audio doesn't sync with picture
[18:43:17 CET] <durandal_1707> shtomik: perhaps its encoding video, and thats slow...
[18:45:05 CET] <shtomik> durandal_1707: preset: ultrafast, hm
[18:56:22 CET] <shtomik> durandal_1707: something with pkt duration or nb samples... oh ;(
[19:04:27 CET] <durandal_1707> unlikely
[19:11:15 CET] <shtomik> durandal_1707: If I record only sound, and don't set frame size I have some issue...
[19:12:15 CET] <shtomik> durandal_1707: What do u think about it?
[19:43:59 CET] <durandal_1707> code missing/wrong
[19:49:59 CET] <shtomik> ??
[20:01:29 CET] <fexJ> hello, how can I transcode multicast h254 to multicast mpeg2 with audio ac3
[22:26:09 CET] <kms_> hi
[22:26:41 CET] <kms_> how to apply fade videofilter to output framerate
[22:26:41 CET] <shtomik> hi
[22:26:47 CET] <kms_> not input
[22:27:47 CET] <shtomik> Sorry, I don't know
[22:28:04 CET] <kms_> i try to create slideshow, and i need fade out last photo
[22:30:54 CET] <shtomik> https://ffmpeg.org/ffmpeg-filters.html#fade
[22:30:56 CET] <shtomik> ?
[22:46:00 CET] <kms_> it applied to input fps
[00:00:00 CET] --- Mon Feb 26 2018
1
0
[00:20:28 CET] <cone-904> ffmpeg 03Rodger Combs 07master:0419623cdca9: lavfi/vf_transpose: fix regression with semiplanar formats
[00:23:43 CET] <gagandeep_> atomnuker: hello Rostislav, you are also mentoring cineform, right?
[00:24:22 CET] <atomnuker> I'm just backup mentor, for when kierank isn't there and you have questions
[00:25:00 CET] <gagandeep_> okay
[01:48:58 CET] <atomnuker> jkqxz: I think I've completed the hwcontext if you want to review or test - https://github.com/atomnuker/FFmpeg/tree/exp_vulkan
[01:49:32 CET] <atomnuker> takes advantage of pretty much everything available to upload/download as fast as possible and can kinda import drm surfaces
[01:50:35 CET] <atomnuker> I was thinking of writing a chromatic aberration filter first but I think I'll go with a good old unsharpen
[01:50:55 CET] <atomnuker> as a compute shader rather than a vertex/fragment pair
[01:55:25 CET] <cone-904> ffmpeg 03James Almer 07master:4f273b97b046: avcodec/Makefile: add missing dependencies for some cuvid decoders
[03:09:58 CET] <jamrial> ubitux: https://github.com/nagadomi/waifu2x
[04:32:20 CET] <cone-904> ffmpeg 03James Almer 07master:9482ec1b203e: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:44:02 CET] <cone-904> ffmpeg 03James Almer 07release/2.8:26755a8c6f6d: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:44:04 CET] <cone-904> ffmpeg 03James Almer 07release/3.0:e0750d2067dc: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:44:06 CET] <cone-904> ffmpeg 03James Almer 07release/3.2:0a340924ef17: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:44:09 CET] <cone-904> ffmpeg 03James Almer 07release/3.3:e2edfff9a8f1: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:44:11 CET] <cone-904> ffmpeg 03James Almer 07release/3.4:e4b95f710ba4: avformat/hvcc: zero initialize the nal buffers past the last written byte
[04:51:24 CET] <cone-904> ffmpeg 03Jun Zhao 07master:b141902872bb: doc/bitstream_filters: documents delete_filler option.
[04:51:25 CET] <cone-904> ffmpeg 03Michael Niedermayer 07master:0293663483ab: avcodec/smc: Check input packet size
[04:51:26 CET] <cone-904> ffmpeg 03Jun Zhao 07master:74afa545286b: ffmpeg_opt: fix max_error_rate help info display issue.
[05:00:57 CET] <philipl> BtbN: why does nvenc say it accepts 0rgb rather than argb as documented?
[07:38:06 CET] <cone-904> ffmpeg 03Vishwanath Dixit 07master:ffe7cc89d0ce: avformat/dashenc: opening a segment file when its first frame is ready
[07:38:07 CET] <cone-904> ffmpeg 03Vishwanath Dixit 07master:28924f4b488a: avformat/dashenc: chunk streaming support for low latency use cases
[10:47:44 CET] <durandal_1707> i contacted stefano long ago, still expecting reply
[16:43:31 CET] <jamrial> why the fuck are there avpriv_ functions in avio.h?
[16:46:03 CET] <jamrial> da8b228977 the commit message makes no sense. they are still in an installed header
[17:11:15 CET] <philipl> BtbN: And on the subject of pix fmts, I still have my fix for the yuv444p10 problem sitting on a branch. I went back through the old review comments and no one objected, but you didn't say explicitly that you were happy with it.
[17:35:55 CET] <thardin> time to push the codec2 patchset I think
[17:40:31 CET] <wm4> jamrial: haha
[17:40:44 CET] <wm4> jamrial: they should probably be moved to a private header
[17:41:03 CET] <wm4> maybe url.h
[17:41:08 CET] <jamrial> yeah, but they still require a deprecation period since they have been effectively public for three years now
[17:41:15 CET] <jamrial> avio_internal.h IMO
[17:41:17 CET] <wm4> I wouldn't let that count
[17:41:37 CET] <nevcairiel> not really, its symbols marked as private
[17:41:40 CET] <wm4> they're on the same level as fields marked internal in public structs
[17:42:40 CET] <jamrial> alright
[17:48:05 CET] <jamrial> lovely, one of the avio examples in the documentiation uses avpriv_io_delete()
[17:48:22 CET] <jamrial> using only public api otherwise
[17:48:55 CET] <jamrial> actually, it uses both
[17:48:58 CET] <jamrial> so what now?
[17:50:15 CET] <wm4> ...
[17:58:50 CET] <atomnuker> they're still priv
[18:07:17 CET] <nevcairiel> fix the example and call it a day
[18:29:32 CET] <cone-056> ffmpeg 03Tomas Härdin 07master:f958f431eced: Add libcodec2 en/decoder
[18:29:32 CET] <cone-056> ffmpeg 03Tomas Härdin 07master:5655048c73f7: Add muxer/demuxer for raw codec2 and .c2 files
[18:29:32 CET] <cone-056> ffmpeg 03Tomas Härdin 07master:5caae2797998: Don't complain about codec2's 700 bit/s modes in ffmpeg.c
[18:29:32 CET] <cone-056> ffmpeg 03Tomas Härdin 07master:5f36c546ec4e: Add myself as codec2 maintainer
[18:34:20 CET] <jamrial> nevcairiel, michaelni: so what do i do with that av_parser_change() call? remove it altogether, leave it there as a noop, enabling it just for mpeg4?
[18:35:52 CET] <jamrial> to remove inband headers during codec copy you can use the revome_extradata bsf or even extract_extradata with the remove avoption enabled, which may be a better idea than forcing it based on output format
[18:36:55 CET] <jamrial> although gpac for example seems to remove them if you do a simple mp4box remux
[20:11:43 CET] <atomnuker> jkqxz: denoise_vaapi seems broken
[20:11:54 CET] <atomnuker> all settings result in a black screen
[20:30:55 CET] <cone-056> ffmpeg 03Marton Balint 07master:dcb2ef2211fd: avformat/aviobuf: add ff_read_line_to_bprint and ff_read_line_to_bprint_overwrite functions
[20:30:56 CET] <cone-056> ffmpeg 03Marton Balint 07master:ffabff1baa08: avformat/concatdec: add support for very long line sizes
[21:26:08 CET] <hathinns> 4:54 PM <hathinns> 4:42 PM <hathinns> Hi, having problem while trying to read video frames from ffmpeg and piping it to python for further processing in opencv. Processing is going fine but when I pipe the output to an output using another ffmpeg subprocess, the video frames are scrolling vertically from bottom to top.
[21:26:59 CET] <hathinns> the python script https://usercontent.irccloud-cdn.com/file/kOYUeNTS/processing.py
[21:27:31 CET] <RiCON> hathinns: wrong channel -> #ffmpeg
[21:28:37 CET] <hathinns> And the log
[21:28:51 CET] <hathinns> https://usercontent.irccloud-cdn.com/file/qJajDvaN/processing_log.txt
[21:29:39 CET] <hathinns> Any suggestions on how to solve this vertical scrolling issue
[21:30:42 CET] <wm4> wrong channel
[21:43:39 CET] <cone-056> ffmpeg 03Martin Vignali 07master:ea03f295ec79: avcodec/exr : add support for long name flag and be more explicit about unsupported flag
[21:43:40 CET] <cone-056> ffmpeg 03Martin Vignali 07master:c8552b78584a: fate/exr : add test for long name flag
[21:46:16 CET] <cone-056> ffmpeg 03Martin Vignali 07master:e3fc36a84c43: checkasm/vf_blend : add depth param in order to add test for 16 bit version
[21:46:17 CET] <cone-056> ffmpeg 03Martin Vignali 07master:7590d58b6146: avfilter/x86/vf_blend : reorganize init in order to add 16 bit version
[21:46:18 CET] <cone-056> ffmpeg 03Martin Vignali 07master:6c6c9d14a841: avfilter/x86/vf_blend : indent
[21:46:19 CET] <cone-056> ffmpeg 03Martin Vignali 07master:53a03b5c8c7d: avfilter/x86/vf_blend : add 16 bit version for BLEND_SIMPLE, phoenix, difference for SSE and AVX2 (x86_64)
[21:46:20 CET] <cone-056> ffmpeg 03Martin Vignali 07master:c0919c49855b: checkasm/vf_blend : add test for blend_simple_16, phoenix_16 and difference_16
[21:49:11 CET] <beastd> hi
[21:53:36 CET] <beastd> I am preparing a simple diagram listing functionality of FFmpeg by listing the main features / components per lib.
[21:55:45 CET] <beastd> I want to use it on a poster at chemnitz linux days. I would be grateful if some other developers could have a look and tell me about typos, errors or more things I could mention.
[21:57:32 CET] <beastd> Here is a sketch with what I have so far: https://www.dropbox.com/s/i98ptge5xmobiu8/sketch-ffmpeg-libs.png?dl=0 (I will pretty it up later, just need to finalize what's in it before to avoid doing the layouting again and again.)
[22:11:30 CET] <Compn> ooo
[22:11:35 CET] <Compn> sounds fun
[22:12:39 CET] <Compn> beastd : for libavdevice, i think you might want to change the "input devices" and "output devices" to something more descriptive
[22:14:39 CET] <Compn> beastd : you might also be able to arrange them with an example video so that the video gets processed as it moves through the diagram
[22:14:52 CET] <atomnuker> lavu does a _lot_ of things
[22:15:29 CET] <atomnuker> hardware context creation, uploading and downloading, vector operations using SIMD on ints and floats
[22:15:39 CET] <beastd> Compn: What do you have in mind in/out devices? In general I want to go more for the abstract. If people ask, I can always tell them a bunch of examples.
[22:16:36 CET] <beastd> atomnuker: true. i'm not sure if it is a good idea to list all those on a poster.
[22:18:22 CET] <Compn> beastd : i'm not sure, i am thinking...
[22:18:42 CET] <Compn> they are definitely audio/video devices
[22:18:47 CET] <Compn> instead of input/output devices :P
[22:21:12 CET] <beastd> atomnuker: i mainly want to achieve 2 things: 1) FFmpeg has code for lots of stuff and more important (2) if a developer looks at it he might find out the right lib to start looking at for whatever he wants to find out/wants to implement. So I think the interested person will start looking at e.g. libavcodec and then realize the stuff you mentioned is part of lavu
[22:21:43 CET] <Compn> i thought mike melanson made some kind of graph like this before :D
[22:21:48 CET] <Compn> or some other powerpoint presentation :D
[22:21:52 CET] <Compn> someone else made somewhere
[22:21:53 CET] <Compn> hmmm
[22:23:36 CET] <beastd> Compn: good point. i never mentioned audio / video in there explicitly. maybe i will add it all over or in the text part that will be on the right
[22:29:57 CET] <Compn> yeah some quick google searches i cant find the diagram i remember, so ignore that
[22:32:29 CET] <durandal_1707> beastd: libresample is not ffmpeg lib
[22:32:43 CET] <durandal_1707> you want libswresample
[22:33:18 CET] <atomnuker> fucking hell does aurel live in his little own world where everyone uses the crappiest codecs and has devices which don't support them and there are no specifications
[22:33:35 CET] <atomnuker> so many fucking exceptions for those piece of shit special snowflake codecs
[22:33:59 CET] <durandal_1707> atomnuker: whhats issue now?
[22:34:05 CET] <beastd> durandal_1707: right. it should read libswresample. i'll fix it. thank you!
[22:34:49 CET] <atomnuker> durandal_1707: he thinks _all_ coding tools are optional and not required to be implemented by decoders, so of course it should be up to users to set them for idividual devices
[23:53:01 CET] <philipl> atomnuker: bluetooth audio is its own special pile of snowflakes.
[00:00:00 CET] --- Sun Feb 25 2018
1
0
[01:56:24 CET] <TexanMD> Hey all. I'm attempting to transcode an x264 video to x265 on Windows 10 using 3.4.2, or the 20160223-b6652f5 nightly builds and shortly after the encoder starts, it crashes. I downloaded an older build (3.3.4) and it works fine with the same command line. I can run it under windbg but don't have symbols so the stack trace isn't very helpful. Are symbols posted somewhere? or will i have to recreate the problem under linux to f
[01:57:00 CET] <TexanMD> Being that it's windows I've tried both the shared and static builds as well
[01:58:14 CET] <JEEB> if the build has debug symbols included gdb will be able to load them
[01:58:56 CET] <JEEB> https://kuroko.fushizen.eu/random/gdb_builds/gdb-8.0.1.7z
[01:59:04 CET] <TexanMD> Can I use gdb to debug windows binaries? I've actually never tried that. Windbg can only load the export symbols which are better than nothing... but not great.
[01:59:07 CET] <JEEB> if this one after `gdb ffmpeg`
[01:59:12 CET] <JEEB> says symbols not loaded
[01:59:16 CET] <JEEB> then you don't have symbols
[01:59:59 CET] <JEEB> (that is a 64bit windows build of gdb)
[02:00:39 CET] <TexanMD> JEEB, cool give me a sec and I'll test it out
[02:01:19 CET] <JEEB> if you didn't build the FFmpeg binary yourself it's highly likely it doesn't have the debug symbols, though :P
[02:01:32 CET] <JEEB> (there are no official windows builds)
[02:03:28 CET] <TexanMD> they're not official? I guess that makes sense. Since they're hosted on a different domain
[02:05:17 CET] <TexanMD> yeah no symbols
[02:05:28 CET] <TexanMD> I guess i'll see if i can set up a build env
[02:06:10 CET] <JEEB> do note that windows compilation has gotten ridiculously slow on the configure step
[02:06:23 CET] <JEEB> so WSL or a linux VM are recommended if you want to get any sort of sane speeds
[02:06:37 CET] <JEEB> the build itself isn't too slow, but you'd be waiting for the configure script for like 10min
[02:07:21 CET] <TexanMD> just looking at the setup requirements its more than i'm gonna do on this box.... can you run a test in linux? you should just need an x264 source file
[02:07:36 CET] <TexanMD> if it doesn't crash for you then i'll figure out a way to get a useful crashdump later this weekend
[02:08:12 CET] <JEEB> I think my last x265 build is from before they started doing a lot of changes over at x265 and I don't generally build it for windows
[02:08:25 CET] <JEEB> at least not with FFmpeg
[02:08:46 CET] <TexanMD> I was thinking test on linux
[02:08:57 CET] <TexanMD> if its a cross platform bug it'll be way easier to get debug info
[02:09:44 CET] <JEEB> ok, my current FFmpeg build on my linux boombox doesn't have x265 built in :P
[02:09:53 CET] <JEEB> and it's 3 am so I'm not going to start doing that right now
[02:10:00 CET] <TexanMD> lol seems fine
[02:10:07 CET] <TexanMD> I appreciate the help either way
[02:10:31 CET] <TexanMD> what I need to get done is working with an old build, but I figured if I can document a crash i'd do it
[03:12:16 CET] <luxio> how do I convert a VP9 WebM to a VP8 one?
[03:22:36 CET] <furq> -i foo.webm -c:v libvpx -c:a copy bar.webm
[03:22:40 CET] <furq> i'm not sure why you'd bother though
[05:15:58 CET] <xxzz> Hi, how can I convert .exo files to mp4?
[05:33:10 CET] <furq> isn't exo that weird encrypted youtube thing
[05:34:18 CET] <furq> if it's not a paid video and it's still up then you're probably better off just downloading it with youtube-dl
[05:45:08 CET] <xxzz> furq: yeah YouTube stuff
[05:46:42 CET] <xxzz> I use youtube-dl but some videos I have on my phone, the uploader deleted those last week and in the current region I am not able to play them on phone youtube
[05:47:32 CET] <xxzz> I used to think YouTube is global but they are not
[05:53:07 CET] <furq> i don't know of anything that breaks the encryption
[05:53:27 CET] <furq> i would assume they're just encrypted mp4 fragments
[05:56:25 CET] <xxzz> yes
[05:56:54 CET] <xxzz> I will move them to desktop and run ffprobe, see if SMTube picks it up or not
[05:59:45 CET] <xxzz> There is ExoPlayer will check that
[10:28:40 CET] <ferz> Hi, can I use ffserver to stream a mp4 (h264) file?
[10:39:05 CET] <durandal_1707> ferz: ffserver is no more
[10:55:38 CET] <ferz> durandal_1707: Thank you. What's next?
[11:21:34 CET] <stelonix_> Can I use ffmpeg to capture a single window by its id?
[12:02:59 CET] Action: zyme wonders if his window has id's - being a windows user. Also reminds me I wonder if the Win10 linux env supports gui interaction yet, since they had a similar function to that already in the HyperV XP env that was part of windows 7...
[12:05:12 CET] <stelonix_> You window has an hWnd ;)
[12:05:25 CET] <stelonix_> well I guess the type was HWND or whatever
[12:15:32 CET] <furq> you can't do that with gdigrab
[12:15:41 CET] <furq> it has to be the window title or a desktop region
[12:16:01 CET] <furq> you're generally better off using OBS for desktop capture stuff anyway
[12:21:06 CET] <stelonix_> Not using gdi by the way
[12:21:08 CET] <stelonix_> x11
[12:21:13 CET] <stelonix_> x11grab
[12:21:15 CET] <stelonix_> But doesn't matter
[12:21:40 CET] <stelonix_> Figured a way to get window position, just need to find out if I can set start x y pos
[12:21:48 CET] <stelonix_> With x11grab
[15:19:51 CET] <klaxa> ffmpeg -f x11grab -s widthxheight -i :0+x_offset,y_offset iirc
[16:08:22 CET] <classict> Hi everybody
[16:09:10 CET] <classict> I want to know how hd speed affect ffmpeg when I use vcodec copy.
[16:09:50 CET] <classict> ffmpeg -i rtmp -vcodec copy ...rtmp:server, I get near 20 even 30% cpu usage
[16:10:04 CET] <sfan5> unless your cpu is very slow, I/O will definitely be the bottleneck when copying
[16:20:27 CET] <classict> can I setup use tmpfs, because this doesn't write on disk
[16:20:46 CET] <classict> from rtsp ip camera, to rtmp server
[16:20:51 CET] <classict> ?
[16:26:43 CET] <durandal_170> if tmpfs is big enough
[16:35:59 CET] <shtomik> Hi guys, can you help me? I'm using transcoding.c example, and on finish a have a spoiled sound, what am I doing wrong? video with sound(https://www.youtube.com/watch?v=4oe4Ub2fBp4). Thanks!
[18:38:24 CET] <ArsenArsen> can I overlay a sound file with a blank video
[18:43:41 CET] <durandal_1707> yes, you can
[18:48:55 CET] <arooni> question: i have a 4 .mkv files that are quite large (500mb - 4gb). whats the *fastest lowest cpu way* to convert them to audio only in a .mp4, or .mp3 format ?
[18:50:24 CET] <furq> -i foo.mkv -c:a copy -vn bar.m4a
[18:50:29 CET] <DHE> mp3 is a specific codec in its own container, so if the source video isn't already in MP3 format a transcode is needed. even mp4 has a list of allowable codecs which might not work
[18:50:39 CET] <furq> what he said
[18:51:06 CET] <furq> if that command doesn't work then you'll need to either transcode or use mka
[20:01:58 CET] <saucecode> Wait a second! One of you explained to me that some audio formats have the moov atom at the end of the file and that's why ffmpeg wont process them until it can read the whole file.
[20:02:30 CET] <saucecode> If this is the case, how is youtube downloading and playing those files at the same time?
[20:03:15 CET] <JEEB> the stuff provided by most streaming services (be it video on demand which is not really streaming per se, or actual live streaming services) nowadays have things in segments
[20:03:23 CET] <JEEB> and each segment is independently parse'able if not decode'able
[20:03:57 CET] <JEEB> of course specifically regarding moov, if you have the mp4 file with the MOOV atom (index of the file) at the back, then if the web server lets you seek in the file then you don't have to read the whole file
[20:04:18 CET] <JEEB> also, most things that serve you mp4 files have once written it, and then re-written the moov by moving it into the beginning
[20:04:27 CET] <JEEB> because you can do that after you've learned the whole structure of your file
[20:04:37 CET] <saucecode> Hmm
[20:04:38 CET] <JEEB> in ffmpeg.c you have -movflags faststart that does that second pass
[20:04:55 CET] <JEEB> which, after finishing writing once, rewrites the whole file again
[20:04:58 CET] <JEEB> with the moov in front
[20:05:15 CET] <furq> you might be conflating it with ffmpeg not being able to stream mp4 because it can't write the moov atom until the whole file is done
[20:05:21 CET] <furq> stream it as an output, that is
[20:05:59 CET] <saucecode> I take it that that seeking-to-the-moov is non-standard, otherwise ffmpeg would also be doing it?
[20:06:06 CET] <furq> ffmpeg does do it
[20:06:17 CET] <JEEB> no, as far as I know ffmpeg does that if the HTTP server lets it do it
[20:06:22 CET] <furq> yeah it definitely does
[20:06:23 CET] <JEEB> but that's for reading
[20:06:24 CET] <saucecode> I mean doing a separate HTTP request specifically to retrieve the moov
[20:06:29 CET] <furq> that's what i mean
[20:06:34 CET] <furq> except it usually does several requests
[20:07:04 CET] <saucecode> Wat
[20:07:08 CET] Action: saucecode checks
[20:07:29 CET] <furq> that's how everything does it
[20:08:08 CET] <furq> you read until you find either the moov or the mdat header, if you find the mdat then you deduct some arbitrary amount from Content-Length, do a range request from that until the end, and then keep doing that until you find the moov atom
[20:09:21 CET] <furq> you probably need a relatively recent ffmpeg
[20:09:21 CET] <JEEB> anyways, back in the days when people were actively providing (normal, non-fragmented) mp4 files over HTTP, everyone used the "move moov to front" stuff after finishing an encode pretty much. that way was simpler for clients. but nowadays everyone's moved to fragmented/segmented stuff where each fragment or segment is independently readable (and they're smaller so no-one cares if you have to read the whole
[20:09:28 CET] <JEEB> segment/fragment) :P
[20:09:56 CET] <furq> it's still recommended to do that for e.g. uploading to youtube
[20:10:03 CET] <furq> so it can start processing the file while you're still uploading it
[00:00:00 CET] --- Sun Feb 25 2018
1
0
[01:20:44 CET] <uau> wm4: about that "There also should be no need to call register_all in the existing API," argument, can't that just be read as repeating the claim that you can register individual codecs instead of calling register_all?
[01:22:10 CET] <uau> (whereas you seem to read it as saying that an ideal system should not require calling ANY register functions necessarily)
[01:22:24 CET] <Chloe> uau: this isnt about 'registering' in the old sense, this is about allowing the library to use external components
[01:22:42 CET] <Chloe> the new API doesnt require any register functions to use all the internal components
[01:23:47 CET] <uau> Chloe: i think you have the context wrong probably
[01:24:03 CET] <uau> i'm specifically referring to an argument about what michael said on the mailing list
[01:55:41 CET] <cone-875> ffmpeg 03Nikolas Bowe 07master:ce8a12fb7227: avformat/flvdec: Set broken_sizes for FlixEngine.
[01:55:41 CET] <cone-875> ffmpeg 03Gyan Doshi 07master:b6652f5100af: avutil/timecode: fix starting frame number for 59.94 fps
[10:35:22 CET] <jdarnley> Can someone explain the difference between av_frame_mov_ref() and av_frame_ref()?
[10:36:01 CET] <jdarnley> Why would I one or the other when outputting a frame from a decoder?
[10:36:54 CET] <jdarnley> I think av_frame_ref implies I still want to use the picture data in it but I'm not really sure.
[10:42:30 CET] <nevcairiel> well, move_ref moves the reference, so your "source" is empty after
[10:42:39 CET] <nevcairiel> plain _ref creates a new ref, ie. basically a copy
[10:42:47 CET] <nevcairiel> (without copying data)
[10:46:20 CET] <jdarnley> Hm. How does av_buffer_unref() come into play?
[10:46:44 CET] <jdarnley> If I don't need the picture data anymore should I call that immediately after move_ref or ref?
[10:47:02 CET] <nevcairiel> if you move_ref you dont need to unref the source, its empty after, but you can if you want to, it does no harm
[10:47:14 CET] <nevcairiel> and if you plan to do _ref and _unref after, you should use move_ref =p
[10:48:22 CET] <jdarnley> Makes sense. A related but not really important question: why does ref return an error code but move_ref is void?
[10:48:50 CET] <nevcairiel> move_ref is literally just *dst = *src; memset(src,0);
[10:48:55 CET] <nevcairiel> ref actually allocates things
[10:49:32 CET] <jdarnley> Thanks
[11:41:30 CET] <mateo`> I'm implementing audio support in our MediaCodec wrapper. Turns out it is slow as hell. Decoding AAC LC using our wrapper gives 8x decoding speed vs 240x for our native software decoder (on the same device).
[11:42:44 CET] <mateo`> I've done some test directly in Java which gives 9x, and 18x using the async API which is still meh~
[11:45:56 CET] <jdarnley> Dammit!
[11:46:53 CET] <jdarnley> Dumping the picture data immediately after the idwt shows green is "the correct picture".
[11:48:02 CET] <jdarnley> But it switches between a light green and a dark green
[11:48:19 CET] <jdarnley> I need to check the encoder then.
[14:38:09 CET] <cone-579> ffmpeg 03Bela Bodecs 07master:85e6a33bdfdd: hlsenc: Fixing HLS_TEMP_FILE usage with HLS_SECOND_LEVEL_SEGMENT_...
[17:30:42 CET] <cone-579> ffmpeg 03Stefan Pöschel 07master:8720d3ffddbb: lavf/mpegts: add supplementary audio descriptor
[18:04:04 CET] <gagandeep> kierank: i have sent an introduction mail to the mailing list, that i will be looking into the cineform and anyone having suggestions regarding anything should message me. is this alright?
[18:05:26 CET] <gagandeep> wm4: i have used another email address to register to the mailing list.
[18:06:28 CET] <wm4> great that it worked
[18:07:38 CET] <gagandeep> wm4:yeah, and i have also sent an introduction mail regarding that i will be looking into cineform, and anyone having any suggestions can message me regarding that
[18:07:56 CET] <wm4> we don't usually do introduction mails - it's not wrong to send one but it might feel like a cold welcome due to no big reaction
[18:09:00 CET] <gagandeep> that is also good, still my first time at gsoc so i thought following a guide won't be that bad.. :)
[18:09:22 CET] <wm4> also I see your mail, so apparently it works
[18:09:46 CET] <gagandeep> great!
[18:10:33 CET] <wm4> you should make sure to configure your mail client to sort all ffmpeg-devel mail into its own folder, or you'll get flooded with unrelated discussions and patches
[18:11:07 CET] <gagandeep> yeah, great idea, thanks
[18:47:36 CET] <jdarnley> atomnuker: when you have time could you give a comment on the two vc2enc patches I just sent to the list? Particularly whether you think the second one is worthwhile. Thank you.
[20:48:59 CET] <atomnuker> jdarnley: I don't get it
[20:49:02 CET] <atomnuker> the second patch
[20:49:09 CET] <atomnuker> why was it being reset on every frame
[20:49:11 CET] <atomnuker> as well as next_parse_offset
[22:11:12 CET] <jdarnley> Why was it being reset? I don't know. Perhaps it would be correct if you consider each frame to be in its own Sequence.
[22:11:13 CET] <jdarnley> The line dates back to the original commit (ec9e87c922a) according to git blame.
[22:12:57 CET] <jdarnley> next_parse_offset should be reset because it stores the position in the PutBitsContext buffer where the next_offset value should be written when it is later known.
[22:13:35 CET] <atomnuker> shouldn't both not be reset?
[22:26:19 CET] <jdarnley> No, not based on the way the current code is.
[22:26:42 CET] <jdarnley> An End Sequence will always be written at the end of a packet and its length is fixed.
[22:47:57 CET] <cone-904> ffmpeg 03Aman Gupta 07master:61ecfbc32aa2: avformat/dump: tag AV_DISPOSITION_DESCRIPTIONS streams
[22:47:57 CET] <cone-904> ffmpeg 03Aman Gupta 07master:4f40d64e0098: avformat/mpegts: set AV_DISPOSITION_DEPENDENT for mix_type=0 supplementary audio
[23:18:39 CET] <MercyXfe> _ _ _ _ _ _ _______ _______ _______ _______
[23:18:39 CET] Last message repeated 2 time(s).
[23:18:39 CET] <MercyXfe> ( ) ( ) ( ) ( ) ( \ ( \ ( ___ )( )( ___ )( ____ \
[23:18:45 CET] Last message repeated 2 time(s).
[23:18:45 CET] <MercyXfe> _| |_| |_ _| |_| |_ | ( | ( | ( ) || () () || ( ) || ( \/
[23:18:47 CET] Last message repeated 2 time(s).
[23:18:47 CET] <MercyXfe> (_ _ _)(_ _ _)| | | | | (___) || || || || (___) || (_____
[23:18:51 CET] Last message repeated 2 time(s).
[23:18:51 CET] <MercyXfe> _| (_) |_ _| (_) |_ | | | | | ___ || |(_)| || ___ |(_____ )
[23:18:55 CET] Last message repeated 2 time(s).
[23:18:55 CET] <MercyXfe> (_ _ _)(_ _ _)| | | | | ( ) || | | || ( ) | ) |
[23:19:00 CET] Last message repeated 2 time(s).
[23:19:00 CET] <MercyXfe> | | | | | | | | | (____/\| (____/\| ) ( || ) ( || ) ( |/\____) |
[23:19:05 CET] Last message repeated 2 time(s).
[23:19:05 CET] <MercyXfe> (_) (_) (_) (_) (_______/(_______/|/ \||/ \||/ \|\_______)
[23:19:13 CET] Last message repeated 2 time(s).
[23:19:13 CET] <MercyXfe> ##LLAMAS
[23:19:14 CET] Last message repeated 2 time(s).
[23:19:14 CET] <MercyXfe> relaxed cone-904 jrmuizel gagandeep_ hreinnbeck Rodn3y feepk CoreX wm4 phh RiCON griffinp trfl tguillem lesderid graphitemaster j45 Myrsloik TheRyuu [-T-] smarter ps-auxw WizBright sfan5 andrey_utkin JEEB lexano jkqxz WebHome gnafu ritsuka RT|AO SingingTree luminarys kraft Wessie igitoor TD-Linux kevmitch cbsrobot_ mixi blb chouquette jya Fenrirthviti mistym Ahti333_ keith tmatth reynaldo aballier Tzimmo peloverde ldts atomnuker raytiley_ jfmcarreir
[23:19:17 CET] <jdarnley> Your ascii art is too wide
[23:19:35 CET] <sfan5> aw
[23:19:44 CET] <sfan5> usually i just get highlighted here if one of my patches is merged
[23:45:37 CET] <gagandeep_> kierank: what are these structs ending with suffix 'Context' mean like avcodeccontex and cfhdcontext?
[23:50:22 CET] <gagandeep_> guys what are the structs ending with 'Context' mean in libavcodec?
[23:52:09 CET] <JEEB> it is an instance of a decoder or encoder
[23:52:29 CET] <JEEB> all the libraries generally have contexts you can initialize
[23:52:43 CET] <jdarnley> AVCodecContext is the public facing one containing common data for all encoders and decoders
[23:53:02 CET] <jdarnley> user options and the like
[23:53:49 CET] <gagandeep_> okay, anything else?
[23:53:57 CET] <jdarnley> Others like "cfhdcontext" is where a specific codec would store its private data
[23:54:16 CET] <jdarnley> So it can keep track of its own state
[23:55:17 CET] <gagandeep_> alright, thanks
[00:00:00 CET] --- Sat Feb 24 2018
1
0
[00:00:39 CET] <furq> http://gentlelogic.blogspot.co.uk/2011/11/exploring-h264-part-2-h264-bitstr…
[00:00:41 CET] <Filarius> no, it was looks like early "proof of convept" of h264
[00:00:43 CET] <furq> there's plenty of stuff like this as well
[00:00:43 CET] <shtomik__> furq: auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_1', but how it convert to code?
[00:00:55 CET] <Filarius> and located on same old website
[00:01:44 CET] <jkqxz> If whatever service you are using is happy to pass your streams straight through then just put your data directly in SEI messages. If not then you'll need to encode it in the data, and that will be rather fun because you'll need some fuzziness to account for reencodes on their side.
[00:02:05 CET] <furq> shtomik__: presumably just add aresample to the end of your filterchain
[00:02:30 CET] <davemacdo> Hi all. I was on here a few days ago getting some help (thanks furq) setting up a YouTube stream of a Raspberry Pi desktop. I'm getting closer.
[00:02:57 CET] <davemacdo> I rebuilt ffmpeg with the right options, and the stream is starting, but things break down after a few seconds on YouTube.
[00:04:01 CET] <Filarius> ...i already have some simple application what prepare yuv420 frames for h264, and it use DCT/IDCT to make data be prepared for encoding and have better error-tolerance, but, heal, its working too slow for my current needs
[00:06:20 CET] <davemacdo> Here's a pastebin of my command and output: https://pastebin.com/brD2vZrt
[00:07:29 CET] <davemacdo> I've experimented with changing -thread_queue_size, -probesize, -b:v, and -framerate values
[00:08:02 CET] <davemacdo> ffmpeg continues to run, but YouTube stops receiving data.
[00:09:28 CET] <furq> does it run at full speed at -framerate 30
[00:09:45 CET] <furq> youtube will probably reject it at such a low framerate
[00:10:19 CET] <davemacdo> I think I've tried 30 and had the same result.
[00:10:23 CET] <davemacdo> I'll try again.
[00:10:35 CET] <davemacdo> Is the probesize error something to worry about?
[00:11:19 CET] <furq> does it still do that at 30fps
[00:11:21 CET] <davemacdo> Nope. Same result with -framerate 30
[00:11:32 CET] <furq> does it actually run at full speed though
[00:11:50 CET] <davemacdo> ffmpeg runs.
[00:12:35 CET] <davemacdo> I can let it run forever regardless of settings and it continues to log each new line to the terminal.
[00:13:02 CET] <davemacdo> I don't see anything that would lead me to believe ffmpeg crashed.
[00:18:42 CET] <davemacdo> In the output from ffmpeg, does it mean anything that frame= 5 on every line? I don't know what the frame value is. Is it incrementing?
[00:19:26 CET] <furq> you might want to make your terminal wider
[00:19:44 CET] <shtomik__> Guys, how often ways to set up aresample filter in code? Only on filter_spec string? Or with av_opt_set_bit this real too?
[00:20:35 CET] <shtomik__> How many ways*
[00:20:37 CET] <shtomik__> So sorry
[00:21:17 CET] <davemacdo> furq, It's the very first thing on each line.
[00:21:39 CET] <furq> yeah that should all be on one line
[00:22:58 CET] <shtomik__> furq: I set the filter, but sound with noise ;(
[00:23:12 CET] <davemacdo> furq, it is all on one line.
[00:23:58 CET] <shtomik__> furq: [auto_resampler_0 @ 0x7fe8f7d8bb00] [SWR @ 0x7fe8f8be0e00] Using fltp internally between filters, [auto_resampler_0 @ 0x7fe8f7d8bb00] ch:2 chl:stereo fmt:flt r:44100Hz -> ch:2 chl:stereo fmt:fltp r:44100Hz
[00:24:09 CET] <davemacdo> Each line looks like this: frame= 5 fps=0.0 q=-0.0 size= 110kB time=00:00:03.04 bitrate= 295.1kbit
[00:24:17 CET] <davemacdo> There are fifteen lines like that.
[00:24:25 CET] <shtomik__> wtf I have the same settings, but my sound with noise
[00:29:15 CET] <davemacdo> Making the wider terminal window makes the frame all the same. It's showing a lot of dropped frames.
[00:29:42 CET] <davemacdo> Sorry, I mean it makes the frame info all on one line that keeps updating.
[00:35:53 CET] <davemacdo> I get the probesize error suggesting I increase it every time. I've tried a probesize of 50000M and it still suggests increasing it.
[00:42:11 CET] <davemacdo> Do I have the probesize flag in the right place?
[00:55:02 CET] <shtomik__> How to use av_buffersink_set_frame_size ? In initializing filters?
[00:55:26 CET] <shtomik__> Can somebody explain m, please?
[01:04:13 CET] <davemacdo> Ok. I've moved the -probesize 500M flag to the input arguments. Now, I get exactly 151 frames and 4.99 seconds of streaming each time I run it before it stops. Any ideas?
[01:42:50 CET] <tclassict> hi, somebody know how use nvenc for mjpeg, like vaapi_mjpeg?
[01:46:48 CET] <DHE> nvenc only supports h264 and h265 (with specifics varying between models and generations)
[02:47:58 CET] <shtomik__> Guys, how to add aresample filter to felterchain in transcoding.c example file?
[03:20:39 CET] <DHE> shtomik__: there's a string where the (workhorse) filter and its parameters are provided. this is just like the "-af" or "-vf" in ffmpeg and accepts ,commas, for building a filter pipeline
[03:22:10 CET] <shtomik__> DHE: filter_spec = "anull"; or filter_spec = "aresample=44100, aformat=..."; Is it right? Thanks for your reply!
[03:24:17 CET] <shtomik__> DHE: avfilter_graph_parse_ptr(filter_graph, filter_spec, &inputs, &outputs, NULL); avfilter_graph_config(filter_graph, NULL);
[03:25:30 CET] <DHE> the first call takes the string from filter_spec (which is effectively what's passed to -vf or -af) and the second finishes up
[03:26:18 CET] <DHE> avfilter_graph_parse_ptr(filter_graph, "aformat=channel_formats=5.1, aresample=48000, volume=-3dB", ...); // or whatever
[03:26:57 CET] <shtomik__> yeah, okay, it's clear... but after transcoding pcm to aac(mp4), I had spoiled sound ;( with noise
[03:27:55 CET] <shtomik__> I'm using ffmpeg with -v debug, and saw that: [format_out_0_1 @ 0x7fe8f7c05980] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_1'
[03:27:56 CET] <shtomik__> [AVFilterGraph @ 0x7fe8f7f26e60] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
[03:27:56 CET] <shtomik__> [auto_resampler_0 @ 0x7fe8f7d8bb00] [SWR @ 0x7fe8f8be0e00] Using fltp internally between filters
[03:27:56 CET] <shtomik__> [auto_resampler_0 @ 0x7fe8f7d8bb00] ch:2 chl:stereo fmt:flt r:44100Hz -> ch:2 chl:stereo fmt:fltp r:44100Hz
[03:28:54 CET] <shtomik__> But if I use a transcoding.c example for this work, I have an incorrect sound ;(
[03:29:45 CET] <shtomik__> AAC encoder(1024 - frame size), but I always have 512 nb_samples(this an error?).
[03:32:20 CET] <shtomik__> DHE: thanks for your reply!
[03:40:41 CET] <shtomik__> DHE: tell me, please, how to set av_buffersink_set_frame_size(buffersink_ctx, 1024); concerning to transcoding.c?
[10:01:00 CET] <Fyr> guys, does FFMPEG support raw image format?
[10:31:02 CET] <Romano> Anyone here?
[10:34:53 CET] <Romano> ffmpeg -i CompDelivery.mp4 -f segment slices/out%03d.m4s --> Output: "Output file #0 does not contain any stream"
[10:35:24 CET] <Romano> Why can't ffmpeg create m4s files??
[10:36:45 CET] <Fyr> Romano, what is "m4s" file extension?
[10:37:04 CET] <Fyr> I can't find it over the Internet.
[10:37:44 CET] <Romano> Yup, that's the problem, I can't find it either
[10:38:02 CET] <Romano> It's the format MPEG-DASH generates for segmentation
[10:38:07 CET] <Fyr> Romano, what are you trying to achieve?
[10:39:16 CET] <Romano> I'm looking to create m4s files separately from the segmentation process so I can replace some segments with others
[10:43:25 CET] <Fyr> Romano, why are trying to divide a video into segments? maybe there is a better way. =/
[10:44:13 CET] <Romano> MPEG-DASH uses segments to provide variable bitrate streaming, that's why
[10:46:31 CET] <Fyr> ok, mp4box is your friend.
[10:49:03 CET] <Romano> Can MP4Boxconvert a file into an m4s?
[10:49:28 CET] <Fyr> looks like
[14:31:57 CET] <H3> Hello, I wonder if it is possible to set the output duration of an audio to the same as the input (-i effects.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k effects-cbr-64.mp4)
[14:32:54 CET] <JEEB> it should be the same if whatever reading that thing knows how to handle the encoder delay signaling that is happening with mp4
[14:32:58 CET] <JEEB> ffmpeg.c doesn't do it
[14:33:03 CET] <JEEB> since it tries to keep all of the data
[14:33:23 CET] <JEEB> so think of it like this, you have an mp4 with timestamps starting from a negative values
[14:33:37 CET] <JEEB> then you have an edit list that tells the player to start from timestmap zero
[14:33:54 CET] <JEEB> now what ffmpeg.c does is it sees the negative stuff, and looks at WAV
[14:34:08 CET] <JEEB> WAV cannot have negative timestamps so it will just make that negative value zero
[14:34:12 CET] <JEEB> and boom! headshot :P
[14:34:26 CET] <JEEB> you get the full PCM samples instead of the actual original length
[14:34:27 CET] <H3> Okay, what should I do to solve it?
[14:34:53 CET] <JEEB> if you want to use ffmpeg.c for the procedure of dumping audio back to WAV then file a bug
[14:35:01 CET] <JEEB> if you're using something else
[14:35:02 CET] <H3> the effect.wav is actually a audio sprite, with x amount of sound that needs it position to be intact
[14:35:11 CET] <Fyr> JEEB, is there a way to set the duration of the output file to one of the input files?
[14:35:31 CET] <JEEB> then file a bug there since whatever you're using isn't taking the offset into mention within the edit list
[14:35:34 CET] <JEEB> :P
[14:35:39 CET] <JEEB> I just know that ffmpeg.c does it wrong as well
[14:36:13 CET] <JEEB> H3: I understand, but modern ffmpeg.c does flag the encoder delay correctly into mp4. so whatever you're using to read that mp4 isn't taking that into account
[14:38:16 CET] <H3> Ohh okay
[14:39:00 CET] <H3> It will be used on browsers
[14:43:29 CET] <H3> Is there a way to avoid the delay? So it just has the exact same time stamps
[14:56:11 CET] <kepstin> H3: I've written some browser audio stuff, and yeah, a *lot* of browsers get the delay on mp3 and aac wrong. If you know the delay you can manually trim if after decoding - or if possible just use vorbis or opus instead, which all browsers get right if they support the codec at all
[14:57:05 CET] <kepstin> I actually ended up using a *javascript mp3 decoder* (emscripten) rather than the browser built-in one, so it could trim the delay correctly.
[14:59:59 CET] <H3> What tool did you use to trim the sound? I've never worked with sound before so I just got Audacity and also got the ffmpeg plugin to trim it myself, but it still gets messed up during the export
[15:02:00 CET] <kepstin> if you're working on an audio effect in a browser game you're probably using web audio api, and the decoder there gives you an array of samples, so it's trivial to edit it after decoding
[15:02:24 CET] <kepstin> but the problem is that browsers are inconsistent, so you don't know whether or not you need to trim and how much
[15:05:26 CET] <kepstin> you can't trim before encoding because the extra data is added *by the encoder* - it's encoder delay before the audio and padding to frame size at the end. The decoder is supposed to remove it, but :/
[15:08:20 CET] <H3> Okay, the only reason Im doing all this it because i want to reduce the size of our audio files
[15:08:28 CET] <H3> mybe im going the wrong way about it
[15:09:18 CET] <H3> Today we have a working process that converts our audio sprites to mp4 and webm (for browser support) though fluent-ffmpeg
[15:10:01 CET] <H3> And by using libfdk_aac i noticed i got down the size by several mbs
[15:12:07 CET] <kepstin> really, just use opus where available.
[15:12:28 CET] <kepstin> browsers that support it are sample-accurate in decoding, and the quality is good for the size
[15:12:59 CET] <kepstin> (of course you will need a fallback depending on your browser support requirements)
[15:18:36 CET] <H3> kepstin: great advise Ill dig in to it, thanks!
[15:19:51 CET] <kepstin> if you're feeling like going the crazy route, I have a precompiled asm.js version of mpg123 that has sample-accurate decoding: https://github.com/kepstin/aurora-mpg123.js
[15:20:15 CET] <kepstin> but if you can avoid doing js audio decoding that's probably a better option ;)
[15:24:47 CET] <H3> Ohh nice!
[15:25:37 CET] <H3> I need to learn more about audio, I know too little about all the different formats and suck
[15:25:42 CET] <H3> I need to learn more about audio, I know too little about all the different formats and such
[15:25:59 CET] <iranen> just use OPUS
[15:52:25 CET] <H3> How do you guys create audio sprites?
[15:55:21 CET] <saml> what is audio sprite
[15:56:17 CET] <H3> Instead of having 10 audio files you have all he sounds in one audio file with like 1 sec of silence inbetween
[15:56:41 CET] <H3> and a .json file that tell you where which sound is and the duration of said sound
[15:59:34 CET] <saml> oh i'm not sure which container supports such
[16:00:08 CET] <saml> like, you're saying play audio t1~t2 while playing video f1~f2
[16:00:42 CET] <saml> or are you looking to concat 10 audios with silence?
[16:01:00 CET] <JEEB> H3: it doesn't really help with compressed audio since you're not gaining any compression
[16:01:12 CET] <JEEB> might as well just have them separate, and yes - you have to handle encoder delay somehow
[16:01:30 CET] <JEEB> opus might have an effectively hard-coded encoder delay and thus everything might play that well enough
[16:01:33 CET] <JEEB> in that case, use it
[16:03:10 CET] <saml> how can I play two videos side by side? scale and offset and overlay?
[16:03:54 CET] <Fyr> by using scale, offset and overlay fitlers?
[16:04:12 CET] <saml> yeah
[16:04:33 CET] <saml> or is there a way without reencoding?
[16:04:57 CET] <Fyr> no
[16:05:31 CET] <saml> i'm trying to pick a frame at the same interval from two videos of different framerate
[16:06:02 CET] <saml> fps filter picks different frames if videos have different framerate
[16:06:46 CET] <saml> ffmpeg -i a.mp4 -i b.mp4 -filter_complex '[0] fps=10 [a]; [1] fps=10 [b]; [a][b] psnr' -f null -
[16:07:06 CET] <saml> i thought that will pick matching frames and psnr will work alright
[16:08:00 CET] <saml> but if a.mp4 and b.mp4 have different framerate, fps filter doesn't pick the same frame. i manually verified by writing result of fps filter to '%04d.jpg'
[16:08:49 CET] <Fyr> I would convert it into PNG files and combined them back into a video.
[16:09:54 CET] <saml> but problem is ffmpeg -i a.mp4 -filter_complex 'fps=10' '%04d.png' doesn't select the same frames as b.mp4
[16:10:26 CET] <saml> i tried to use select filter.. but failed as well
[16:10:53 CET] <saml> picking the closest frame on every 10th of a second.
[16:14:14 CET] <Fyr> why do you not convert it into PNGs with the necessary framerate?
[16:36:01 CET] <saml> Fyr, how do i select the necessary frame? imagine two videos of same duration but with different framerate. one video is created from the other using -r as output option
[16:36:45 CET] <saml> no i forgot what i wanted to do
[16:36:57 CET] <Fyr> saml, convert the video into PNG, delete unecessary frames or duplicate the necessary ones.
[16:37:28 CET] <saml> yeah that's what -r option does
[16:37:53 CET] <Fyr> saml, if the -r does it, then the problem is solved.
[16:37:55 CET] <saml> i didn't want to create intermediate video using -r
[16:38:10 CET] <saml> i wanted filter version of -r. but there's no filter that behaves the same as -r
[16:38:47 CET] <saml> fps filter removes frames at a regular interval. -r removes frames differently. if i'm going from high framerate to lower
[16:40:13 CET] <Fyr> saml, how differently?
[16:40:22 CET] <Fyr> http://ffmpeg.org/ffmpeg-all.html#toc-Video-Options
[16:40:36 CET] <Fyr> >>As an output option, duplicate or drop input frames to achieve constant output frame rate fps.
[16:51:04 CET] <H3> You guys have an example for converting .wav to .opus?
[16:51:22 CET] <furq> ffmpeg -i foo.wav bar.opus
[16:51:23 CET] <furq> hth
[16:52:53 CET] <H3> ffmpeg -i effects.wav -b:a -compression_level 5 effects.opus
[16:53:16 CET] <H3> gives me: "Unable to find a suitable output format for '5' 5: Invalid argument"
[16:54:11 CET] <furq> -b:a takes an argument
[16:55:36 CET] <H3> Ohh, missed that. Thanks!
[16:55:45 CET] <furq> also you shouldn't set compression_level unless you're trying to do low-delay stuff
[16:55:51 CET] <furq> it defaults to 10 which is the maximum
[16:57:05 CET] <H3> Whats the best approach if i want to get the size down?
[16:57:16 CET] <furq> lower the bitrate
[16:57:17 CET] <H3> lower the bitrate?
[16:57:22 CET] <H3> ok, ty!
[16:57:37 CET] <furq> -b:a is vbr mode for opus, not abr
[16:57:50 CET] <furq> so -b:a 128k will give you something like lame -V5
[16:58:06 CET] <furq> that's the recommended mode to use
[16:58:47 CET] <furq> also obviously "something like" in terms of nominal bitrate, not quality
[16:59:55 CET] <kepstin> like, if you're doing mono sound effect clips, you can probably use around 32K with good results.
[17:16:06 CET] <classic_user> Hi, somebody know how use vaapi decode, for extract MJPEG stream?
[17:32:19 CET] <jkqxz> What do you mean by "extract"? The decoder can be used to decode them.
[17:41:18 CET] <classic_user> ok, h264 input ---- f mjpeg output
[17:42:00 CET] <classic_user> I see vaapi_mjpeg codec, but my gpu doesn`t supportit.
[17:42:56 CET] <classic_user> so....my gpu support decode h264 over hw, and now I want to encode to mjpeg, by software encode
[17:43:36 CET] <saml> Fyr, https://i.imgur.com/RHEGRt5.jpg fps drops frame 02, 05, ... -r drops frame 08, 11, ... etc
[17:43:44 CET] <saml> framerate filter blends
[17:44:05 CET] <saml> i want a filter that can drop the same frame as -r
[17:44:24 CET] <saml> original was 60fps. -r 40 fps=40 framerate=40
[17:45:13 CET] <kepstin> wow, the results from -r is really bad, that's uneven frame drops and it could cause (very slight) a/v sync issues. I thought -r just inserted an fps filter.
[17:46:27 CET] <kepstin> saml: run one ffmpeg with the -r option, outputting raw video and pipe that indo a second ffmpeg, I guess.
[17:46:37 CET] <jkqxz> classic_user: You should be able to just specify "-hwaccel vaapi" on the input and "-c:v mjpeg" on the output to do that.
[17:47:12 CET] <kepstin> saml: You *might* be able to get closer by changing the rounding mode on the fps filter
[17:47:35 CET] <kepstin> saml: try fps=fps=40:round=up maybe
[17:47:47 CET] <jkqxz> classic_user: The mjpeg_vaapi encoder requires Braswell/Skylake or later Intel platform.
[17:48:43 CET] <classic_user> I can use sucesfully this command : ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.h264 -r 2 -vf 'deinterlace_vaapi,scale_vaapi=w=320:h=240,hwdownload,format=nv12' -f mjpeg output
[17:53:58 CET] <saml> kepstin, what's raw video? i tried various containers and codecs to pipe into second ffmpeg.. but they all result in bad psnr. i haven't dumped frames and inspected manually
[17:54:14 CET] <saml> i'll try round=up
[17:56:09 CET] <kepstin> saml: try something like "ffmpeg <input stuff> -r 40 -c:v rawvideo -f nut - | ffmpeg -i - <output stuff>"
[17:56:45 CET] <kepstin> if the round=up option doesn't match the behaviour
[18:13:15 CET] <colekas> i'm trying to measure audio using ebur128 of a multicast stream and the input has 2 audios (0:1 and 0:2, 0:0 is video) however, no matter what -map option I put it always seems like the first audio (0:1) is selected... does anyone know if ffmpeg/ebur128 takes a preference based on language or something silly like that?
[18:14:03 CET] <colekas> ./ffmpeg -probesize 1M -analyzeduration 1M -hide_banner -threads auto -nostats -drc_scale 0 -i udp://blah -map 0:2 -filter_complex ebur128=peak=true -f null -
[18:18:51 CET] <kepstin> colekas: with that -filter_complex command you've only put in one ebur128 filter, and since you haven't specified any inputs it's just grabbed the first available input
[18:19:15 CET] <kepstin> colekas: if you use -af instead of -filter_complex, it will separately filter each audio stream
[18:19:48 CET] <kepstin> colekas: or you can put muliple ebur128 in the -filter_complex command, and specify the input to use for each one.
[18:33:20 CET] <Johnjay> how do i get the average and max db audio again?
[18:45:01 CET] <DHE> the volumedetect filter
[19:05:44 CET] <Johnjay> it says mean volume -43.2dB and max_volume -14.2 dB
[19:10:50 CET] <Johnjay> is sound measured with the power decibel or the amplitude decibel?
[19:10:56 CET] <Johnjay> wikipedia says the latter involves an extra square root
[19:11:26 CET] <Johnjay> hmm it says sound is a field, so the latter is
[19:21:12 CET] <kepstin> Johnjay: note that "volume" doesn't really correspond to loudness as perceived by humans - you might be interested in using the ebur128 filter to get a loudness measurement.
[19:22:46 CET] <Johnjay> hrm ok. i'm trying to adjust the loudness of a file and i've been adjusting it in increments of 1dB in the volume filter
[19:22:54 CET] <Johnjay> er no actually i was mulitiplying it
[19:22:58 CET] <Johnjay> like x1.5 or x2
[19:24:49 CET] Action: kepstin notes that a change of ±6dB in audio is (very close) to muliplying the LPCM signal values by 2 or œ.
[19:25:57 CET] <Johnjay> would that correspond to volume=6dB?
[19:25:58 CET] <kepstin> the "volume" filter in ffmpeg can either take a multiplier or a value in dB (with unit suffix)
[19:26:20 CET] <Johnjay> i.e. volume=2 is similar to volume=6dB
[19:26:29 CET] <kepstin> approximately, yeah.
[19:29:25 CET] <Johnjay> hmm ok.
[19:29:42 CET] <Johnjay> basically i'm making a file for an alarm clock and i need to test different loudness levels
[19:30:07 CET] <Johnjay> what's a good increment of dB to use? 3?
[19:30:58 CET] <kepstin> hmm, 3 is kind of a big step (particularly if you're using headphones)
[19:31:28 CET] <Johnjay> my idea is i want my alarm to be just loud enough to wake me up but not too loud so i need to try a variety of levels
[19:31:48 CET] <kepstin> iirc, usually people need a change of around 1-1.5dB to be able to notice a difference in level.
[19:32:05 CET] <Johnjay> i see
[19:32:05 CET] <kepstin> does this alarm clock not have its own volume control?
[19:32:48 CET] <Johnjay> yeah lol
[19:33:05 CET] <Johnjay> but it's not relevant for this purpose
[19:33:46 CET] <kepstin> well, it is, because how loud your output will be is a combination of the levels in your audio file and the setting of the volume knob :)
[19:35:49 CET] <colekas> kepstin: thanks!!!
[19:40:23 CET] <Johnjay> hmm so on the db scale used for sound 20 dB is a whisper, 60db is a conversation at 100ft, and 140 is a jet taking off next to you
[19:41:43 CET] <kepstin> Johnjay: that's a dB SPL
[19:41:55 CET] <kepstin> Johnjay: in digital audio you're talking about dBFS, which is a completely different scale
[19:42:08 CET] <Johnjay> oh no. is one that square root thing
[19:42:11 CET] <Johnjay> and other is not?
[19:42:29 CET] <kepstin> no, the relative size of a dB is the same in both, it's just the reference level that is different
[19:42:48 CET] <kepstin> in dB SPL, 0dB is the threshold of human hearing for quietest sound (approximately)
[19:42:58 CET] <kepstin> in dBFS, 0dB is the loudest possible representable sound
[19:43:22 CET] <Johnjay> ok. i think what i'll do is use volume=1dB, volume=2dB, etc up to some number. then test those out and see which ones work the best
[19:43:51 CET] <Johnjay> kepstin: is that why in audacity and ffmpeg it shows db as negative?
[19:43:55 CET] <furq> yes
[19:44:08 CET] <Johnjay> i thought it was something like that
[19:44:09 CET] <Johnjay> thanks
[19:44:27 CET] <furq> dB SPL is a useless metric for digital audio because it depends on the actual playback chain
[19:44:32 CET] <Johnjay> the file i'm working with is natural sounds track i found and it says max vol is -14.3 dB
[19:44:35 CET] <Johnjay> so that's dBFS
[19:44:39 CET] <furq> right
[19:44:55 CET] <kepstin> Johnjay: yes. that means you can increase the volume by up to 14.3dB without introducing clipping.
[19:45:21 CET] <Johnjay> so is there no way to infer loudness from a dBFS number? it just depends on the playback equipment?
[19:45:33 CET] <kepstin> Johnjay: like I said, it depends on your volume knob :)
[19:45:52 CET] <Johnjay> well the volume knob is very limited on every pc or phone i've ever used
[19:45:55 CET] <kepstin> and amplifier power, etc.
[19:45:57 CET] <Johnjay> so i assume they make some kind of assumptions
[19:46:24 CET] <Johnjay> e.g. -10dB will sound like a conversation approximately on 50% volume knob
[19:46:40 CET] <furq> yeah there's no kind of standardisation at all like that
[19:47:34 CET] <Johnjay> ok.
[19:47:39 CET] <kepstin> the volume limiter seen on e.g. phones is based on music, and music typically is mastered to be as loud as possible, so they limit it such that the loudest possible sound will be no more than XX dB SPL when played through common type of headphones
[19:48:01 CET] <furq> phone max volume is artificially limited by the EU now iirc
[19:48:03 CET] <furq> idk about overseas
[19:48:06 CET] <Johnjay> right. i mean when you watch youtube vids you don't need a mixer
[19:48:11 CET] <Johnjay> to constantly adjust volume levels
[19:48:23 CET] <kepstin> youtube normalizes the volume when they encode videos
[19:48:31 CET] <furq> do they really
[19:48:37 CET] <kepstin> (or in the player, not totally sure)
[19:48:42 CET] <furq> i've never noticed that
[19:48:46 CET] <bazzy> When I try the following command with mkv as output ext: `ffmpeg -i outtrim.mkv -filter:v "setpts=2.0*PTS" outslo.mkv` then the timestamps play back too fast. mp4 works fine though. I'm not sure what to do I've searched the docs for "timestamp" and tried all config options I could find such as -copyts, copytb, -avoid_negative_ts 1
[19:48:49 CET] <furq> i've definitely had to turn the volume up for some videos
[19:49:02 CET] <Johnjay> normalize, as in make the max sound 0 db?
[19:49:08 CET] <furq> no that's just amplifying
[19:49:20 CET] <Johnjay> oh
[19:49:34 CET] <kepstin> Johnjay: they use some sort of perceptual loudness measurement, and if the video is outside an acceptable range they reduce it
[19:49:49 CET] <kepstin> i don't know if they also increase quiet videos or not
[19:50:04 CET] <Johnjay> if you squeeze down the entire waveform is that compression, not normalization?
[19:50:14 CET] <furq> the terms get conflated a bit
[19:50:30 CET] <furq> that's technically DRC but a lot of things call that normalisation
[19:50:39 CET] <kepstin> the general term "normalization" just means "make everything normal", so it depends on what you mean by normal ;)
[19:50:48 CET] <alexpigment> normalization is usually about "peak normalization", which is not compression at all. it just makes the peaks be a certain level (e.g. 0db) and everything else is scaled proportionally
[19:51:05 CET] <alexpigment> compression is the only way to decrease the dynamic range and make something sound "louder" at any volume
[19:51:21 CET] <kepstin> yeah, compression is also an overloaded term, because it usually refers to non-linear adjustments
[19:51:58 CET] <kepstin> and also to the things that encoders do to reduce file size, which is completely separate ;)
[19:52:01 CET] <alexpigment> well, i agree that the word "compression" without context means several different things :)
[19:52:02 CET] <furq> but yeah i'm pretty sure youtube doesn't touch the dynamic range
[19:52:06 CET] <furq> or if they do then this is recent
[19:52:28 CET] <alexpigment> youtube messing with the dynamic range seems like something that would be hard to automate and hence they won't do it
[19:52:38 CET] <furq> i watch a few channels which are live comedy in front of an audience and they're just peak normalised
[19:52:47 CET] <alexpigment> on the other hand, they might do some sort of dynamic range compression with certain partners..
[19:52:49 CET] <furq> and it's very obvious because the actual mic feed is always too quiet
[19:53:04 CET] <furq> yeah if they do that i assume it's an option for uploaders
[19:53:09 CET] <furq> it would be crazy for them to do that to everything
[19:53:13 CET] <furq> especially given how much music is on there
[19:53:22 CET] <Johnjay> peak normalize sounds different than just clipping everything above a certain level?
[19:53:32 CET] <furq> uh
[19:53:42 CET] <Johnjay> or like, clipping and then normalizing
[19:53:50 CET] <Johnjay> to get rid of the largest spikes
[19:54:05 CET] <furq> it's just amplifying the loudest point to 0dB
[19:54:16 CET] <furq> i might have said that wasn't normalizing before, ignore that
[19:55:16 CET] <alexpigment> johnjay: you're talking limiting i believe
[19:55:23 CET] <kepstin> I think youtube just measures integrated loudness (using some algorithm, either replaygain or ebur128 who knows?), and lowers the video playback volume if the loudness is above a threshold.
[19:55:33 CET] <Johnjay> ok so that's normalizing got it
[19:55:35 CET] <furq> yeah that seems likely
[19:55:59 CET] <Johnjay> i use audacity mostly so
[19:56:10 CET] <Johnjay> as long as the terms you define are sort of similar to that i can use them.
[19:56:22 CET] <kepstin> the "normalize" operation in audacity is "scale peaks to 0dBFS", yeah.
[19:57:01 CET] <alexpigment> side rant, i can't even think of using audacity these days. when audition exists (yes, it's not free), audacity feels like a toy. a very janky toy
[19:57:38 CET] <Johnjay> alex, i think it's just adaptation. when you can buy the expensive tool and use it then suddenly you can't do without it
[19:57:41 CET] <alexpigment> then again, i work with audio on both a hobby and professional level, so i realize i'm biased
[19:57:44 CET] <Johnjay> even if you used gum and string before that
[19:58:18 CET] <alexpigment> yeah, i know it's not really relevant. i just always like to point out other options, because most things you pay for are immensely better than audacity
[19:58:28 CET] <kepstin> sometimes I just want a gui tool to, uh, make horrible cut up versions of carly rae jepsen songs, and audacity is fine for that. https://glitch.social/@kepstin/99572831807122922 ;)
[19:58:29 CET] <alexpigment> and people don't realize that
[19:58:38 CET] <Johnjay> that's very much appreciated, even if i dont' have the money atm to buy whatever audition is
[19:58:55 CET] <alexpigment> it's an adobe product fwiw
[19:59:15 CET] <alexpigment> they saw a tool out there that was a great - cool edit pro - and they bought it and renamed it
[19:59:48 CET] <Johnjay> kepstin: lol nice
[20:00:13 CET] <Johnjay> alexpigment: yeah the dream of every small business is to be aquired by a major corporation
[20:00:22 CET] <furq> audacity is fine for most people
[20:00:43 CET] <alexpigment> johnjay: that's debatable, but i hear what you're saying
[20:00:51 CET] <alexpigment> i.e. i know what you mean ;)
[20:00:54 CET] <saml> ffmpeg <input> -r 40 -c:v rawvideo -f nut - | ffmpeg -i - '%04d.jpg' and ffmpeg <input> -r 40 '%04d.jpg' results in different frames
[20:01:00 CET] <Johnjay> alexpigment: it was slightly tongue-in-cheek, lol. but yeah
[20:01:20 CET] <Johnjay> ok thanks for the help, gtg
[20:01:28 CET] <saml> what's a good way to apply -r and pipe to second ffmpeg?
[20:01:30 CET] <alexpigment> later jay
[20:02:08 CET] <kepstin> saml: just never use -r, and always use the fps filter, and then your stuff will always be consistent :/
[20:02:38 CET] <alexpigment> kepstin: out of curiosity, what's wrong with using -r?
[20:02:45 CET] <alexpigment> (asking a person who uses -r a lot)
[20:03:13 CET] <kepstin> alexpigment: saml is running into an issue where it seems to be really inconsistent/non-repeatable, and it doesn't pace frames as evenly in the fps filter.
[20:04:03 CET] <kepstin> alexpigment: I have no idea why. I used to be under the impression that the -r option just throw an fps video filter on. But apparently it doesn't do that, and whatever it does isn't as good.
[20:04:03 CET] <alexpigment> but i guess if i have an input video that's, say 59.94 and i use -r to make it 30000/1001, is that problematic?
[20:04:18 CET] <alexpigment> not that i would generally ever do that to a 60fps video, but stil :)
[20:04:22 CET] <Peetz0r> hey! I am trying to record video from a VCR connected to a analog-to-USB v4l2 device, I am running fedora 27 with a 4.15 kernel and ffmpeg 3.3.6. The recording starts fine but when the actual video on the tape starts or ends (there are multiple video's on there) fmpeg crashes. Even when I press pause on the VCR ffmpeg crashes.
[20:04:35 CET] <kepstin> alexpigment: it may or may not actually drop exactly every second frame. You'd want to check to make sure it's not introducing judder.
[20:05:14 CET] <alexpigment> well, if i just switch to using -vf fps=whatever, it should be a simple substitution?
[20:05:22 CET] <kepstin> alexpigment: yep.
[20:05:30 CET] <alexpigment> well, consider this noted
[20:05:31 CET] <alexpigment> thanks
[20:06:04 CET] Action: kepstin knows way more about the fps filter than he ever wanted to, now that he's rewritten it :/
[20:06:23 CET] <alexpigment> yay for knowledge and difficult labor-intensive work :)
[20:06:28 CET] <kepstin> tricky to rewrite such that the output is still the same as before the rewrite, but I think I've done that.
[20:06:56 CET] <Peetz0r> kepstin: https://paste.sigio.nl/pp8sjoxcq
[20:06:58 CET] <alexpigment> well, if i get some judder with fps, i'm going to knock on your door
[20:07:01 CET] <alexpigment> ;)
[20:07:11 CET] <alexpigment> "hi, is kepstin here? he really fucked my videos up"
[20:07:17 CET] <Peetz0r> (also, ffmpeg doesn't like fpaste very much it seems)
[20:07:23 CET] <kepstin> alexpigment: if you do, make sure you come with the ffmpeg output while using -v debug
[20:07:28 CET] <alexpigment> lol
[20:07:46 CET] <alexpigment> i'll print it out on my dot matrix printer and bring it to you neatly folded along the tear-lines
[20:08:23 CET] <kepstin> Peetz0r: hmm, ffmpeg says that it got "invalid input" from the capture device and exited (not crashed). It might be a driver problem.
[20:09:10 CET] <alexpigment> so there's a thing that VCRs do, and i'm not sure this is related, but they have some copy protection stuff built in, and normal capture cards without some sort of processor in between will freak out when the video signal changes
[20:09:11 CET] <kepstin> that "Dequeued v4l2 buffer contains 414720 bytes, but 829440 were expected." is strange, seems like it got only one field instead of a full frame.
[20:09:20 CET] <alexpigment> because it triggers the copy protection stuff
[20:09:24 CET] <Peetz0r> qv4l2 can display the video just fine while pausing and onpausing the VCR
[20:09:38 CET] <kepstin> most of these cheap usb capture devices ignore macrovision, iirc
[20:09:42 CET] <alexpigment> Peetzor: you don't happen to have a time base corrector or perhaps a DVD recorder around, do you?
[20:09:53 CET] <Peetz0r> only a DVD player :p
[20:09:59 CET] <alexpigment> hmmm
[20:10:00 CET] <alexpigment> ok
[20:10:35 CET] <kepstin> but yeah, if it plays back in qv4l2 fine then it's probably not that
[20:11:12 CET] <kepstin> just some glitch in the capture card where it's returning broken frames or half-frames when re-syncing to the signal on transitions i guess
[20:11:26 CET] <Peetz0r> can I tell ffmpeg to ignore those?
[20:12:52 CET] <kepstin> Peetz0r: hmm. It depends on how exactly the error is getting into ffmpeg. Try adding the option "-max_error_rate 1.0" to the start of your ffmpeg command.
[20:13:24 CET] <Peetz0r> you mean, before -i?
[20:14:10 CET] <kepstin> i don't think it actually matters where it is, but I always put it at the start
[20:14:45 CET] <kepstin> also, make sure you have the tv standard set correctly - it's trying to read PAL right now, so you'll have to change it if you want NTSC.
[20:15:25 CET] <Peetz0r> nope, I'n in europe
[20:15:34 CET] <Peetz0r> but I could try the different PAL variations
[20:15:43 CET] <kepstin> k. should be fine then, that's probably not the issue
[20:16:24 CET] <Peetz0r> with -max_error_rate 1.0 the same error happens, but less frequently I think
[20:16:52 CET] <Peetz0r> but maybe that's just normal variation?
[20:17:18 CET] <Peetz0r> maybe this only happens some of the time, becuase it only happens when I pause at even (or odd) fields in a frame?
[20:35:51 CET] <kepstin> Peetz0r: who knows, you'd need someone to look into the hardware or kernel driver to find out exactly what's going wrong.
[20:36:59 CET] <saml> is writing a custom filter hard?
[20:37:16 CET] <saml> you should write a tutorial on how
[20:37:28 CET] <saml> or i should read filter code :P
[20:38:05 CET] <saml> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_fps.c is this it?
[20:38:28 CET] <saml> this looks difficult. i give up
[20:41:03 CET] Action: kepstin would not recommend using the fps filter - either the old one or his new rewritten one - as a reference.
[20:41:41 CET] <kepstin> Well, i guess it depends on what exactly you want your filter to do
[20:41:57 CET] <kepstin> and even then, don't use the old one as a reference ;)
[20:43:39 CET] <saml> given two videos of different framerate, my filter will do some magic and calculate psnr
[20:44:16 CET] <saml> or my filter will align frames somehow so that I can use frame-by-frame filters
[20:44:35 CET] <saml> but the more i think of it.. it's a difficult problem
[20:45:19 CET] <saml> for example, if i had 1 second video at 2fps. that's reference. the entire video is 2 frames. and I did an encoding either using -r 1 or fps=1 . so the encoded has 1 frame. not sure which of the two frames got dropped.
[20:46:06 CET] <saml> you need to compare the encoded frame to reference's possible candidates
[20:46:41 CET] <kepstin> and pick whichever one is closest, yeah. Gonna be a complex filter with multiple inputs and buffered frames :/
[20:47:17 CET] <kepstin> and probably still not really help with your final goal, since it still won't let you account for the perceptual quality loss caused by reducing video framerate.
[20:47:25 CET] <saml> true
[20:47:44 CET] <saml> not sure what vmaf does. not even sure if it's doing frame-by-frame comparison
[20:47:52 CET] <Peetz0r> kepstin: I'll find a kernel developer and give him my hardware then
[20:47:55 CET] <kepstin> pretty sure vmaf is frame by frame.
[20:48:09 CET] <saml> one thing i notice is that run_vmaf executable is much faster than ffmpeg filter version
[20:48:21 CET] <kepstin> if you figure out how to account for framerate changes, let me know so I can read your phd thesis paper on the subject.
[20:48:22 CET] <Peetz0r> (not a joke btw, one of my friends is kernel developer and sometimes likes a new project)
[20:48:51 CET] <saml> yeah i was gonna say this is a research project, out of my league
[20:50:35 CET] <kepstin> as for computing the quality loss of a video not accounting for framerate changes, you just need to make sure that you're using a consistent, reproducable method of changing framerate
[20:50:38 CET] <saml> it's like you have a choir of 100 people. and few got dropped. and by listening to two mp3 files you have to determine who is absent.
[20:50:46 CET] <kepstin> (in other words, just always use the fps filter)
[20:51:13 CET] <durandal_1707> use minterpolate
[20:51:52 CET] <saml> minterpolate makes room temperature rise, saving heating bill
[20:51:54 CET] <kepstin> hmm, but minterpolate will occasionally give you motion artifacts, won't it?
[20:52:15 CET] <durandal_1707> you fix that manually
[20:52:24 CET] <kepstin> be interesting to see how vmaf scores compare between original video and video with fps reduced, then fps increased with minterpolate
[20:52:41 CET] <alexpigment> i've been meaning to ask about minterpolate
[20:53:05 CET] <alexpigment> i found some videos from archive.org - old MTV captures - but the video capture is dumb and has random dropped frames
[20:53:25 CET] <alexpigment> the dude who uploaded them wouldn't let me help for future captures, and was insulted and yet not even aware of what i was talking about
[20:53:41 CET] <alexpigment> so i wanted to know if there's a way to make minterpolate happen only on duped frames
[20:54:05 CET] <kepstin> alexpigment: use a filter to drop the duped frame to leave a timestamp gap, then minterpolate should fill it in
[20:54:08 CET] <kepstin> i think
[20:54:20 CET] <durandal_1707> thats currently not possible
[20:54:35 CET] <kepstin> oh, does it need cfr input? :/
[20:54:38 CET] <durandal_1707> filter doesnt behave that way
[20:55:37 CET] <alexpigment> i think i saw somewhere that someone had written an avisynth filter to do it
[20:55:49 CET] <alexpigment> but i haven't messed with it because i don't really have an avisynth workflow yet
[20:57:47 CET] <alexpigment> it would be a nice filter to have directly in ffmpeg - drop duped frames an interpolate only those dropped frames
[20:58:10 CET] <alexpigment> i've seen so many videos out there that have a distracting judder that would only be fixable with that workflow
[20:58:13 CET] <kepstin> just taking a quick read through of the minterpolate filter, it *looks* like it should fill in timestamp gaps fine?
[20:58:32 CET] <alexpigment> well, what is durandal_1707 talking about then?
[20:58:48 CET] <kepstin> but keep in mind that it's a *quick* read through, and a complex filter :)
[20:59:18 CET] <alexpigment> is there a particular dupe dropping filter you'd recommend?
[20:59:23 CET] <alexpigment> i haven't looked lately to see if there are more than one
[20:59:23 CET] <saml> can i think of video as analog signal and i can sample frames at some interval to have consistent frame selection of two videos?
[20:59:26 CET] <durandal_1707> well, try and report findings
[20:59:35 CET] <kepstin> alexpigment: mpdecimate should be fine to drop dup frames
[20:59:38 CET] <alexpigment> will do. i'll get back to you next week on this 10 minute sample ;)
[20:59:45 CET] <alexpigment> k, thanks kepstin
[20:59:46 CET] <saml> instead of trying to pick frames from existing frames
[21:00:16 CET] <saml> i guess what i'm saying is to play the video and do screen capture at certain frequency
[21:00:31 CET] <kepstin> saml, to do that you need to interpolate between frames.
[21:00:37 CET] <saml> then regardless of framerate of videos, i get to choose matching frames of the two videos
[21:00:37 CET] <alexpigment> kepstin: i assume it only drops pure duplicate frames?
[21:00:42 CET] <alexpigment> or is there a threshold i need to set
[21:00:51 CET] <kepstin> alexpigment: please read the docs.
[21:00:55 CET] <alexpigment> fair enough
[21:01:07 CET] <kepstin> saml: and linear interpolation, like the 'framerate' filter looks terrible.
[21:01:10 CET] <saml> so, is there a filter that simulates video playback and screen capture via interpolation and sampling?
[21:01:57 CET] <durandal_1707> mpv have something like that...
[21:01:59 CET] <saml> yeah probably interpolation introduces too much noise
[21:02:15 CET] <kepstin> saml: you could build a filter that drops non-matching frames (via some threshold, probably compare frame psnr) fairly easily.
[21:02:36 CET] <saml> whoa
[21:03:12 CET] <saml> if psnr(a1,b1) < threshold: b1++; or something
[21:03:17 CET] <kepstin> I mean, assuming you're a decent C coder and are familiar with ffmpeg filter writing, the actual logic there isn't hard.
[21:03:24 CET] <kepstin> most of the work's done by the framesync framework.
[21:03:47 CET] <kepstin> you just have to check if they match, if not get the next set of frames to compare, if so, output both frames.
[21:03:48 CET] <gamlegaz> Does anyone have a good resource/link on how to write a seek function for a custom IO context?
[21:04:03 CET] <kepstin> but the 'check if they match' is hard :)
[21:04:38 CET] <saml> why "they"? I thought you were going to match frame by frame advancing pointers for psnr below threshold
[21:05:11 CET] <saml> similar to merging two sorted lists into one
[21:05:31 CET] <kepstin> saml: sure, but what threshold? if it's too high then it might not pass matching frames because the encoder quality was too low; if the threshold is too low then it might pass through mismatched frames
[21:05:32 CET] <saml> but yeah, where do I start to learn ffmpeg filter writing?
[21:05:48 CET] <saml> ah that's true :(
[21:06:01 CET] <saml> i guess.. i could use one of those image fingerprint algorithms
[21:06:30 CET] <saml> that's used in reverse image search
[21:06:40 CET] <saml> but first, i need a hello world filter
[21:06:43 CET] <JEEB> look at some simple video or audio filter
[21:06:53 CET] <kepstin> i suspect those would be too loose at matching - if you have a slow pan or zoom or something it might still match prev/next frames
[21:06:54 CET] <JEEB> it's most likely a struct at the end that defines it and has the function pointers
[21:07:09 CET] <JEEB> and then you have the basic init/feed etc functions
[21:07:11 CET] <JEEB> :)
[21:07:31 CET] <JEEB> example http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavfilter/vf_chromakey.c;h…
[21:07:33 CET] <saml> during filter development, you keep recompilng ffmpeg, right? filters aren't dynamic plugin
[21:07:38 CET] <JEEB> yes
[21:07:48 CET] <saml> noice thanks
[21:07:48 CET] <JEEB> although after the initial compilation make should just compile the changed files
[21:07:58 CET] <JEEB> (and re-link libavfilter/ffmpeg in your case)
[21:08:18 CET] <saml> okay you can first write a lua scripting filter then i can just write lua script :P
[21:08:29 CET] <JEEB> sounds like you want vapoursynth
[21:08:34 CET] <JEEB> which lets you play with python
[21:09:15 CET] <alexpigment> kesptin, durandal: it looks like minterpolate after mpdecimate, still interpolates all the frames
[21:09:46 CET] <alexpigment> like basically this noisy VHS source now has a weird haze over it from interpolating all the noise
[21:09:59 CET] <kepstin> alexpigment: make sure your input timestamps are clean, e.g. use the fps filter before the input.
[21:10:00 CET] <alexpigment> not a terrible look, per se, but not natrual
[21:10:48 CET] <alexpigment> just -fps 30000/1001 before -i?
[21:10:54 CET] <alexpigment> it says unrecognized option
[21:10:54 CET] <kepstin> alexpigment: should do it
[21:10:59 CET] <alexpigment> maybe i need to update again
[21:10:59 CET] <kepstin> er, no
[21:11:01 CET] <kepstin> fps filter
[21:11:16 CET] <kepstin> -vf fps=XXX,mpdecimate=XXX,minterpolate=XXX
[21:11:27 CET] <alexpigment> oh, first in the filter chain
[21:11:28 CET] <alexpigment> nm
[21:11:57 CET] <alexpigment> testing now
[21:12:01 CET] <kepstin> if your input is mp4 or mkv or something the timestamps will be in a different timebase and rounded slightly, so they'll not be the exact values, and minterpolate will think it has to interpolate slightly.
[21:12:13 CET] <alexpigment> nah, it's just a poorly formatted MPEG-2
[21:12:17 CET] <kepstin> the fps filter will reset to the same timebase, so it should be exact.
[21:12:30 CET] <kepstin> mpeg-ts/ps uses 90K timebase, iirc, so same issue
[21:13:24 CET] <alexpigment> ok, that does seem to be better
[21:13:34 CET] <kepstin> if the timestamps exactly match, there's a fast-path in the filter that simply copies the original frame
[21:13:47 CET] <alexpigment> the interpolated frame kinda stands out now because it's not as noisy, but i may be able to fine tune minterpolate settings
[21:13:50 CET] <kepstin> so it should be much faster too :)
[21:14:02 CET] <alexpigment> yeah, it was ~2x as fast
[21:14:11 CET] <alexpigment> near realtime, actually
[21:23:50 CET] <alexpigment> you may have helped me take some very unwatchable video (to my eyes anyway) and make it watchable
[21:23:56 CET] <alexpigment> kepstin, i mean
[21:24:09 CET] <saml> wait what if a vcodec results in "poorer" frames but when they are played in a video humans perceive them "better"?
[21:24:14 CET] <alexpigment> it's not as transparent on grainy sources, but it works great
[21:24:19 CET] <saml> then frame by frame comparison won't work
[21:25:18 CET] <saml> i can imagine a smart codec does different stuff to each frame based on target fps.
[21:25:47 CET] <kepstin> saml: x264 already does motion detection and behaves differently in high motion vs low motion scenes
[21:27:33 CET] <saml> like at fps higher than 30, researchers found that inserting all white frame from time to time makes the video look crispy and better.
[21:27:50 CET] <saml> then frame by frame comparison won't work due to those white frames
[21:29:09 CET] <alexpigment> saml: is that true?
[21:29:14 CET] <alexpigment> i have a feeling my eyes would notice that
[21:29:22 CET] <alexpigment> but maybe i've been duped ;)
[21:31:05 CET] <saml> no it's not true. my imagination/example
[21:31:32 CET] <saml> codecs doing different things based on output fps, not only based on scene
[21:42:00 CET] <gunstick> Hi. I have a 5 channel wav file. I want to display 3 of the channels as waveforms. I don't want to do anything with channels 0 and 1. But I don't know how. I use lavfi with asplit. Here is my command line showing channels 0,1,2. What I want is the same thing, showing 2,3,4 instead. ffplay -f lavfi 'amovie=Bla.wav,asplit=4[out1][a][b][c]; [a]showwaves=s=640x240[waves]; [b]showspectrum=s=640x240[spectrum]; [c]showwaves=s=640x240[waves2];
[21:42:00 CET] <gunstick> [waves][waves2][spectrum] vstack=inputs=3[out0]'
[21:42:54 CET] <saml> do you have the wav file i can download?
[21:43:04 CET] <furq> gunstick: asplit just duplicates the input
[21:43:06 CET] <furq> you want channelsplit
[21:43:14 CET] <gunstick> Yes, one moment... uploading file
[21:44:29 CET] <durandal_1707> furq: simpler is to use pan filter
[21:44:59 CET] <furq> is that simpler if he doesn't want to mix them
[21:46:22 CET] <gunstick> http://gkess.homeip.net/~georges/Bla.wav
[21:47:26 CET] <gunstick> so this is a chiptune. the conversion makes channels 1 and 2 silent. so I wnat to drop them. and then graph the 3 other channels as oscilloscope
[22:08:57 CET] <gunstick> someone tried? I'm now googling for pan filter :-)
[22:09:30 CET] <saml> gunstick, ffplay -f lavfi 'amovie=Bla.wav,pan=3c|c0=c2|c1=c3|c2=c4,showwaves=split_channels=1:s=640x240 [out0]'
[22:09:34 CET] <saml> I charge 1000 bitcoin
[22:10:04 CET] <gunstick> haha. I will mention you if I do a youtube video :-)
[22:11:13 CET] <alexpigment> is pan=3c just a generic way of saying 3.0?
[22:11:18 CET] <alexpigment> or is it different?
[22:11:22 CET] <gunstick> looks good. thanks!
[22:11:44 CET] <alexpigment> i guess ultimately it doesn't matter if you're just showing waveforms
[22:12:43 CET] <gunstick> and if I want to additionally play the sound.
[22:14:24 CET] <alexpigment> well, the official standard would be to say pan=3.0
[22:14:30 CET] <alexpigment> i'm not sure if it's the same as 3c or not
[22:14:40 CET] <alexpigment> maybe it's interpreted differently
[22:18:06 CET] <gunstick> added "asplit=[out1]" and now plays the sound. Insert meme "I have no idea what I'm doing" :-)
[22:43:52 CET] <lyncher> how should I open a lavfi device in libavcodec?
[00:00:00 CET] --- Sat Feb 24 2018
1
0