FFmpeg видео фильтры поврежденный файл mp4 - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь добавить визуальные фильтры к mp4 файлам, используя FFmpeg.

Я пробовал много фильтров, но 4 из них сработали, из которых только 1 работал отлично. Я использую их в Android application, но я попробовал те же командные строки на windows cmd, используя FFmpeg, и результат тот же. С 3 фильтрами .mp4 не может быть воспроизведено многими игроками, а также Androids mediaplayer. Я все еще могу воспроизводить «испорченные» файлы на VLC и проигрывателях, которые имеют много кодеков, но мне нужно, чтобы они отлично работали.

Единственный фильтр, работающий по назначению, это Black and White, а команда (пробовала и -vf, и -filter_complex):

-i origin.mp4 -filter_complex hue=s=0 blackWhite.mp4

Остальные 3: Sepia, Vintage и Negative

"colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131",  "curves=vintage", "curves=negative"

Поскольку я не могу загрузить видеофайлы сюда, я добавил ссылку на 3 файла: оригинальный видеофайл, черно-белый отфильтрованный файл (работает), винтажный файл (не работает).

Dropbox - ссылка на видеофайлы

1 Ответ

0 голосов
/ 12 сентября 2018

Фильтры кривых и colorchannelmixer работают только с пикселями RGB, поэтому FFmpeg заранее конвертирует видео, если это необходимо.

При сохранении в MP4 с использованием обычного кодера H.264, ffmpeg преобразует в цветовую кодировку YUV, но выбирает формат пикселей с наивысшей точностью, который для источника RGB - YUV 4: 4: 4. Этот формат не совместим с большинством игроков. Решение состоит в том, чтобы вручную форсировать выход YUV 4: 2: 0. Добавьте -pix_fmt yuv420p непосредственно перед именем выходного файла.

...