Ffmpeg конвертирует видео двойного размера оригинального видео со второй частью без звука - PullRequest
0 голосов
/ 30 сентября 2018

Я конвертирую некоторые видео с помощью команды ниже в ffmpeg

ffmpeg -y -i source.mp4 -c:a libfdk_aac -ac 2 -ab 128k -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -crf 18 -b:v 4000k -maxrate 4000k -bufsize 4000k -vf "scale=-1:1080" destination_1080.mp4

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

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я опубликую новый ответ, а не отредактирую другой, так как мой первый ответ уже довольно длинный.

Во-первых, я бы попытался разобраться в проблеме, начав с простого и работающегоМой путь к проблемному файлу / файлам.

Просто скопируйте источник в место назначения:

ffmpeg -i source.mp4 -c copy destination_1.mp4

Выход соответствует ожидаемому?Есть ошибки?Что отображал FFMPEG?

Копировать видео - кодировать аудио:

ffmpeg -i source.mp4 -c:v copy -c:a libfdk_aac -ac 2 -ab 128k destination_2.mp4

Выход соответствует ожидаемому?Есть ошибки?Что отображает FFMPEG?

Кодировать видео (просто) - кодировать аудио:

ffmpeg -i source.mp4 -c:v libx264 -b:v 4000k -maxrate 4000k -bufsize 4000k -c:a libfdk_aac -ac 2 -ab 128k destination_3.mp4

Выходной сигнал соответствует ожидаемому?Есть ошибки?Что отображает FFMPEG?

Кодировать видео (+ опции) - кодировать аудио:

ffmpeg -i source.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 4000k -maxrate 4000k -bufsize 4000k -c:a libfdk_aac -ac 2 -ab 128k destination_4.mp4

Выход соответствует ожидаемому?Есть ошибки?Что отображает FFMPEG?

Кодировать видео (+ фильтр) - кодировать аудио:

ffmpeg -i source.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 4000k -maxrate 4000k -bufsize 4000k -filter:v "scale=1920:-2" -c:a libfdk_aac -ac 2 -ab 128k destination_5.mp4

Выход соответствует ожидаемому?Есть ошибки?Что отображал FFMPEG?

Если у вас все еще есть проблемы, будет трудно исправить или сделать дальнейшие предложения, пока мы не увидим вывод из FFMPEG.

Помните, не используйте -crf 18 -b:v 4000kв той же команде, один или другой, cfr ИЛИ bitrate, но не оба.

Удачи ...

0 голосов
/ 01 октября 2018

Во-первых, в вашей команде есть недостаток.Вы не можете использовать: -crf 18 -b:v 4000k вместе, использовать одну или другую.

Я не знаю, какую версию FFMPEG вы используете, но с включением: libfdk_aac это либо старая версияили тот, который вы самостоятельно скомпилировали.Если я правильно помню, аудиокодек был извлечен из общих сборок после того, как стандартный кодировщик aac созрел.(Я могу ошибаться в этом)

Первое, что я бы попробовал, это немного сузить круг.Я полагаю, что из командной строки у вас есть ПК с Windows, загрузите последнюю версию FFMPEG с ЗДЕСЬ

Вот несколько примеров, которые можно попробовать: (при необходимости измените аудиокодек)

BITRATE

ffmpeg -y -i source.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 4000k -maxrate 4000k -bufsize 4000k -vf "scale=-1:1080" -c:a aac -ac 2 -ab 128k destination_1080_bit.mp4

CRF

ffmpeg -y -i source.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -crf 18 -maxrate 4000k -bufsize 4000k -vf "scale=-1:1080" -c:a aac -ac 2 -ab 128k destination_1080_crf18.mp4

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

Ваш выходной размер будет больше, если используемый битрейт выше исходного.Увеличьте значение crf или уменьшите значение bitrate и проведите несколько тестов.

Может также быть некоторая проблема с FPS, когда видео и аудио не совпадают, может быть, один думает, что другой в двойном кадретемп.(это полное предположение)

Я бы сначала попробовал вышеописанное и посмотрел, как вы продвигаетесь, прежде чем копать глубже.

Дайте нам знать, как вы продвигаетесь.

...