ffmpeg перекодировала ошибку mp4 файлов на мобильные телефоны в Video JS - PullRequest
0 голосов
/ 10 января 2019

Мы конвертируем серьезно старые файлы .flv в MP4 с помощью FFMPEG. Это по крайней мере 10 лет. Тогда все они были отрисованы в ранних версиях Adobe Premiere.

В настольных браузерах все файлы работают и передаются в потоковом режиме (... их просмотр напоминает возвращение в прошлое!)

Но при запросе видео на тех же страницах на мобильных устройствах (android и ios) Video JS даже не отображается. Возможно, кодек слишком стар, но мне было интересно, может ли быть другая причина при преобразовании их с помощью этой строки:

for i in *.flv; do ffmpeg -i "$i" "${i%.*}.mp4"; done

Если нет, возможно ли это обнаружить в Video JS, чтобы мы могли показать объявление о том, что видео видно только на настольных компьютерах?

Надеюсь, у кого-то здесь есть это знание!

добавлено по запросу llogan

ffmpeg version N-78967-gbaec6d8 Copyright (c) 2000-2016 the FFmpeg developers   built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)   configuration: --prefix=/root/ffmpeg_build
--extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265   libavutil      55. 19.100 / 55. 19.100   libavcodec     57. 28.100 / 57. 28.100   libavformat    57. 28.100 / 57. 28.100   libavdevice    57.  0.101 / 57.  0.101   libavfilter     6. 39.102 / 
6. 39.102   libswscale      4.  0.100 /  4.  0.100   libswresample   2.  0.101 /  2.  0.101   libpostproc    54.  0.100 / 54.  0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a_4293_06.mp4':   Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.28.100   Duration: 00:01:40.10, start: 0.023220, bitrate: 492 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240, 376 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 123 kb/s (default)
    Metadata:
      handler_name    : SoundHandler At least one output file must be specified

1 Ответ

0 голосов
/ 10 января 2019

Благодаря комментариям @ llogan я могу ответить на этот вопрос сам.

Сначала я обновил ffmpeg до последней версии, а затем провел некоторые исследования -movflags и + faststart .

Я нашел статью 2015 года с отличной информацией о том, как конвертировать .flv в .mp4 (https://addpipe.com/blog/flv-to-mp4/)

Итак, чтобы новые файлы .mp4 были совместимы с мобильными устройствами, вам нужно добавить профиль и уровень, например:

в пакетном преобразовании :

for i in *.flv; do ffmpeg -y  -i "$i" -movflags +faststart -profile:v baseline -level 3.0 "${i%.*}.mp4"; done 

и для одного файла :

ffmpeg -i filename.flv -movflags +faststart -profile:v baseline -level 3.0 filename.mp4

И тогда терминал показывает эту строку при конвертации:

Начало второго прохода: перемещение атома moov в начало файл

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...