Наложить на видео звук, записанный на другом устройстве

Вопросы, приемы и проблемы обработки видео

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Наложить на видео звук, записанный на другом устройстве

Сообщение Eronex »

Цель - записать видео с монитора ноутбука, прокомментировав его. Видео не игровое.

Но вот незадача: при подключение bluetooth-гарнитуры звук совсем плохой получается, хуже чем с микрофона ноута. При этом если писать на диктофон на телефон через эту же гарнитуру, то речь слышно чётко.

Есть ли возможность звук с диктофона на телефоне наложить на видео, записанное с экрана ноутбука, автоматически синхронизировав звук и видео по реальному времени?

Пользуюсь FFMpeg.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Bizdelnick »

Eronex писал:
21.08.2019 06:08
Пользуюсь FFMpeg.
https://ffmpeg.org/ffmpeg.html#Stream-selection
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Eronex »

Не то.

Пример:
В 15:12:27 на компе щёлкнул кнопку Ctrl+R, началась запись видео с экрана;
В 15:12:35 на телефоне тапнул на диктофон и начал запись с гарнитуры;
Имеются 2 файла: один видео, другой аудио, записанные с разных устройств и начало у каждого в разное время.

Есть ли способ совместить этих двух по реальному времени? Чтобы речь соответствовала показываемому на видео?
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение azsx »

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

Shell

вырезать 8 сек с видео
ffmpeg -ss 00:00:00 -t 00:00:08 -i in.mp4 -vcodec copy -acodec copy in2.mp4.mp4

добавить звук
ffmpeg -i in2.mp4 -i audio.mp3 -codec copy -shortest output.mp4
если не получится, пишите что не так.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Bizdelnick »

Eronex писал:
22.08.2019 10:21
Не то.

Пример:
В 15:12:27 на компе щёлкнул кнопку Ctrl+R, началась запись видео с экрана;
В 15:12:35 на телефоне тапнул на диктофон и начал запись с гарнитуры;
Имеются 2 файла: один видео, другой аудио, записанные с разных устройств и начало у каждого в разное время.

Есть ли способ совместить этих двух по реальному времени? Чтобы речь соответствовала показываемому на видео?
То самое. Только для записи, начинающейся раньше, надо ещё добавить опцию -ss <время>.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Eronex »

Bizdelnick писал:
22.08.2019 13:42
Eronex писал:
22.08.2019 10:21
Не то.

Пример:
В 15:12:27 на компе щёлкнул кнопку Ctrl+R, началась запись видео с экрана;
В 15:12:35 на телефоне тапнул на диктофон и начал запись с гарнитуры;
Имеются 2 файла: один видео, другой аудио, записанные с разных устройств и начало у каждого в разное время.

Есть ли способ совместить этих двух по реальному времени? Чтобы речь соответствовала показываемому на видео?
То самое. Только для записи, начинающейся раньше, надо ещё добавить опцию -ss <время>.
В том и дело, что не то :)
Будет несколько записей. Получается нужно каждый раз узнавать величину смещения по времени, потом вручную добавлять эту величину при склеивании аудио с видео... Хотелось бы автоматизировать этот процесс.
Мысли такие:
1. Возможно в видеозаписи и звуке есть таймстампы, которые указывают на реальное время записи? А так как комп и телефон синхронизированны по времени с точностью до миллисекунд, то ориентируясь на таймстампы реального времени можно автоматически посчитать смещение и склеить фрагменты.
2. Таймстампов с реальным временем в записях нет, но есть время создания файлов. Тогда можно посчитать смещения по ним. А является ли время создания файлов с записями реальным? Ведь есть буффер и, возможно, время создания файла будет разниться с реальным началом записи. Тогда такой вариант не подходит.

Но полюбому кто-ниудь сталкивался с такой задачей. Как решить не вручную?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Bizdelnick »

Eronex писал:
23.08.2019 03:37
Получается нужно каждый раз узнавать величину смещения по времени, потом вручную добавлять эту величину при склеивании аудио с видео...
А Вы как хотели?
Eronex писал:
23.08.2019 03:37
Возможно в видеозаписи и звуке есть таймстампы, которые указывают на реальное время записи?
Из чтения всё той же документации ffmpeg несложно понять, что таймстемпы в медиафайлах начинаются с нуля (за исключением потоковых форматов, в которых начало может быть произвольным).
Eronex писал:
23.08.2019 03:37
Таймстампов с реальным временем в записях нет, но есть время создания файлов. Тогда можно посчитать смещения по ним.
Ну попробуйте.

Shell

% touch file1
% touch file2
% time1=$( stat -c %Z file1 )
% time2=$( stat -c %Z file2 )
% echo $(( time2 - time1 ))
124
%
Только не забудьте, что просто так при копировании время не сохранится. Используйте только cp --preserve=timestamps, если файлы перекладываются с места на место. В принципе, время начала записи может сохраняться где-то в метаданных контейнера, но может и не сохраняться. Сохраняется ли, и как его оттуда вытащить, — зависит от множества факторов.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение Hephaestus »

Eronex писал:
21.08.2019 06:08
Есть ли возможность звук с диктофона на телефоне наложить на видео, записанное с экрана ноутбука, автоматически синхронизировав звук и видео по реальному времени?
Взять простейший видеоредактор, загнать в него все материалы и нормально без заморочек всё синхронизировать.
В ffmpeg Вы задолбаетесь подгонять эти куски хотя бы потому, что у Вас общая длительность видеопотока отличается от общей длительности аудиопотока, не говоря уже о всяких тонкостях, вроде опорных кадров, алгоритмов сжатия и прочих подобных вещах.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Наложить на видео звук, записанный на другом устройстве

Сообщение s.xbatob »

Вообще-то все эти задачи для видеоредактора. Всё равно же видеодорожку облагораживать рекомендуется. А аудио -- вообще без вариантов, даже если оно изначально было записано вместе с видео.
Я могу кое-что про сведение и редактирование аудио рассказать, но с нелинейными видеоредакторами толком не работал. Так что рекомендаций дать не могу. Но эта задача -- для них. И явно не для пакетной обработки.
Спасибо сказали:
Ответить