Как точно наложить время на несколько видео потоков одновременно, используя FFMPEG

264
Viktor

Я использую 9 камер, чтобы записать музыкальный спектакль и точно вырезать фрагмент музыки из каждой камеры. Когда я пытаюсь выложить их в формате 3x3 с помощью ffmpeg, синхронизация видео может быть на одну секунду меньше друг от друга. Объединение их с коммерческим продуктом с графическим интерфейсом работает нормально, но я хотел бы использовать процедуру командной строки с ffmpeg. Вот команда, которую я использую:

ffmpeg -i piece13cam1.m2t -i piece13cam2.m2t -i piece13cam3.m2t -i piece13cam4.m2t -i piece13cam5.m2t -i piece13cam6.m2t -i piece13cam7.m2t -i piece13cam8.m2t -i piece13cam9.m2t -filter_complex "[0:v]scale=640:-1[a];[1:v]scale=640:-1[b];[2:v]scale=640:-1[c];[3:v]scale=640:-1[d];[4:v]scale=640:-1[e];[5:v]scale=640:-1[f];[6:v]scale=640:-1[g];[7:v]scale=640:-1[h];[8:v]scale=640:-1[i]; [0:v][a] overlay=0:0 [xb]; [xb][b] overlay=640:0 [xc];[xc][c] overlay=1280:0 [xd]; [xd][d] overlay=0:360 [xe];[xe][e] overlay=640:360 [xf];[xf][f] overlay=1280:360 [xg];[xg][g] overlay=0:720 [xh];[xh][h] overlay=640:720 [xi];[xi][i] overlay=1280:720" piece13composite.m2t 

Вот вывод времени выполнения:

 ffmpeg version N-82597-gd316b21 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --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-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. 40.100 / 55. 40.100 libavcodec 57. 66.106 / 57. 66.106 libavformat 57. 58.100 / 57. 58.100 libavdevice 57. 2.100 / 57. 2.100 libavfilter 6. 67.100 / 6. 67.100 libswscale 4. 3.101 / 4. 3.101 libswresample 2. 4.100 / 2. 4.100 libpostproc 54. 2.100 / 54. 2.100 Input #0, mpegts, from 'piece13cam1.m2t': Duration: 00:04:00.15, start: 1.400000, bitrate: 3984 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #0:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #1, mpegts, from 'piece13cam2.m2t': Duration: 00:04:00.15, start: 1.400000, bitrate: 4033 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #1:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #1:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #2, mpegts, from 'piece13cam3.m2t': Duration: 00:04:00.17, start: 1.400000, bitrate: 4069 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #2:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #2:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #3, mpegts, from 'piece13cam4.m2t': Duration: 00:04:00.13, start: 1.400000, bitrate: 3906 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #3:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #3:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #4, mpegts, from 'piece13cam5.m2t': Duration: 00:04:00.10, start: 1.400000, bitrate: 4409 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #4:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #4:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #5, mpegts, from 'piece13cam6.m2t': Duration: 00:04:00.17, start: 1.400000, bitrate: 3357 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #5:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #5:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #6, mpegts, from 'piece13cam7.m2t': Duration: 00:04:00.15, start: 1.400000, bitrate: 3623 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #6:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #6:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #7, mpegts, from 'piece13cam8.m2t': Duration: 00:04:00.17, start: 1.400000, bitrate: 3422 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #7:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #7:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s Input #8, mpegts, from 'piece13cam9.m2t': Duration: 00:04:00.20, start: 1.400000, bitrate: 3693 kb/s Program 1  Metadata: service_name : Service01 service_provider: FFmpeg Stream #8:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #8:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s File 'piece13composite.m2t' already exists. Overwrite ? [y/N] Output #0, mpegts, to 'piece13composite.m2t': Metadata: encoder : Lavf57.58.100 Stream #0:0: Video: mpeg2video (Main), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 59.94 fps, 90k tbn, 59.94 tbc (default) Metadata: encoder : Lavc57.66.106 mpeg2video Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s Metadata: encoder : Lavc57.66.106 mp2 Stream mapping: Stream #0:0 (mpeg2video) -> scale (graph 0) Stream #0:0 (mpeg2video) -> overlay:main (graph 0) Stream #1:0 (mpeg2video) -> scale (graph 0) Stream #2:0 (mpeg2video) -> scale (graph 0) Stream #3:0 (mpeg2video) -> scale (graph 0) Stream #4:0 (mpeg2video) -> scale (graph 0) Stream #5:0 (mpeg2video) -> scale (graph 0) Stream #6:0 (mpeg2video) -> scale (graph 0) Stream #7:0 (mpeg2video) -> scale (graph 0) Stream #8:0 (mpeg2video) -> scale (graph 0) overlay (graph 0) -> Stream #0:0 (mpeg2video) Stream #0:1 -> #0:1 (mp2 (native) -> mp2 (native)) Press [q] to stop, [?] for help frame= 9 fps=0.0 q=14.7 size= 464kB time=00:00:00.39 bitrate=9557.4kbits/s speed=0.793x 

.....

frame=14379 fps= 37 q=31.0 Lsize= 132985kB time=00:04:00.13 bitrate=4536.7kbits/s speed=0.613x  video:109909kB audio:11257kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.754501% 

Что я должен сделать по-другому, чтобы синхронизировать все 9 видео друг с другом? Благодарю.

0
Я просто попытался сделать это с 9 одинаковыми видео. Верхнее левое (первое) видео не синхронизировано со всеми остальными. 2 - 9 визуально синхронизированы друг с другом. Звук синхронизируется только с первым. Viktor 7 лет назад 0
попробуйте добавить фильтр `` `setpts = PTS-STARTPTS``` к каждому видео и аудио потоку ptQa 7 лет назад 0
Я решил проблему, перекодировав все входные видео с помощью: ffmpeg.exe -i videoin.mpg -ss -t -vcodec libx264 -x264-params -o recoded.m2t Viktor 6 лет назад 0

0 ответов на вопрос

Похожие вопросы