Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Склеивание нескольких видео в одно (ffmpeg)  (Прочитано 6303 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн demontager

  • Автор темы
  • Активист
  • *
  • Сообщений: 304
  • KHERSON
    • Просмотр профиля
    • Nixtalks IT-експлорер
Мне нужно склеить несколько видео в одно, использую для этих целей ffmpeg version 2.5.7-0ubuntu0.15.04.1  Соединяю такой командой
ffmpeg -f concat -i <(for f in ./*_0.mov; do echo "file '$PWD/$f'"; done) -c copy output_0.mov
Склеивает нормально, видео идет цельно, но возникает проблема когда пытаюсь "доклеить" к получившемуся видео еще одно. Получается что тот дополнительный кусок вообще не показывает, идет только аудио, видео-отрезки абсолютно одинаковые, снятые одной камерой. В процессе склеивания ffmpeg выдает:
[mov @ 0x1da3280] Non-monotonous DTS in output stream 0:0; previous: 14425440, current: 1790188; changing to 14425441. This may result in incorrect timestamps in the output file.
[mov @ 0x1da3280] Non-monotonous DTS in output stream 0:0; previous: 14425441, current: 1790221; changing to 14425442. This may result in incorrect timestamps in the output file.
Как можно решить данную проблему, может быть есть еще какие-то варианты кроме ffmpeg ? Да и еще пробовал такую же операцию на ffmpeg с git, тоже самое.

p.s. Видео взято с регистратора для авто, он пишет отрывками по 5 минут, хотел сделать круговую запись.
« Последнее редактирование: 27 Июнь 2015, 10:33:22 от demontager »
Пишу о разном сюда nixtalk.com

Оффлайн dmitriy1487

  • Активист
  • *
  • Сообщений: 374
    • Просмотр профиля
А в редакторе? Тот же kdenlive, openshot?

Пользователь решил продолжить мысль 27 Июнь 2015, 11:42:38:
А в редакторе? Тот же kdenlive, openshot?

Оффлайн demontager

  • Автор темы
  • Активист
  • *
  • Сообщений: 304
  • KHERSON
    • Просмотр профиля
    • Nixtalks IT-експлорер
Не пойдет, мне нужно делать это в терминале. Вообще хотел склеивать видео на самом регистраторе, там Android, но я поставил еще Ubuntu 15.04 без иксов в chroot, там есть и ffmpeg.
Пишу о разном сюда nixtalk.com

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2197
    • Просмотр профиля
Другой вариант - с помощью mencoder. Т.к. в данном случае параметры кусков
одинаковы, то он работает как команда cat, например, для двух файлов:
mencoder -oac copy -ovc copy file1.avi file2.avi -o out.avi
Пётр.

Оффлайн arch!ver

  • Забанен
  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
demontager,
дополнительный кусок просто не подходит по формату видео - это либо размер кадра, либо фреймрейт, либо режим цветности, либо ещё чего... Просто так таких фокусов не бывает...
Шизофреник админ, - горе в семье...

Оффлайн demontager

  • Автор темы
  • Активист
  • *
  • Сообщений: 304
  • KHERSON
    • Просмотр профиля
    • Nixtalks IT-експлорер
Поэксперементировал с этими видео, удалось сделать так, чтобы склеило нормально, но при этом я сначала выполнил как бы обрезку, но от начала до конца, вот так:
ffmpeg -ss 00:00:00 -i 1.mov -vcodec copy -acodec copy  out1.mov
потом второе видео аналогично
ffmpeg -ss 00:00:00 -i 2.mov -vcodec copy -acodec copy  out2.mov
Потом склеил как писал в первом посте, а потом еще добавил out1.mov и out2.mov к общему куску и уже не выдавало эту ошибку -
Non-monotonous DTS in output stream 0:0Получается что каким-то образом видео нормализуется при первом прогоне через ffmpeg.
mencoder не склеил файлы, выдал
Audio format 0x4134504d is incompatible with '-oac copy', please try '-oac pcm' instead or use '-fafmttag' to override it.
Подставил -oac pcm, тоже не захотел соединять
mencoder -oac pcm -ovc copy 1.mov 2.mov -o out.avi
MEncoder 1.1-4.8 (C) 2000-2012 MPlayer Team
success: format: 0  data: 0x0 - 0x11d00000
libavformat version 54.20.4 (external)
Mismatching header version 54.20.3
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1920x1080  24bpp   -nan fps  7859.1 kbps (959.4 kbyte/s)
[V] filefmt:44  fourcc:0x34363248  size:1920x1080  fps: -nan  ftime:=  -nan
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 54.35.0 (external)
AUDIO: 44100 Hz, 1 ch, floatle, 64.9 kbit/4.60% (ratio: 8111->176400)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
videocodec: framecopy (1920x1080 24bpp fourcc=34363248)
Pos:  -nans   2802f (31%)  0.00fps Trem:   0min   0mb  A-V: -nan [0:0]

Too many audio packets in the buffer: (4096 in 771063 bytes).
Maybe you are playing a non-interleaved stream/file or the codec failed?
For AVI files, try to force non-interleaved mode with the -ni option.
Pos:  -nans   2803f (31%)  0.00fps Trem:   0min   0mb  A-V: -nan [0:0]

Too many audio packets in the buffer: (4096 in 771063 bytes).
Maybe you are playing a non-interleaved stream/file or the codec failed?
For AVI files, try to force non-interleaved mode with the -ni option.
success: format: 0  data: 0x0 - 0x11b20000
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1920x1080  24bpp   -nan fps  7859.3 kbps (959.4 kbyte/s)
[V] filefmt:44  fourcc:0x34363248  size:1920x1080  fps: -nan  ftime:=  -nan
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 1 ch, floatle, 64.6 kbit/4.58% (ratio: 8073->176400)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
videocodec: framecopy (1920x1080 24bpp fourcc=34363248)
Pos:  -nans   5606f (31%) 3216.29fps Trem:   0min   0mb  A-V: -nan [0:0]

Too many audio packets in the buffer: (4096 in 765093 bytes).
Maybe you are playing a non-interleaved stream/file or the codec failed?
For AVI files, try to force non-interleaved mode with the -ni option.
Pos:  -nans   5607f (31%) 3211.34fps Trem:   0min   0mb  A-V: -nan [0:0]

Too many audio packets in the buffer: (4096 in 765093 bytes).
Maybe you are playing a non-interleaved stream/file or the codec failed?
For AVI files, try to force non-interleaved mode with the -ni option.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing index...
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.

Video stream:     -nan kbit/s  (-2147483648 B/s)  size: 187040556 bytes   -nan secs  5607 frames

Audio stream:     -nan kbit/s  (-2147483648 B/s)  size: 0 bytes  0.000 secs

Полный лог ffmpeg когда склеиваются оригинальные куски
$ ffmpeg -f concat -i <(for f in ./*.mov; do echo "file '$PWD/$f'"; done) -c copy output_0.mov
ffmpeg version 2.5.7-0ubuntu0.15.04.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, concat, from '/dev/fd/63':
  Duration: N/A, start: 0.000000, bitrate: 7922 kb/s
    Stream #0:0: Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 7858 kb/s, 29.46 fps, 30 tbr, 1k tbn, 2k tbc
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 64 kb/s
Output #0, mov, to 'output_0.mov':
  Metadata:
    encoder         : Lavf56.15.102
    Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080, q=2-31, 7858 kb/s, 29.46 fps, 16k tbn, 1k tbc
    Stream #0:1: Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, 64 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 8008 fps=0.0 q=-1.0 size=  262881kB time=00:04:31.85 bitrate=7921.5kbits/[mov @ 0x1b9eb60] Non-monotonous DTS in output stream 0:1; previous: 13247488, current: 13247375; changing to 13247489. This may result in incorrect timestamps in the output file.
frame=15669 fps=15668 q=-1.0 size=  514239kB time=00:08:51.80 bitrate=7921.4kbitframe=17670 fps=15402 q=-1.0 Lsize=  581356kB time=00:09:59.69 bitrate=7941.4kbits/s   
video:576056kB audio:4710kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.101610%


p.s. Залил 2 оригинальных видео по 5 минут, которые склеиваю, не обработанные. Но они большие, по 300 мб, не хотелось обрезать чтобы ничего не намешать/неперекодировать.
wget http://nixtalk.com/video/1.mov
wget http://nixtalk.com/video/2.mov
« Последнее редактирование: 27 Июнь 2015, 21:30:57 от demontager »
Пишу о разном сюда nixtalk.com

 

Страница сгенерирована за 0.088 секунд. Запросов: 25.