Hi all, The command below creates a short matroska file with a video and audio track:
ffmpeg -f lavfi -i testsrc2=r=30000/1001:s=1920x1080:d=1 -f lavfi -i aevalsrc=exprs=0:d=1 -c:v v210 -c:a pcm_s24le -y -vframes 2 test.mkv ffmpeg version N-51550-g41d7c4d381 Copyright (c) 2000-2018 the FFmpeg developers built with Apple LLVM version 9.0.0 (clang-900.0.38) configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-41d7c4d --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma libavutil 56. 9.100 / 56. 9.100 libavcodec 58. 14.100 / 58. 14.100 libavformat 58. 10.100 / 58. 10.100 libavdevice 58. 2.100 / 58. 2.100 libavfilter 7. 13.100 / 7. 13.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 0.102 / 5. 0.102 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 Input #0, lavfi, from 'testsrc2=r=30000/1001:s=1920x1080:d=1': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 tbr, 29.97 tbn, 29.97 tbc Input #1, lavfi, from 'aevalsrc=exprs=0:d=1': Duration: N/A, start: 0.000000, bitrate: 2822 kb/s Stream #1:0: Audio: pcm_f64le, 44100 Hz, mono, dbl, 2822 kb/s Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> v210 (native)) Stream #1:0 -> #0:1 (pcm_f64le (native) -> pcm_s24le (native)) Press [q] to stop, [?] for help Output #0, matroska, to 'test.mkv': Metadata: encoder : Lavf58.10.100 Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 1325778 kb/s, 29.97 fps, 1k tbn, 29.97 tbc Metadata: encoder : Lavc58.14.100 v210 Stream #0:1: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s32, 1058 kb/s Metadata: encoder : Lavc58.14.100 pcm_s24le frame= 2 fps=0.0 q=-0.0 Lsize= 10804kB time=00:00:00.03 bitrate=2603133.6kbits/s speed=0.537x video:10800kB audio:3kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.009456% When running this through mkvalidator I get a warning: mkvalidator test.mkv WRN0C2: The timecode of the Cluster at 5530555 is not incrementing (may be intentional) mkvalidator 0.5.2: the file appears to be valid file "test.mkv" created with Lavf58.10.100 / Lavf58.10.100 With `mkvinfo -v test.mkv`, I can see how the encoded data is arranged into Clusters: |+ Cluster | + Cluster timestamp: 00:00:00.000000000 | + Simple block: key, track number 1, 1 frame(s), timestamp 00:00:00.000000000 | + Frame with size 5529600 |+ Cluster | + Cluster timestamp: 00:00:00.000000000 | + Simple block: key, track number 2, 1 frame(s), timestamp 00:00:00.000000000 | + Frame with size 3072 | + Simple block: key, track number 1, 1 frame(s), timestamp 00:00:00.033000000 | + Frame with size 5529600 So track 2 at 0 is stored in a Cluster with track 1 at 00.033. I see the Matroska muxer has options for Clusters with cluster_size_limit and cluster_time_limit but is there a way to start a new Cluster for every frame (or every keyframe) from track 1? Ideally I’d like the Cluster timestamps to be unique and timed along with the video track or at least to mux in a way that avoids the mkvalidator warning. Dave Rice _______________________________________________ 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".