LINUX.ORG.RU

Наложение видео на видео из консоли

 , ,


1

2

Всем привет! Есть задачка накладывать видосы друг на друга, что бы одновременно воспроизводилось видео из множества склеенных во едино роликов. Поиски по интернету не дали однозначного ответа, только склейка, то есть когда ролики идут друг за другом (ffmpeg, mencoder и производные). Склейка должна производиться автоматически, ну то есть будет скриптик, который будет собирать ролики и склеивать, вот как можно это сделать и можно ли? Укажите куда копать, какой инструмент искать, или может есть готовые Web-сервисы (API) или же что другое?


Ответ на: комментарий от anonymous

Суть задачки вот в чем: Есть приложение мобильно, пользователь снимает видосы разные, и потом все видосы отправляются на сервер, где должны быть наложены друг на друга, что бы получилось, что то типа сеточки. Как я понимаю, нужно, что то типа холста, на который сеткой будут наложены все видосики, которые придут из приложения. Именно наложить надо, а не сблендить.

kadr86
() автор топика
Ответ на: комментарий от i-rinat

Вроде похоже на то что мне надо,читать и раскуривать эту тему. Благодарю.

kadr86
() автор топика
Ответ на: комментарий от i-rinat

Объединить видео и звук

Никак не могу найти, как объединить видео с уже имеющейся звуковой дорожкой, со звуковым файлом, иными словами, добавить к видео еще одну звуковую дорожку без замены существующей, что бы проигрывались обе. Все что пробовал заменяет существующий звук.

ffmpeg -i output.mp4 -i wave2.mp3 -c:v copy -c:a copy -c:a libmp3lame -strict experimental  output.mp4 
Пробовал выдергивать звуковую дорожку из видео и объединить их, не получается, записывается всегда что то одно. Посоветуйте, куда копать, как наложить звук без замены звука в видео?

kadr86
() автор топика
Ответ на: Объединить видео и звук от kadr86

куда копать

В сторону "-map":

ffmpeg -i output.mp4 -i wave2.mp3 -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 libmp3lame output.mp4

c:a:0 — кодек для первой звуковой дорожки, c:a:1 — для второй. В твоём варианте ты задаёшь libmp3lame для всех дорожек.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Объединить видео и звук

Не хочет объединяться, на выходе видео с родной звуковой дорожкой.

ffmpeg -i output.mp4 -i wave2.mp3 -map 0:v -map 0:a -map 1:a -c:v copy -c:a:0 copy -c:a:1 libmp3lame output_mp3.mp4
ffmpeg version 2.8.6 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
  configuration: --prefix=/opt/ffmpeg --libdir=/opt/ffmpeg/lib/ --enable-shared --enable-avresample --disable-stripping --enable-gpl --enable-version3 --enable-nonfree --enable-runtime-cpudetect --build-suffix=.ffmpeg --enable-postproc --enable-x11grab --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-libfdk_aac --enable-libflite --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libkvazaar --enable-libxvid --enable-libzmq --enable-libzvbi --enable-openal --enable-opengl --enable-pthreads --enable-vaapi --enable-vdpau --enable-zlib --enable-debug=3
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
  Duration: 00:00:21.97, start: 0.023220, bitrate: 541 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 360x640 [SAR 1:1 DAR 9:16], 458 kb/s, 29 fps, 29 tbr, 14848 tbn, 58 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 75 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[mp3 @ 0xd40400] Skipping 0 bytes of junk at 647.
Input #1, mp3, from 'wave2.mp3':
  Metadata:
    title           : FREE SOUND FX
    artist          : WAV-LIBRARY.NET
    album           : Çâóêè è øóìîâûå ýôôåêòû
    genre           : Other
    date            : 2016
  Duration: 00:00:02.25, start: 0.025057, bitrate: 130 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : LAME3.98 
File 'output_mp3.mp4' already exists. Overwrite ? [y/N] y
[mp4 @ 0xd36780] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0xd36780] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, mp4, to 'output_mp3.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
    Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 360x640 [SAR 1:1 DAR 9:16], q=2-31, 458 kb/s, 29 fps, 29 tbr, 14848 tbn, 14848 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, mono, 75 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2: Audio: mp3 (libmp3lame) (i[0][0][0] / 0x0069), 44100 Hz, stereo, s16p
    Metadata:
      encoder         : Lavc56.60.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #1:0 -> #0:2 (mp3 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame=  635 fps=0.0 q=-1.0 Lsize=    1488kB time=00:00:21.96 bitrate= 554.8kbits/s    
video:1225kB audio:238kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.707431%
Не пойму что ему не хватает.

kadr86
() автор топика
Ответ на: Объединить видео и звук от kadr86

Как это не хочет объединяться? Оно же тебе сделало видео с двумя звуковыми дорожками. По умолчанию включена первая, та что была в файле с видео. Пробовал их в плеере переключать?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Опа

Не пробовал, а мне то надо что бы они одновременно проигрывались. То есть мне надо выдирать звуковую дорожку из видео, объединять их и обратно загонять в видео?

kadr86
() автор топика
Ответ на: Опа от kadr86

что бы они одновременно проигрывались

Яснее надо выражаться :)

Ffmpeg так тоже умеет. Он много чего умеет...

ffmpeg -i output.mp4 -i wave2.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2" -c:v copy -c:a libmp3lame output.mp4
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да мой косяк

Я так пробовал:

ffmpeg -i output.mp4 -i wave2.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2" -c:v copy -c:a libmp3lame output_mp3.mp4
ffmpeg version 2.8.6 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
  configuration: --prefix=/opt/ffmpeg --libdir=/opt/ffmpeg/lib/ --enable-shared --enable-avresample --disable-stripping --enable-gpl --enable-version3 --enable-nonfree --enable-runtime-cpudetect --build-suffix=.ffmpeg --enable-postproc --enable-x11grab --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-libfdk_aac --enable-libflite --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libkvazaar --enable-libxvid --enable-libzmq --enable-libzvbi --enable-openal --enable-opengl --enable-pthreads --enable-vaapi --enable-vdpau --enable-zlib --enable-debug=3
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
  Duration: 00:00:21.97, start: 0.023220, bitrate: 541 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 360x640 [SAR 1:1 DAR 9:16], 458 kb/s, 29 fps, 29 tbr, 14848 tbn, 58 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 75 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[mp3 @ 0x2042440] Skipping 0 bytes of junk at 647.
Input #1, mp3, from 'wave2.mp3':
  Metadata:
    title           : FREE SOUND FX
    artist          : WAV-LIBRARY.NET
    album           : Çâóêè è øóìîâûå ýôôåêòû
    genre           : Other
    date            : 2016
  Duration: 00:00:02.25, start: 0.025057, bitrate: 130 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : LAME3.98 
File 'output_mp3.mp4' already exists. Overwrite ? [y/N] y
[Parsed_amerge_0 @ 0x1f14be0] No channel layout for input 1
[mp4 @ 0x1f168c0] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, mp4, to 'output_mp3.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.101
    Stream #0:0: Audio: mp3 (libmp3lame) (i[0][0][0] / 0x0069), 44100 Hz, stereo, fltp (default)
    Metadata:
      encoder         : Lavc56.60.100 libmp3lame
    Stream #0:1(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 360x640 [SAR 1:1 DAR 9:16], q=2-31, 458 kb/s, 29 fps, 29 tbr, 14848 tbn, 14848 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:1 (aac) -> amerge:in0
  Stream #1:0 (mp3) -> amerge:in1
  amerge -> Stream #0:0 (libmp3lame)
  Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
Error while decoding stream #0:1: Cannot allocate memory
    Last message repeated 786 times
frame=  635 fps=0.0 q=-1.0 Lsize=    1269kB time=00:00:21.81 bitrate= 476.5kbits/s    
video:1225kB audio:35kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.777158%

kadr86
() автор топика
Ответ на: комментарий от kadr86

лоханулся

Все получилось, просто из за того, что звуковой файл был короткий, звуковая дорожка получилась по длине звукового файла, и потом всё остальное видео тишина, то есть звуковой файл по времени должен быть равен времени видео. И еще вопрос, можно ли как нибудь регулировать громкость подмешиваемого звука, уменьшить громкость например, а то родную звуковую дорожку плохо слышно.

kadr86
() автор топика
Ответ на: лоханулся от kadr86

можно ли как нибудь регулировать громкость подмешиваемого звука

Если ты считаешь, что я эти команды все помню, или хотя бы знал об их существовании вообще, то сильно ошибаешься.

Всё это легко гуглится. Например, по фразе «ffmpeg amerge volume»: http://superuser.com/questions/714879/simplify-ffmpeg-amerge-and-volume-custo...

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Благодарю

Искал, только поисковые запросы были другие, не нашел. По вашей ссылке, то что нашел, подходит.

ffmpeg -i video4.mp4 -i wave.mp3 -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1[a1];[1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.2[a2];[a1][a2]amerge=inputs=2" -c:v copy -c:a libmp3lame output_mp3.mp4
Благодарю за терпение.

kadr86
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.