Re: [FFmpeg-user] Convert WAV to FLAC
because I can create .bat files and convert multiple files at once. The original FLAC encoder also has a command line interface, and I actually used it for bulk conversion of WAVs via batch. For just audio conversion, I would rather use the original software than ffmpeg. In regard to VBR: I would rather consider this as an inevitable consequence of entropy compression: More repetitive sections of the WAV (say a single note repeated several times) will be compressed more effectively than more complex parts of the WAV. Nothing to worry about. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Convert WAV to FLAC
I would rather use FLACs original frontend (than ffmpeg), which also provides a nice Windows GUI interface. FLAC conversion is also included in a variety of software products, i.e. Exact Audio Copy, which I used to rip all my music CDs. Wolfgang Hugemann P.S.: Let's see what kind of insults this contribution provokes. ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Next Release
> why should they? > there are enough distributions and compilers Because the average user cannot compile code her-/himself. Especially on Windows, it is not that easy to compile ffmpeg. (Well, I succeeded at last.) I provide some scripts that perform regular tasks for image and video processing for my colleagues (all engaged in vehicular accident reconstruction), and most of them lament how complicated the task of installing the needed tools is. (For the experienced user it's not, of course.) The average user seems to get confused quite easily. You may of course postulate that the use of ffmpeg is not suitable for the faint of heart ;-) Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Next Release
I hope that I'm not starting this discussion all over again ... I have been supporting ImageMagick for years now, where there are also have no 'stable releases', and I understand that its developers just don't have the manpower to support these. ImageMagick does have version numbering, but the developers deploy a new version every two weeks or so, and I would not recommend using the newest one (which may have new bugs), unless you have a problem that you cannot solve with the version already installed. What may be confusing for a ffmpeg newbie, is that ffmpeg.org does not provide executables. I guess this is because of patent issues. (It was the same with the MP3 encoder lame for years.) This could possibly be somewhat explained on the ffmpeg website. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Slide show with vfr
Am 25.01.2021 um 23:45 schrieb Mark Filipak (ffmpeg): > regarding PTS variations, I've often found that simply remuxing an > existing stream via MKVToolNix has fixed the time stamps so that all > players play videos correctly. I tried that and can confirm that MKVToolNix does solve some issues with variable frame rate. At last, I ended up with Avidemux, which preserved vfr and provides some rudimentary filters, comprising a pts burn-in filter. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Slide show with vfr
> Express duration in seconds > Repeat the last image as per > https://trac.ffmpeg.org/wiki/Slideshow#Concatdemuxer Thanks for this hint. This really works and -vsync vfr seems to be necessary for mp4. (For mkv it works without that.) It works as well if you provide the durations in milliseconds, but there seems to be a problem with short durations, which are not reproduced exactly. So one should rather use durations larger than one second, as in the cited example. I now successfully produced a vfr mp4 with ffmpeg. Indeed, some applications as VLC do not handle the timestamps correctly, but AVidemux and ffplay do. Plus the vfr is preserved when the slide show is processed with ffmpeg (using -vsync vfr). Possibly, the relatively short durations in my original video are the reason for the problems with the original video, as there seem to be rounding errors. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Keep vfr and original pts
> Why do you believe the result is CFR, or rather different than the source? I checked that with a couple of different programs (MediaInfo, AVIdemux and ffmpeg). It may not be a general problem, as the slide show example as suggested by pdr0 (see my answer to that) works if you specify -vsync vfr (as in his example). Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Slide show with vfr
I did one step backward and tried to construct a vfr video from the scratch using slides a an input: ffmpeg -y -f concat -i input.txt colors.mkv with input.txt as: ffconcat version 1.0 file 'red.png' duration 250ms file 'yellow.png' duration 500ms file 'green.png' duration 500ms file 'cyan.png' duration 250ms file 'blue.png' duration 500ms file 'black.png' duration 500ms This resulted in cfr for mp4 an vfr for mkv or webm (according to MediaInfo, a Windows application). However, there seems to be something wrong with the result colors.mkv, as no player, including ffplay uses the specified durations. This is the output: ffmpeg version 2021-01-24-git-1775688292-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10.2.0 (Rev6, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 56. 63.101 / 56. 63.101 libavcodec 58.117.101 / 58.117.101 libavformat58. 65.101 / 58. 65.101 libavdevice58. 11.103 / 58. 11.103 libavfilter 7. 96.100 / 7. 96.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc55. 8.100 / 55. 8.100 Input #0, concat, from 'input.txt': Duration: 00:00:05.00, start: 0.00, bitrate: 0 kb/s Stream #0:0: Video: png, pal8(pc), 800x600, 25 fps, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (png (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 02159ed90c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 02159ed90c00] profile High 4:4:4 Predictive, level 3.1, 4:4:4, 8-bit [libx264 @ 02159ed90c00] 264 - core 161 r3033 0d754ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, matroska, to 'colors.mkv': Metadata: encoder : Lavf58.65.101 Stream #0:0: Video: h264 (H264 / 0x34363248), yuv444p(tv, progressive), 800x600, q=2-31, 25 fps, 1k tbn Metadata: encoder : Lavc58.117.101 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A frame=1 fps=0.0 q=0.0 size= 1kB time=00:00:00.00 bitrate=N/A speed= 0x frame= 12 fps=0.0 q=-1.0 Lsize= 4kB time=00:00:03.76 bitrate= 9.2kbits/s speed=12.1x video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 20.582470% [libx264 @ 02159ed90c00] frame I:1 Avg QP: 4.00 size: 194 [libx264 @ 02159ed90c00] frame P:9 Avg QP: 4.89 size:86 [libx264 @ 02159ed90c00] frame B:2 Avg QP: 5.50 size: 960 [libx264 @ 02159ed90c00] consecutive B-frames: 66.7% 33.3% 0.0% 0.0% [libx264 @ 02159ed90c00] mb I I16..4: 100.0% 0.0% 0.0% [libx264 @ 02159ed90c00] mb P I16..4: 22.2% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0%skip:77.8% [libx264 @ 02159ed90c00] mb B I16..4: 99.9% 0.1% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip: 0.0% [libx264 @ 02159ed90c00] 8x8 transform intra:0.0% inter:100.0% [libx264 @ 02159ed90c00] coded y,u,v intra: 0.0% 0.0% 0.0% inter: 0.0% 0.0% 0.0% [libx264 @ 02159ed90c00] i16 v,h,dc,p: 97% 0% 3% 0% [libx264 @ 02159ed90c00] i8
Re: [FFmpeg-user] Keep vfr and original pts
> Use -vsync 0. No addiitional frames should be added. Well, this is true, but the video is switched to cfr. As I said, I tried this too. And usin mkv or webm instead of mp4 make no difference. ffmpeg -y -i kollision.mp4 -vf boxblur=10:1 -vsync 0 -copyts blur.mp4 gives the output: ffmpeg version 2021-01-24-git-1775688292-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10.2.0 (Rev6, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 56. 63.101 / 56. 63.101 libavcodec 58.117.101 / 58.117.101 libavformat58. 65.101 / 58. 65.101 libavdevice58. 11.103 / 58. 11.103 libavfilter 7. 96.100 / 7. 96.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc55. 8.100 / 55. 8.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'kollision.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20.100 Duration: 00:00:02.32, start: 0.00, bitrate: 908 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 903 kb/s, SAR 1:1 DAR 16:9, 15.10 fps, 25 tbr, 25641 tbn, 30 tbc (default) Metadata: handler_name: VideoHandler vendor_id : [0][0][0][0] Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 01e4beec4300] using SAR=1/1 [libx264 @ 01e4beec4300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 01e4beec4300] profile High, level 3.1, 4:2:0, 8-bit [libx264 @ 01e4beec4300] 264 - core 161 r3033 0d754ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'blur.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.65.101 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 15 fps, 15360 tbn (default) Metadata: handler_name: VideoHandler vendor_id : [0][0][0][0] encoder : Lavc58.117.101 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A frame=1 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x frame= 35 fps=0.0 q=-1.0 Lsize= 76kB time=00:00:00.00 bitrate=N/A speed= 0x video:75kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.724296% [libx264 @ 01e4beec4300] frame I:1 Avg QP:17.73 size: 31047 [libx264 @ 01e4beec4300] frame P:9 Avg QP:18.91 size: 2944 [libx264 @ 01e4beec4300] frame B:25Avg QP:22.27 size: 728 [libx264 @ 01e4beec4300] consecutive B-frames: 2.9% 5.7% 0.0% 91.4% [libx264 @ 01e4beec4300] mb I I16..4: 16.4% 76.6% 7.0% [libx264 @ 01e4beec4300] mb P I16..4: 0.3% 1.6% 0.0% P16..4: 16.6% 3.8% 1.7% 0.0% 0.0%skip:75.9% [libx264 @ 01e4beec4300] mb B I16..4: 0.0% 0.3% 0.0% B16..8: 10.6% 0.4% 0.0% direct: 0.1% skip:88.5% L0:47.2% L1:51.5% BI:
[FFmpeg-user] Keep vfr and original pts
I have a vfr mp4 video from a private security cam with a very specific pts pattern. The duration of the frames is 80-80-40-80-80-40-80-80-40-... ms. I would like to hand this video to others as a demonstration of vfr video, but have to blur it in order to preserve privacy. I tried something like ffmpeg -i in.mp4 -vf boxblur=10:1 -vsync 2 -copyts blur.mp4 which results in cfr video whith 15 fps. ffmpeg -i in.mp4 -vf boxblur=10:1 -r 25 -vsync 2 -copyts blur.mp4 or ffmpeg -i in.mp4 -vf boxblur=10:1 -r 25 -vsync 0 -copyts blur.mp4 generates vfr and kind of keeps the pts, but inserts additional frames. What goes wrong over here? Regards Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Compiling ffmpeg under Windows with MSVC
I am trying to follow the instructions given at https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC. The MS version of cl.exe and link.exe need a lot of environment variables to be set, wich is usually done in a cmd shell via the vcvarsall batch file. But the config script that comes with ffmpeg needs to be run in bash. So how exactly do I set up the needed environment for cl and link? I ran the vcvarsall batch file in the bash, calling cmd from the bash an than executing vcvarsall, getting back to the bash via exit. But that didn't help: The MS linker stops with an error that obvioasly results from lacking environment variables: LINK : fatal error LNK1104: file "LIBCMT.lib" could not be openedn What I am getting wrong here? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Ffmpeg is a Windows codec?
> but as I say Windows comes with them all disabled Well, you didn't say that. But you are right, as I have just tested with an Indeo 5.0 coded video: regsrv_32 ir50_32.dll lets you play Indeo 5.0 coded videos with VfW, no installation needed. For security reasons, you should possibly unregister that codec after use: regvsrv_32 /u ir50_32.dll So far, I didn't know that it is that easy. The link to FFmpeg is that I often check the processing chain with AVIsynth scripting, before I settle on a permanent solution with FFmpeg. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Ffmpeg is a Windows codec?
> VFW works on windows 10? Yes, it does. However, FFmpeg does not install any system codecs. You could install IV50 that was delivered for free with the Intel Play microscope in ancient times and thus can still be found for free on the Internet (though hard to find). The codec was later bought by Ligos. There are some security issues with this codec, though. As an alternative, you may use the FFmpegSource2 (or the DirectShow) input filter with AVIsynth, if you software can be fed by the frame server. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] 'showspectrumpic' filter: scaling of the frequency axis and fft windows size
> Because used fft accepts only power of 2 sizes. Well, this is clear to me - but what size do you use? My use of the term 'window' may be unclear in this context: I meant the window size for the fft, i.e. how many samples are used in one fft run? I take from your code that the window size is two times the output windows width (? ... rounded to ...?). ... I already tried scaling the frequency axis with 2^n, i.e. 4096 Hz or 8192 Hz, by that did not help. I think there is something basically wrong with the scaling of the frequency axis if you use log. Furthermore, the value that you supply for parameter 'stop' seems to be divided by roughly 2 (?). >There is code already for more advanced fft but it is not optimized, >and thus not yet used. To my knowledge, all such calculations use fft, i.e. 2^n window sizes, mostly with about 50% overlap (as you also do for most windows in your code). Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] 'showspectrumpic' filter: scaling of the frequency axis and fft windows size
Today, I have been experimenting with the 'showspectrum' filter, mostly with 'showspectrumpic'. I think there is a bug in the log scaling of the frequency axis if (and only if) it doesn't start at zero: The ratios of the frequency axis' labelings is not constant, they grow with larger values. I had a quick look at the source code and gained the impression that the fft windows size is based on the height of video created (?). At least it cannot by specified in the filter options. Kind regards Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Treating video frame-based instead of time-based
> LOL I did not want to provoke anyone. Sorry that you took it wrong. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Treating video frame-based instead of time-based
> You mentioned that you wished to extract these selected frames as > images. As long as you use -vsync 0, there will be no frame duplication, > and the result is the extraction of every 5th frame. Sorry, you are right. And thanks for "-vsync 0", which is decisive, also when dumping the frames as JPEGs. Your suggested code does the trick. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Treating video frame-based instead of time-based
> As Carl mentioned, the select filter with an appropriate expression will > do this e.g. select='not(mod(n-1,5))' to select every 5th frame. Frame > count begins with 0. The select filter keeps the framerate, such that the above code will show every 5th frame for a 5 frame time interval. However this approach may help to control rounding errors when using the fps filter. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Treating video frame-based instead of time-based
> I may misunderstand but FFmpeg treats all video as frame-based. Sorry, I posed the question wrong. I meant that I would like to use a frame-count-based scale instead of a time-based scale, in the way that a genuine frame server like AVIsynth does. >> * Could I (easily) extract every nth frame from a video (in order to >> dump the result as JPEGs)? > See the select or the fps filter or use a low output frame rate (which > forces frame drops). I fear that this would provoke rounding errors, especially with NTSC's 29,97 fps. To the contrast, AVIsynth's "SelectEvery(5)" is bullet-proof: It takes every 5th frame (in presentation order), no matter what. ... I take from your answer that this approach is just impossible with FFmpeg at the moment. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Treating video frame-based instead of time-based
Is ist possible to treat video frame-based instead of time-based, analogously to a frameserver such as AVIsynth? Concretely: * Could I (easily) extract every nth frame from a video (in order to dump the result as JPEGs)? * Could I subtract each frame from its predecessor (in order to detect minimal motion)? At the moment, I mostly perform such tasks in AVIsynth, using the AVS file as input for ffmpeg. Which has the shortcoming that I can only use AVI containers as input for AVIsynth (or use the ffmpegsource to read the original video container into AVIsynth). So: Can I somehow get rid of AVIsynth in the mid? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Timestamp for variable frame rate (VFR ) video
> I will inform you about the results. In short: ffmpeg and ffprobe perform very well on VFR video. The presentation time stamp %{pts} is the right information to display by drawtext if you need to know the exact time for a certain frame. It's a pity that you cannot format the float number displayed; it seems to be set to 6 decimal places. In regard to the several mobile phone cameras we have tested, we found that all of them (including an iPhone) recorded VFR video, but the framerate was not very variable: It lies between 29-something and 30 fps. Only the iPhone dropped down to 28 fps every few seconds, obviously being occupied by some other task. In the case of the VFR video that started this discussion, the framerate allegedly varied between 15 and 30 fps, but this was due to a single frame drop at its very beginning, the rest of the time it behaved like any other mobile phone. The variations in the vehicle movement seem to have to be blamed on the supervision cam. Thank you for your support! Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Timestamp for variable frame rate (VFR ) video
> Please tell us more about the properties of your actual > input file to give us a chance to help you. I would supply it by link, but I can't: It shows a video taken by a surveillance camera prior to a vehicular accident, and I am obliged to keep it secret. It shows the video running on a computer screen, filmed by a mobile phone camera and then transferred via WhatsApp. These people have ideas ... Nevertheless, I have just read that most mobile phone cameras record VFR video and I have just proven that to be correct for my mobile phone camera. I will produce some demo videos, showing a turntable or alike (i.e. something moving or turning at constant speed), which will let me allow to check how correctly ffmpeg deals with VFR video. These videos can then be easily provided, if necessary. I will inform you about the results. Thanks for your help so far! Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Timestamp for variable frame rate (VFR ) video
> If the input file has the correct timestamps, then the pts function is what > you need - it is not a "frame counter". You can format the output like > shown at https://video.stackexchange.com/a/21907/1871 This had been my original approach, see my first e-mail. But the time displayed (blended in) then strictly corresponded to CFR, although the vfrdet filter (and the observation of the video itself) proofed differently. (Same thing with ffprobe and best_effort_timestamp_time.) Perhaps I shoulf first generate a VBR test video with known framerates ... How could I possibly concatenate two videos with different framerate into one with VFR? I tried ffmpeg -y -vsync 2 -i "concat:25.avi|50.avi" test.mp4 with different values for vsync, but it seems that the first input video settles the (constant) framerate of the output, i.e. 25 fps in the above example. Any ideas? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Timestamp for variable frame rate (VFR ) video
> Drawtext filter already have timecode you want, and its in all in documentation. Yes, there is a timecode option for the drawtext command, creating a SMPTE, but using it you have to supply an fixed framerate, which is then used to produce the SMPTE. This is not the right aprpoach for VFR video. I consciously used the word timestamp in the subject heading. As there seems to be confusion about the terminology: I would like to display the exact time where the frame has to be placed in the timeline, such that I can calculate the speed of the passenger car, which ran into an accident. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Timestamp for variable frame rate (VFR ) video
> You want timecode and not pts, look at > drawtext manual. You may assume that I already did that. IMHO, the main issue is not drawtext, but where to get the text from. There only a few ready-made options, all other information has to be drawn from metadata provided by some other source. For example, if you want to print the SMPTE derived from VITC, you use something like: -vf "readvitc:drawtext=text=%%{metadata\\:lavfi.readvitc.tc_str}" Thus if you want to write a timecode / timestamp on the video, you will probably have to use a certain filer that can provide this information. Any ideas? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Timestamp for variable frame rate (VFR ) video
I have a WhatsApp video which is definitively VFR, as can be told from the content (a passenger car at constant speed) and is reported by the new vfrdet filter. I would like to display a timecode in each frame, derived from the frame metadata: "drawtext=text=%%{pts}" yields wrong results, as it not much more than a frame counter, I guess. So it should probably be something like "drawtext=%%{metadata\\:???} but what exactly? Wolfgang Hugemann ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7.3.1 (GCC) 20180722 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth libavutil 56. 14.100 / 56. 14.100 libavcodec 58. 18.100 / 58. 18.100 libavformat58. 12.100 / 58. 12.100 libavdevice58. 3.100 / 58. 3.100 libavfilter 7. 16.100 / 7. 16.100 libswscale 5. 1.100 / 5. 1.100 libswresample 3. 1.100 / 3. 1.100 libpostproc55. 1.100 / 55. 1.100 ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] best_effort_timestamp_time
> (Assuming the camera does not use FFmpeg as firmware > which is very unlikely.) > You have a problem here. > The input you are analyzing is not the stream that was > created by the traffic camera but a file created with FFmpeg. > So while there may absolutely be an issue (that we may or > may not be able to fix), this file cannot be used to prove > anything in court, I strongly suggest you do not try. > > The camera either produced a network stream or a raw > H.264 stream. You hopefully still have access to it and > FFmpeg may help you analyzing it. > (Although H.264 timestamps are a known issue with > FFmpeg and who knows if the camera manufacturer > did any better with them than we did.) Sorry - too much experimenting by me. In order to quicken the analysis, I cropped the original video with ffmpeg using "-vcodec copy -acodec copy" ... So this is the output for the original video (I am on another computer now, running a slightly older version of ffmpeg) - the original question however remains the same: ffprobe -show_frames -show_entries frame=best_effort_timestamp_time,key_frame,pict_type -i original.avi -of compact ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers built with gcc 5.4.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 34.100 / 55. 34.100 libavcodec 57. 64.101 / 57. 64.101 libavformat57. 56.100 / 57. 56.100 libavdevice57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc54. 1.100 / 54. 1.100 [avi @ 002eaee0] sample size (1) != block align (2) Input #0, avi, from 'C:\Temp\___Motorradvideo\20150424_20_0301.avi': Duration: 00:05:01.00, start: 0.00, bitrate: 437 kb/s Stream #0:0: Video: h264 (Constrained Baseline) (H264 / 0x34363248), yuv420p(progressive), 704x576, 304 kb/s, 6 fps, 6 tbr, 6 tbn, 12 tbc Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s frame|key_frame=1|best_effort_timestamp_time=0.00 frame|key_frame=1|best_effort_timestamp_time=0.060125 frame|key_frame=1|best_effort_timestamp_time=0.00|pict_type=I frame|key_frame=1|best_effort_timestamp_time=0.120250 frame|key_frame=1|best_effort_timestamp_time=0.180375 frame|key_frame=0|best_effort_timestamp_time=0.17|pict_type=P frame|key_frame=1|best_effort_timestamp_time=0.240500 frame|key_frame=1|best_effort_timestamp_time=0.300625 frame|key_frame=1|best_effort_timestamp_time=0.360750 frame|key_frame=0|best_effort_timestamp_time=0.33|pict_type=P frame|key_frame=1|best_effort_timestamp_time=0.420875 frame|key_frame=1|best_effort_timestamp_time=0.481000 frame|key_frame=1|best_effort_timestamp_time=0.541125 frame|key_frame=0|best_effort_timestamp_time=0.50|pict_type=P frame|key_frame=1|best_effort_timestamp_time=0.601250 frame|key_frame=1|best_effort_timestamp_time=0.661375 frame|key_frame=0|best_effort_timestamp_time=0.67|pict_type=P frame|key_frame=1|best_effort_timestamp_time=0.721500 frame|key_frame=1|best_effort_timestamp_time=0.781625 frame|key_frame=1|best_effort_timestamp_time=0.841750 frame|key_frame=0|best_effort_timestamp_time=0.83|pict_type=P frame|key_frame=1|best_effort_timestamp_time=0.901875 frame|key_frame=1|best_effort_timestamp_time=0.962000 frame|key_frame=1|best_effort_timestamp_time=1.022125 frame|key_frame=1|best_effort_timestamp_time=1.00|pict_type=I ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] best_effort_timestamp_time
Dear list members, I am analysing a video from a security cam which has recorded a traffic accident. I want to calculate the speeds of the vehicles involved and therefore need the exact time gap between each two frames. When analysing the video with ffprobe it turns out that the time gap is not constant, which is what I suspected from the space gaps between the vehicle positions in the frames. I however wonder where 'best_effort_timestamp_time' stems from. "best effort" suggests that the timestamp cannot really be trusted (?). In this very case, I will be able to test the video timing at the spot (using a turntable or alike as a target), but rather often, the cameras are already dismounted when I come into play, thus this is a question that matters when settling litigation issues ... BTW: What are those frames that are neither I- nor P-frames? Wolfgang Hugemann Screen dump: ffprobe -show_frames -show_entries frame=best_effort_timestamp_time,key_frame,pict_type input.avi ffprobe version N-88042-g72c3d9ae45 Copyright (c) 2007-2017 the FFmpeg developers built with gcc 7.2.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx libavutil 56. 0.100 / 56. 0.100 libavcodec 58. 0.100 / 58. 0.100 libavformat58. 0.100 / 58. 0.100 libavdevice58. 0.100 / 58. 0.100 libavfilter 7. 0.100 / 7. 0.100 libswscale 5. 0.100 / 5. 0.100 libswresample 3. 0.100 / 3. 0.100 libpostproc55. 0.100 / 55. 0.100 Input #0, avi, from 'C:\Temp\Motorradvideo\20150424_20_0301_crop.avi': Metadata: encoder : Lavf55.0.100 Duration: 00:00:05.00, start: 0.00, bitrate: 418 kb/s Stream #0:0: Video: h264 (Constrained Baseline) (H264 / 0x34363248), yuv420p(progressive), 704x576, 277 kb/s, 6 fps, 6 tbr, 6 tbn, 12 tbc Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s [FRAME] key_frame=1 best_effort_timestamp_time=0.00 pict_type=I [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.00 [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.060125 [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.120250 [/FRAME] [FRAME] key_frame=0 best_effort_timestamp_time=0.17 pict_type=P [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.180375 [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.240500 [/FRAME] [FRAME] key_frame=1 best_effort_timestamp_time=0.300625 [/FRAME] [FRAME] ... ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] SMPTE when converting to JPEGs
You didn't answer Carl Eugen's very important question: Did you use ffmpeg to convert the camera's AVI to JPEG frames? What command did you use? Well, of course I used ffmpeg; otherwise I wouldn't ask it in this forum. It's possible though to instruct ffmpeg to create one output image for every input frame (regardsless of its timestamp or frame rate) This is what I am looking for. Please show us your full command line and the complete, uncut console output. This is my Windows CMD line: C:\Programme\ffmpeg\bin\ffmpeg -ss 00:01:30.00 -t 00:00:04.00 -i [CH01]14_10_43.avi -vf "drawtext=fontfile=/Windows/Fonts/arial.ttf:fontcolor=yellow:fontsize=350:timecode='09\:57\:00\:00':r=30:x=15:y=50" -q:v 3 _frames\%%02d.jpg And this is the output: ffmpeg version N-79630-g9ac154d Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.3.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 22.101 / 55. 22.101 libavcodec 57. 38.100 / 57. 38.100 libavformat57. 34.103 / 57. 34.103 libavdevice57. 0.101 / 57. 0.101 libavfilter 6. 44.100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 0.101 / 2. 0.101 libpostproc54. 0.100 / 54. 0.100 [avi @ 024f24a0] non-interleaved AVI Guessed Channel Layout for Input Stream #0.1 : mono Input #0, avi, from '[CH01]14_10_43.avi': Duration: 00:05:52.00, start: 0.00, bitrate: 7226 kb/s Stream #0:0: Video: h264 (Constrained Baseline) (H264 / 0x34363248), yuv420p, 1920x1080, 7177 kb/s, 30 fps, 30 tbr, 30 tbn Stream #0:1: Audio: pcm_mulaw ([7][0][0][0] / 0x0007), 8000 Hz, 1 channels, s16, 64 kb/s [swscaler @ 037dccc0] deprecated pixel format used, make sure you did set range correctly [image2 @ 025e0760] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. Output #0, image2, to '_frames\%02d.jpg': Metadata: encoder : Lavf57.34.103 Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080, q=2-31, 200 kb/s, 30 fps, 30 tbn Metadata: encoder : Lavc57.38.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/20 buffer size: 0 vbv_delay: -1 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help frame= 42 fps=0.0 q=3.0 size=N/A time=00:00:01.30 bitrate=N/A dup=8 drop=0 speed=2.52x frame= 77 fps= 75 q=3.0 size=N/A time=00:00:02.46 bitrate=N/A dup=15 drop=0 speed=2.39x frame= 110 fps= 72 q=3.0 size=N/A time=00:00:03.56 bitrate=N/A dup=21 drop=0 speed=2.33x frame= 119 fps= 72 q=3.0 Lsize=N/A time=00:00:03.96 bitrate=N/A dup=23 drop=0 speed=2.39x video:52135kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Kind regards Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] SMPTE when converting to JPEGs
Is there a formalised way to embed timecode in JPEGs? Does the OP mean "burned in?" Sorry for using the wrong words; I meant "burned in", i.e. written onto each frame / JPEG. (As you can tell from my name, I am not a native speaker.) My question is however where exactly ffmpeg's timecode stems from. It doesn't seem to be a simple frame count (?). Wolfgang Hugemann P.S.: The Exif timestamp's accuracy is only integer seconds. A more accurate timestamp could only be written into the JPEG comment or into the XP comment Exif tag, I guess. By default ffmpeg writes the name of the codec library (Lavc57.38.100 in my case) into the JPEG comment. I have no idea whether you can change this behaviour. ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] SMPTE when converting to JPEGs
I converted a video taken by a supervision (security) camera into a sequence of JPEGs with embedded SMPTE. (My aim is to calculate the vehicle speed for an accident recorded in the background.) The original AVI-container (AVC coded) claims to have a frame rate of 30 fps, which to my experience is not a reliable information. When I convert it into a sequence of JPEGs or another video, I realise that roughly every 5th frame is doubled, with the SMPTE repeated in both frames. (The frame counter in the SMPTE runs from 0 to 29, with every about fith number doubled.) So I guess that the SMPTE is that of the original video (?). Is it embedded in the original video and read from there? I can't rather be kind of a frame count. BTW: If I display the frame number, the equivalent thing happens: n is repeated every about five frames. How does thi swork internally? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Float formatting in drawtext (Stop watch)
With a little more research (and somewhat more knowledge about ffmpeg) I came to the following solution for a stopwatch with a defined decimal precision: * get the framerate via ffprobe and store it in a variable (i.e. !W!) * divide the frame number by this rate * display the result in two parts via text=%%{eif\\:n/!W!\\:d}"."%%{eif\\:n/!W!*100\\:d\\:2} NOTE: I am working under Windows, therefore somewhat exotic escaping in batch files. An offset could easily be accounted for by subtracting a user-provided integer from 'n'. Allowing for printf-style formatting of decimals in drawtext would still be easier ... The whole Windows batch code thus looks like: SETLOCAL EnableDelayedExpansion for /f "tokens=2 delims==/" %%i in ('C:\programme\ffmpeg\bin\ffprobe.exe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=r_frame_rate %1') do set W=%%~i c:\Programme\ffmpeg\bin\ffmpeg -i %1 -y -filter:v "drawtext=fontfile=/Windows/Fonts/arial.ttf:fontcolor=yellow:fontsize=42:text=%%{eif\\:n/!W!\\:d}"."%%{eif\\:n/!W!*100\\:d\\:2}:x=15:y=50" -q 8 -vcodec libxvid %~dpn1_sw%~x1 Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Images to video under Windows
> This works for me in the cmd shell on Win7: > type *.jpg | ffmpeg -f image2pipe -i - {encoding options) output.ext > In any case, dir /b produces a listing. cat/type emit the data of the > operands. Thanks. This command line does the job. My problem was that I did not really know what exactly 'cat' does. In regard to the other comment: I knew that Cygwin is an option, but my main intent is to completely automise standard operations, such that all my colleagues can perform them without thinking about what happens exactly. Installing Cygwin on each client computer in our network would make things more complicated. Thanks for your hints! Wolfgang ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Images to video under Windows
> e.g. cat *.jpg | ffmpeg -f image2pipe -framerate 25 -i - out.mp4 Does piping really work under Windows? The Windows equivalent to 'cat' would be 'dir /b'. But changing the command line this way creates an error that basically says that the input stream is empty. I couldn't find any example for input piping with ffmpeg on Windows. Are you sure that it functions at all? BTW: Is there any source of information on the specifics and limitations when using ffmpeg under Windows? The situation seems to be a little bit like that for ImageMagick, where I had to write that kind of webpage myself (http://www.imagemagick.org/Usage/windows). Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Images to video under Windows
Hey, I have a bunch of images that I want to convert into a video. These are, however, not numbered consecuitively (not like 001.jpg, 002.jpg, ...). Well, I could make a copy of each and rename them in such a pattern, but is there a more elegant way to perform the job? File name globbing is obviously not supported by the Windows version. How about piping? Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Dimensions of the input video as a variable
ffprobe can be used to get width and height for the showwaves size option. This set me on the rigth track! This is what my Windows batch file now looks like: SET FFM="c:\programme\ffmpeg\bin\ffmpeg.exe" SET FFP="C:\programme\ffmpeg\bin\ffprobe.exe" for /f "tokens=5 delims==_" %%i in ('%FFP% -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=width %1') do set W=%%i for /f "tokens=5 delims==_" %%i in ('%FFP% -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=height %1') do set H=%%i %FFM% -y -i %1 -filter_complex "[0:a]showwaves=s=%W%x%H%:mode=line,format=rgba[waves];[0:v]setsar=1:1,format=rgba[video];[waves][video]blend=all_mode='addition'" -c:v libxvid -c:a copy %~dpn1_wav%~x1 --- The line breaks stem from sending this per e-mail. Please note that the colour format must be set to rgba in order to make black background of the waves transparent. Thanks a lot! Wolfgang ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Dimensions of the input video as a variable
I would like to superimpose the audiograph of the video's audio on the video itself using 'blend'. I sucseeded in doing so with the line: c:\programme\ffmpeg\bin\ffmpeg -y -i test.avi -filter_complex "[0:a]showwaves=s=640x480:mode=line[waves];[0:v]setsar=1:1[video];[waves][video]blend=all_mode='lighten'" -c:v libxvid -c:a copy ovl.avi As you see, I supplied the dimensions of the input video (640x480) in the command line. I would like to turn this into a more general script, determining the dimensions of the input video on the fly, but how do I do that? I tried "s=wxh" and alike, by that doesn't seem to work. Wolfgang ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Float formatting in drawtext
I have just had a look at the solution via subtitles: Pro: * It works and the SRT format is simple enough to be written by a script. Cons: * SRT subtitles are written time-based and not frame-based, which takes some calculations, starting the subtitles shortly before the frame and ending it within the frame. * This does not seem to work at the start of the video (frames 1, 2). * I seem to have no influence on where the subtitle is placed. It appears at the middle of the bottom. ... The drawtext filter has an option to read text from a file, but I guess this cannot easily be used to read lines on a per-frame basis (?). Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-user] Float formatting in drawtext
OK, maybe I put my question the wrong way: I would like to display a stop watch starting at an arbitrary time in the video (usually the collision of two cars for accident reconstruction purposes). This can obviously be done via drawtext and pts, but the result looks nasty, and I seem to have no control on the formatting of the string displayed. So possibly there is another way to acchieve this? Could I for example store a string in a user-defined frame-wise variable and display its value by drawtext as is done when deciphering the VITC: ffmpeg -i sample-vitc.avi -filter:v "readvitc,drawtext=fontfile=FreeMono.ttf:fontcolor=white:text=%{metadata\\:lavfi.readvitc.tc_str}:x=(w-tw)/2:y=400-ascent" -f avi -codec:v huffyuv test.avi (Code by Tobias Rapp) Any help would be appreciated. Wolfgang Hugemann Am 23.01.2017 um 16:13 schrieb Wolfgang Hugemann: Hey, seems to be an easy question, but I have been searching for the answer quite a while without success: If I perform a float calculation via text=%{expr\:whatever} is there any way to format the output the printf way? I know, the result could be converted to integer and be formatted via text=%{eif\:whatever\:d} but this is restricted to integer results. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-user] Float formatting in drawtext
Hey, seems to be an easy question, but I have been searching for the answer quite a while without success: If I perform a float calculation via text=%{expr\:whatever} is there any way to format the output the printf way? I know, the result could be converted to integer and be formatted via text=%{eif\:whatever\:d} but this is restricted to integer results. Wolfgang Hugemann ___ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".