Файлы не храню, а хар-ки исходного такие:
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.25.100
Duration: 00:13:54.25, start: 0.000000, bitrate: 635 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1360x768, 626 kb/s, 29.97 fps, 30 tbr, 15360 tbn, 30720 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
Специально сейчас записал файл в Openshot. Вот хар-ки:
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:13:54.28, start: 0.033000, bitrate: 5159 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 5027 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
Side data:
audio service type: main
Нашёл совет как ffmpeg соединяет. Получилось. Конечно нет переходов, и текст не вставить, придётся обойтись без всего этого.
Способ заключается в следующем:
ffmpeg не соединяет файлы mp4 функцией concat (именно с ней даются примеры в интернете). Их надо предварительно преобразовать в контейнер, например, MPEG-TS без перекодирования видео и звука:
ffmpeg -i vid1.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid1.ts
ffmpeg -i vid2.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid2.tsпотом уже соединить:
ffmpeg -i "concat:vid1.ts|vid2.ts" -vcodec copy -acodec copy out.mp4Это сработало. Выходной файл получился такого же объёма и с характеристиками исходного.