ffmpeg mp4-видео не воспроизводится на html5-плеере в браузере (поврежденный формат)

0

Я выполняю следующую команду для вставки водяного знака на видео и вывода в виде формата mp4, но этот формат не воспроизводится в браузере с помощью html5-видеоплеера.

$video_url = '../../../uploads/myvideo.mp4';
$watermarked = '../../../uploads/watermarked_video.mp4';
exec("ffmpeg -i $video_url -vf \"movie='sos.png', crop=iw:ih:0:0:dar [img]; [in] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -vcodec mpeg4 -f avi $watermarked");  //creating water marked video

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

есть ли проблема синтаксиса?

  • 0
    Что с видео с водяными знаками? Я видел 3 квеста в течение 1 минуты! В любом случае, ваш веб-плеер поддерживает ffmpeg?
  • 0
    нет, я создаю MP4 видео с водяным знаком на нем. но не играю с html5 видеоплеером в браузере
Показать ещё 2 комментария
Теги:
ffmpeg
html5-video
codec

1 ответ

1
Лучший ответ

Формат вывода не совсем прав. Здесь есть два фактора:

  1. "Формат контейнера" или "формат файла", который является способом компоновки всего файла (например, AVI, MOV/QuickTime, WebM, Ogg)
  2. "Кодек", который является алгоритмом, используемым для сжатия и распаковки видео и аудио данных в контейнере. Большинство файлов будут иметь два кодека: один для аудио (например, AAC, Vorbis, MP3, Opus) и один для видео (например, H.264, VP8, Theora).

ffmpeg поддерживает чтение и запись множества различных форматов и кодеков, а также VLC-плеер. QuickTime тоже, но не так много. Браузеры, однако, гораздо более придирчивы. Вы сохраняете файл в формате контейнера "AVI", который браузеры не поддерживают. И вы, вероятно, должны использовать libx264 в качестве кодека, который выведет видео H.264 и будет немного более широко использоваться и надежен, чем mpeg4 который выведет видео MPEG-4 Part 2.

Попробуй это:

$video_url = '../../../uploads/myvideo.mp4';
$watermarked = '../../../uploads/watermarked_video.mp4';
exec("ffmpeg -i $video_url -i sos.png -filter_complex \"[1:v]crop=iw:ih:0:0:dar [img]; [0:v] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -map \"[out]\" -map 0:a -vcodec libx264 -acodec copy $watermarked");  //creating water marked video
  • Я удалил параметр -f потому что ffmpeg может вывести формат из расширения выходного файла.

  • Фильтр фильма был удален из примера, потому что он не нужен.

  • -vf был заменен в этом примере на -filter_complex. См. Простую и сложную фильтрацию, чтобы узнать, каковы различия.

  • Аудио в этом примере будет копироваться с -acodec copy вместо повторного кодирования.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню