Я обрабатываю загруженные пользователем видео на веб-сервере CentOS с помощью ffmpeg. Мне нужно преобразовать каждое видео в стандартный размер и формат, а затем извлечь 30-секундный образец клипа из каждого видео. Я хочу использовать флаг «-vcodec copy» в команде извлечения, чтобы избежать повторного кодирования.
Эта команда работает для моего первоначального преобразования:
ffmpeg -i uploaded.mov -f mp4 -vcodec libx264 -vpre medium -acodec libfaac -r 15 -b 360k -ab 48k -ar 22050 -s 480x320 formatted.mp4
И это иногда работает для извлечения:
ffmpeg -i formatted.mp4 -vcodec copy -acodec copy -ss 0 -t 30 formatted_sample.mp4
Однако, когда я запускаю команду извлечения для некоторых видео, извлеченный образец клипа начинается с нескольких секунд пустого видео. Звук начинается сразу же, но видео не начинается в течение 3-6 секунд.
Чтобы продемонстрировать проблему, я загрузил два видеоклипа и выполнил над ними указанные выше команды. Я создал первый клип в Final Cut Express и закодировал его с помощью Handbrake перед загрузкой на веб-сервер:
1a) загруженный клип
1б) конвертируется с помощью первой команды
1c) извлекается второй командой, пропуская первые шесть секунд
Для сравнения, этот второй клип взят с сайта Apple и не показывает проблему:
2а) загруженный клип
2b) конвертируется с помощью первой команды
2c) извлекается второй командой, без проблем
Кто-нибудь может увидеть, что отличает два исходных клипа? И если да, могу ли я что-то сделать в моей команде преобразования, чтобы при запуске команды извлечения клип настраивался так, чтобы избежать пропущенного видео?
Кстати, у меня изначально была проблема с ffmpeg 0.6.1, установленным с yum, но я обновился до последней версии git, и проблема остается.