I've just about lost my mind on this, I'm sure I'm missing something simple.
I have two *.mkv files generated by OBS. Even better, I've just copied one file twice, so I am sure I have the same bitrate, fps, tbn, whatever.
then I do:
ffmepg -i "concat:file1.mkv|file1_copy.mkv" -c copy test.mkv
It runs and my screen fills with yellow messages:
ffmpeg -i "concat:file1.mkv|file1_copy.mkv" -c copy test.mkv
ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807
configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --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 --enable-libopenmpt
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Input #0, matroska,webm, from 'concat:file1.mkv|file1_copy.mkv':
Metadata:
ENCODER : Lavf58.20.100
Duration: 00:00:09.15, start: 0.000000, bitrate: 2006 kb/s
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 60 tbr, 1k tbn, 120 tbc (default)
Metadata:
DURATION : 00:00:09.150000000
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp (default)
Metadata:
title : simple_aac_recording
DURATION : 00:00:09.102000000
Output #0, matroska, to 'test.mkv':
Metadata:
encoder : Lavf58.29.100
Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 60 fps, 60 tbr, 1k tbn, 1k tbc (default)
Metadata:
DURATION : 00:00:09.150000000
Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 44100 Hz, stereo, fltp (default)
Metadata:
title : simple_aac_recording
DURATION : 00:00:09.102000000
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[matroska,webm @ 00000156ce7f14c0] File extends beyond end of segment.
[matroska @ 00000156cef62040] Non-monotonous DTS in output stream 0:0; previous: 9100, current: 0; changing to 9100. This may result in incorrect timestamps in the output file.
[matroska @ 00000156cef62040] Non-monotonous DTS in output stream 0:0; previous: 9100, current: 67; changing to 9100. This may result in incorrect timestamps in the output file.
[matroska @ 00000156cef62040] Non-monotonous DTS in output stream 0:0; previous: 9100, current: 33; changing to 9100. This may result in incorrect timestamps in the output file.
[matroska @ 00000156cef62040] Non-monotonous DTS in output stream 0:1; previous: 9102, current: 0; changing to 9102. This may result in incorrect timestamps in the output file.
[matroska @ 00000156cef62040] Non-monotonous DTS in output stream 0:0; previous: 9100, current: 17; changing to 9100. This may result in incorrect timestamps in the output file.
############## thousands of the above lines here #####################
frame= 1098 fps=0.0 q=-1.0 Lsize= 2241kB time=00:00:09.11 bitrate=2013.0kbits/s speed=24.9x
video:2068kB audio:159kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.607770%
When opened, the timestamps only go to the end of the first segment, even though the video continues afterwards. Normally this would be fine, but I'm recording instructional videos and it would be nice for users to be able to skip around them. This occurs even if I re-encode the videos (which I shouldn't need, since they are identical) or re-encode the output.
Everything I have read online says:
re-encode*into .mkv to fix this, since .mkv has a fixed tbn - it's already .mkv
the problem is different bitrates/tbs/fps/whatever - for now, they're the same video twice
use
-fflags +genpts
,-use_wallclock_as_timestamps 1
,vsync 0 -enc_time_base -1
- none of these do anything as far as I can tell, either before-i
or after-c copy
I've run out of ideas. What am I doing wrong.