Как объединить видео PowerPoint и видео вебинара Переговорка: различия между версиями
Patarakin (обсуждение | вклад) Новая страница: «{{Scripting Tutorials |Description=Нам нужно объединить файлы заставок учебных курсов, записанные в PowerPoint и файлы вебинаров Переговорки. Файлы не совпадают по кодакам и при простом слиянии звук съезжает. |Field_of_knowledge=Информатика, Педагогика |FieldActivity=Global Collaborator |Environment=Powe...» |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| (не показаны 4 промежуточные версии этого же участника) | |||
| Строка 3: | Строка 3: | ||
|Field_of_knowledge=Информатика, Педагогика | |Field_of_knowledge=Информатика, Педагогика | ||
|FieldActivity=Global Collaborator | |FieldActivity=Global Collaborator | ||
|Environment=Power Point, | |Environment=Power Point, FFmpeg, Power shell, MediaInfo, LosslessCut, PerplexityAI, VirtualDub, VirtualDub2 | ||
}} | }} | ||
== MediaInfo == | |||
Устанавливаете MediaInfo, кликаете по MP4 правой кнопкой мыши → MediaInfo и смотрите: контейнер (обычно MP4), видеокодек (например, AVC / H.264), аудиокодек (AAC и т.п.), частота кадров, разрешение. Для склейки без перекодирования в VirtualDub2 эти параметры (хотя бы кодеки, разрешение, FPS и аудио-частота) должны совпадать у обоих файлов, иначе разлад звука и рассинхрон очень вероятны. | |||
<syntaxhighlight lang="PowerShell"> | |||
mediainfo --Output=Text present.mp4 > present_mediainfo.txt | |||
mediainfo --Output=Text webinar_1080p.mp4 > webinar_mediainfo.txt | |||
</syntaxhighlight> | |||
== FFmpeg == | |||
Настроить | |||
<syntaxhighlight lang="PowerShell"> | |||
$env:PATH | |||
setx /M PATH "C:\Program Files\ffmpeg\bin;%PATH%" | |||
& "C:\Program Files\ffmpeg\bin\ffmpeg.exe" -version | |||
ffmpeg -version | |||
</syntaxhighlight> | |||
== Преобразование файлов == | |||
=== PowerPoint === | |||
В Windows PowerPoint при File → Export → Create a Video и выборе MPEG-4 Video (.mp4) создаётся ролик в контейнере MP4 с видеокодеком H.264 и аудио AAC — именно это рекомендуемый формат. [[PowerPoint]] не даёт выбирать другой [[видеокодек]] (например, HEVC) или другой [[аудиокодек]]; параметры кодирования задаются «под капотом» и не раскрываются пользователю. | |||
В PowerPoint нельзя тонко выбирать кодек как в FFmpeg, но в современных версиях он и так выводит видео в MP4 с H.264 + AAC, то есть в «правильном» формате, совместимом с большинством плееров и редакторов. | |||
Основная причина рассинхрона — именно variable frame rate у present.mp4, поэтому когда их сшиваешь, таймлиния «ломается» во второй части. Схема решения: сначала сделать present_cfr.mp4 | |||
<syntaxhighlight lang="PowerShell"> | |||
ffmpeg -i present.mp4 -vf "fps=30,format=yuv420p" -vsync 1 -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 192k -ar 44100 present_cfr.mp4 | |||
</syntaxhighlight> | |||
[[FFmpeg]] пересоберёт VFR 30.291 FPS с «прыгающим» кадром в CFR 30.000 FPS, аудио будет подогнано под новую временную сетку, так что в этом файле звук и картинка останутся синхронными | |||
=== Преобразовать файлы из Переговорки === | |||
<syntaxhighlight lang="PowerShell"> | |||
ffmpeg -i webinar.mp4 -vf "scale=1920:1080,fps=30,format=yuv420p" -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 128k -ar 44100 webinar_1080p.mp4 | |||
</syntaxhighlight> | |||
* Что тут происходит: видео масштабируется до 1920×1080, приводится к 30 fps и в стандартный формат yuv420p, аудио перекодируется в AAC 44.1 kHz, 2 канала. Значение -crf 20 даёт хорошее качество; если размер не важен, можно 18–19, если важен — 21–23. | |||
=== Объединение файлов === | |||
present.mp4 и webinar_1080p.mp4 должны лежать в той же папке, что и list.txt. | |||
Имена в файле должны точно совпадать (регистр, расширение, опечатки). | |||
list.txt | |||
file 'present_cfr.mp4' | |||
file 'webinar_1080p.mp4' | |||
<syntaxhighlight lang="PowerShell"> | |||
ffmpeg -f concat -safe 0 -i list.txt -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 128k -ar 44100 final_combined.mp4 | |||
</syntaxhighlight> | |||
Здесь оба входа уже с постоянным 30 fps, одинаковым размером 1920×1080 и аудио 44.1 kHz, так что при перекодировании FFmpeg соберёт единый непрерывный поток без скачка таймстампов и рассинхрона во второй части | |||
== [[LosslessCut]] == | |||
osslessCut не «склеивает файлы», он работает с одним исходным файлом за раз. | |||
В LosslessCut удаление лишних фрагментов делается путём выделения оставшихся хороших частей как сегментов — программа сохранит только их, а всё остальное автоматически вырежет без перекодирования. | |||
Перетащите MP4 в программу. Переместите ползунок timeline на нужную точку (стрелки ← → или мышь). Нажмите I (начало сегмента) или O (конец) — например, I для обрезки начала. Нажмите Export (E), подтвердите — лишнее удалится. | |||
Если проще выделить лишние: создайте сегменты на плохих частях (+ для нового), затем кликните символ (Yin Yang) — это инвертирует: программа вырежет выделенное и сохранит остальное. | |||
Текущая версия от 21:51, 11 марта 2026
| Описание | Нам нужно объединить файлы заставок учебных курсов, записанные в PowerPoint и файлы вебинаров Переговорки. Файлы не совпадают по кодакам и при простом слиянии звук съезжает. |
|---|---|
| Область знаний | Информатика, Педагогика |
| Область использования (ISTE) | Global Collaborator |
| Возрастная категория |
|
| Поясняющее видео | |
| Близкие рецепту понятия | |
| Среды и средства для приготовления рецепта: | Power Point, FFmpeg, Power shell, MediaInfo, LosslessCut, PerplexityAI, VirtualDub, VirtualDub2 |
MediaInfo
Устанавливаете MediaInfo, кликаете по MP4 правой кнопкой мыши → MediaInfo и смотрите: контейнер (обычно MP4), видеокодек (например, AVC / H.264), аудиокодек (AAC и т.п.), частота кадров, разрешение. Для склейки без перекодирования в VirtualDub2 эти параметры (хотя бы кодеки, разрешение, FPS и аудио-частота) должны совпадать у обоих файлов, иначе разлад звука и рассинхрон очень вероятны.
mediainfo --Output=Text present.mp4 > present_mediainfo.txt
mediainfo --Output=Text webinar_1080p.mp4 > webinar_mediainfo.txt
FFmpeg
Настроить
$env:PATH
setx /M PATH "C:\Program Files\ffmpeg\bin;%PATH%"
& "C:\Program Files\ffmpeg\bin\ffmpeg.exe" -version
ffmpeg -version
Преобразование файлов
PowerPoint
В Windows PowerPoint при File → Export → Create a Video и выборе MPEG-4 Video (.mp4) создаётся ролик в контейнере MP4 с видеокодеком H.264 и аудио AAC — именно это рекомендуемый формат. PowerPoint не даёт выбирать другой видеокодек (например, HEVC) или другой аудиокодек; параметры кодирования задаются «под капотом» и не раскрываются пользователю. В PowerPoint нельзя тонко выбирать кодек как в FFmpeg, но в современных версиях он и так выводит видео в MP4 с H.264 + AAC, то есть в «правильном» формате, совместимом с большинством плееров и редакторов.
Основная причина рассинхрона — именно variable frame rate у present.mp4, поэтому когда их сшиваешь, таймлиния «ломается» во второй части. Схема решения: сначала сделать present_cfr.mp4
ffmpeg -i present.mp4 -vf "fps=30,format=yuv420p" -vsync 1 -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 192k -ar 44100 present_cfr.mp4
FFmpeg пересоберёт VFR 30.291 FPS с «прыгающим» кадром в CFR 30.000 FPS, аудио будет подогнано под новую временную сетку, так что в этом файле звук и картинка останутся синхронными
Преобразовать файлы из Переговорки
ffmpeg -i webinar.mp4 -vf "scale=1920:1080,fps=30,format=yuv420p" -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 128k -ar 44100 webinar_1080p.mp4
- Что тут происходит: видео масштабируется до 1920×1080, приводится к 30 fps и в стандартный формат yuv420p, аудио перекодируется в AAC 44.1 kHz, 2 канала. Значение -crf 20 даёт хорошее качество; если размер не важен, можно 18–19, если важен — 21–23.
Объединение файлов
present.mp4 и webinar_1080p.mp4 должны лежать в той же папке, что и list.txt. Имена в файле должны точно совпадать (регистр, расширение, опечатки).
list.txt file 'present_cfr.mp4' file 'webinar_1080p.mp4'
ffmpeg -f concat -safe 0 -i list.txt -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 128k -ar 44100 final_combined.mp4
Здесь оба входа уже с постоянным 30 fps, одинаковым размером 1920×1080 и аудио 44.1 kHz, так что при перекодировании FFmpeg соберёт единый непрерывный поток без скачка таймстампов и рассинхрона во второй части
osslessCut не «склеивает файлы», он работает с одним исходным файлом за раз. В LosslessCut удаление лишних фрагментов делается путём выделения оставшихся хороших частей как сегментов — программа сохранит только их, а всё остальное автоматически вырежет без перекодирования.
Перетащите MP4 в программу. Переместите ползунок timeline на нужную точку (стрелки ← → или мышь). Нажмите I (начало сегмента) или O (конец) — например, I для обрезки начала. Нажмите Export (E), подтвердите — лишнее удалится. Если проще выделить лишние: создайте сегменты на плохих частях (+ для нового), затем кликните символ (Yin Yang) — это инвертирует: программа вырежет выделенное и сохранит остальное.
