Sorry, I've copied a message from #ffmpeg IRC channel which suggested using pastebin for ffmpeg commands. This is the command that was the closest to what I want but still doesn't always work.
ffmpeg -i rtmp://localhost/live/$name -s 1920x1080 -codec:a aac -ar 48000 -ac 1 -codec:v libx264 -r 25 -g 1 -f stream_segment -segment_time 30 -reset_timestamps 1 -segment_atclocktime 1 -strftime 1 /var/rec/high%H%M%S.ts; Example of output files: 1) ffprobe C:\dev\records_test\high162001.ts ffprobe version 4.3.2-2021-02-27-full_build-www.gyan.dev Copyright (c) 2007-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-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-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. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100 Input #0, mpegts, from 'C:\dev\records_test\high162001.ts': Duration: 00:00:28.66, start: 1.400000, bitrate: 18837 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, mono, fltp, 4 kb/s This was the start of the stream, so it's ok to have it not 30.00 seconds I'm omitting uninteresting lines for next paragraphs - only bitrate and duration are different. 2) Input #0, mpegts, from 'C:\dev\records_test\high162029.ts': Duration: 00:00:30.04, start: 1.400000, bitrate: 17092 kb/s - 29 in name for some reason. And also not 30.00. 3) 2 more chunks with 30.00 4) Input #0, mpegts, from 'C:\dev\records_test\high162200.ts': Duration: 00:00:29.96, start: 1.400000, bitrate: 16452 kb/s I don't care about file size. I want to always have 30.00 seconds. Without specifying -g 1 I'm usually getting 30.06-30.07 (this is what ffprobe shows me). I've also tried keyint=1 and force_key_frames expr:gte(t,n_forced*30) I'm testing this inside a very simple Docker container based on Debian Buster. ffmpeg is triggered by nginx if it matters at all. # ffmpeg -version ffmpeg version 4.1.6-1~deb10u1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Best regards, Marian Klymov чт, 25 бер. 2021 о 11:28 Carl Eugen Hoyos <ceffm...@gmail.com> пише: > Am Do., 25. März 2021 um 08:03 Uhr schrieb Marian Klymov < > nekto1...@gmail.com>: > > > > I want to receive rtmp stream (using nginx-rtmp module), transcode > > it and save it in chunks. > > I would like to have splitting at specific times and to have all chunks > > equal to 30.00 seconds (except first and last obviously). I've tried > > playing with different parameters. segment_atclocktime looked like > > it should do what I want but it creates chunks of different sizes. > > Either I misunderstand or this makes no sense: > You write that you want 30-second-chunks which is not unusual I > guess. With each real encoder (like x264), each 30-second-chunk > has a different size (in bytes). Then you write that you expect that > your chunks all have the same size. > You would that be possible? > > Generally, when asking questions here, always post the command > line you used together with the complete, uncut console output in > your email, do not use external resources. > > Carl Eugen > _______________________________________________ > 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 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".