обрізати останній кадр під час перетворення одного зображення + звукової доріжки у відео у ffmpeg


1

завдяки відповідям на це питання суперпользователя Об'єднайте одне зображення + один аудіофайл, щоб зробити одне відео за допомогою FFmpeg, я зміг створити відео з одного зображення та аудіодоріжки.

я використав код PJ Brunets:

ffmpeg -r 1 -loop 1 -i 00.png -i 00.wav -acodec copy -r 1 -shortest 00.avi

це працює чудово, але я помітив, що тривалість створеного відео більше, ніж оригінальна звукова доріжка. у моєму випадку звук становить 36,61 секунди, а отримане відео - 38 секунд.

Я думаю, що проблема пов'язана з низькою частотою кадрів, тому я підвищив частоту кадрів з 1 кадрів в секунду до 2 кадрів в секунду до 25 кадрів в секунду і порівняв результати: з більш високою частотою кадрів ви отримуєте більшу точність за тривалістю.

тепер моє запитання: чи є спосіб все-таки використовувати 1 кадр в секунду, але обрізати останній кадр, коли звук закінчується? таким чином ви могли б досягти швидшого часу кодування, не втрачаючи початкової довжини.


AFAIK, неможливо для AVI. AVI не зберігають PTS, тому тривалість кожного кадру є взаємною частотою кадрів, тому тривалість вашої кількості визначається кількісно відповідно до цього значення.
Gyan

Чи є інший контейнер на зразок avi, який може зберігати WAV без втрат?
stefano

MOV, MKV, NUT ..
Gyan

mov & mkv менш точні, ніж avi (40-41s). горіх - 37, але youtube не прийнятий. я повинен випустити багато + 1 год довгих треків та інших одиночних треків, які повинні слідувати один одному безшовно, як у поєднанні. Я прийшов до висновку використовувати avi 1fps (з помилкою + 1,5s) для довгих треків та avi 2fps (+ 1s) для одиночних треків. 10 кадрів в секунду (+ 0,2 с) або 25 кадрів в секунду (майже точно) краще для безперервного переходу, але зображення стає блокуючим після 4 кадрів в секунду і вище. якщо я виконую ту саму роботу із зображеннями Sony Vegas, вони не стають блокадними, але для кодування та мінімуму потрібно набагато більше часу. частота кадрів - 12 кадрів в секунду.
стефано

Якщо вам потрібно точно додати кілька аудіо / відео сегментів, використовуйте фільтр concat. Він повинен працювати з 1 кадром в секунду, але в будь-якому випадку, з кодеком libx264 і 24 кадрів в секунду, він буде працювати.
Gyan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.