Как объединить видео PowerPoint и видео вебинара Переговорка: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 3: Строка 3:
|Field_of_knowledge=Информатика, Педагогика
|Field_of_knowledge=Информатика, Педагогика
|FieldActivity=Global Collaborator
|FieldActivity=Global Collaborator
|Environment=Power Point, ffmpeg, Power shell, MediaInfo, LosslessCut, PerplexityAI, VirtualDub, VirtualDub2
|Environment=Power Point, FFmpeg, Power shell, MediaInfo, LosslessCut, PerplexityAI, VirtualDub, VirtualDub2
}}
}}
== PowerPoint ==
В Windows PowerPoint при File → Export → Create a Video и выборе MPEG-4 Video (.mp4) создаётся ролик в контейнере MP4 с видеокодеком H.264 и аудио AAC — именно это рекомендуемый формат. [[PowerPoint]] не даёт выбирать другой [[видеокодек]] (например, HEVC) или другой [[аудиокодек]]; параметры кодирования задаются «под капотом» и не раскрываются пользователю.
В PowerPoint нельзя тонко выбирать кодек как в FFmpeg, но в современных версиях он и так выводит видео в MP4 с H.264 + AAC, то есть в «правильном» формате, совместимом с большинством плееров и редакторов.


== MediaInfo  ==
== MediaInfo  ==
Устанавливаете MediaInfo, кликаете по MP4 правой кнопкой мыши → MediaInfo и смотрите: контейнер (обычно MP4), видеокодек (например, AVC / H.264), аудиокодек (AAC и т.п.), частота кадров, разрешение. Для склейки без перекодирования в VirtualDub2 эти параметры (хотя бы кодеки, разрешение, FPS и аудио-частота) должны совпадать у обоих файлов, иначе разлад звука и рассинхрон очень вероятны.
Устанавливаете MediaInfo, кликаете по MP4 правой кнопкой мыши → MediaInfo и смотрите: контейнер (обычно MP4), видеокодек (например, AVC / H.264), аудиокодек (AAC и т.п.), частота кадров, разрешение. Для склейки без перекодирования в VirtualDub2 эти параметры (хотя бы кодеки, разрешение, FPS и аудио-частота) должны совпадать у обоих файлов, иначе разлад звука и рассинхрон очень вероятны.


== Ffmpeg ==
<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">
<syntaxhighlight lang="PowerShell">
$env:PATH
$env:PATH
setx /M PATH "C:\Program Files\ffmpeg\bin;%PATH%"
setx /M PATH "C:\Program Files\ffmpeg\bin;%PATH%"
& "C:\Program Files\ffmpeg\bin\ffmpeg.exe" -version
ffmpeg -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>
</syntaxhighlight>


== PowerShell ==
[[FFmpeg]] пересоберёт VFR 30.291 FPS с «прыгающим» кадром в CFR 30.000 FPS, аудио будет подогнано под новую временную сетку, так что в этом файле звук и картинка останутся синхронными
===   Преобразовать файлы из Переговорки  ===
 
<syntaxhighlight lang="PowerShell">
<syntaxhighlight lang="PowerShell">
setx /M PATH "C:\Program Files\ffmpeg\bin;%PATH%"
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>
</syntaxhighlight>
Здесь оба входа уже с постоянным 30 fps, одинаковым размером 1920×1080 и аудио 44.1 kHz, так что при перекодировании FFmpeg соберёт единый непрерывный поток без скачка таймстампов и рассинхрона во второй части


== [[LosslessCut]] ==
== [[LosslessCut]] ==
osslessCut не «склеивает файлы», он работает с одним исходным файлом за раз.
В LosslessCut удаление лишних фрагментов делается путём выделения оставшихся хороших частей как сегментов — программа сохранит только их, а всё остальное автоматически вырежет без перекодирования.
В LosslessCut удаление лишних фрагментов делается путём выделения оставшихся хороших частей как сегментов — программа сохранит только их, а всё остальное автоматически вырежет без перекодирования.


Перетащите MP4 в программу. Переместите ползунок timeline на нужную точку (стрелки ← → или мышь). Нажмите I (начало сегмента) или O (конец) — например, I для обрезки начала. Нажмите Export (E), подтвердите — лишнее удалится.
Перетащите MP4 в программу. Переместите ползунок timeline на нужную точку (стрелки ← → или мышь). Нажмите I (начало сегмента) или O (конец) — например, I для обрезки начала. Нажмите Export (E), подтвердите — лишнее удалится.
Если проще выделить лишние: создайте сегменты на плохих частях (+ для нового), затем кликните символ (Yin Yang) — это инвертирует: программа вырежет выделенное и сохранит остальное.
Если проще выделить лишние: создайте сегменты на плохих частях (+ для нового), затем кликните символ (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) — это инвертирует: программа вырежет выделенное и сохранит остальное.