ffmpeg для android, не хватает памяти при декодировании поверните файл mp4 с помощью openh264 - PullRequest
0 голосов
/ 26 октября 2018

Версия

  • ffmpeg: 4.0.2
  • openh264: 1.8.0

Проблема

Я пытаюсь обрезать файл .mp4, в котором metadata info содержит информацию о повороте, но мне не удалось получить информацию об ошибке.

Информация о файловом потоке:

  Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2018-10-09T09:40:53.000000Z
    location        : +39.8983+116.4145/
    location-eng    : +39.8983+116.4145/
    com.android.version: 6.0
  Duration: 00:00:10.56, start: 0.000000, bitrate: 8671 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 8563 kb/s, SAR 1:1 DAR 16:9, 30.01 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      rotate          : 180
      creation_time   : 2018-10-09T09:40:53.000000Z
      handler_name    : VideoHandle
    Side data:
      displaymatrix: rotation of -180.00 degrees
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2018-10-09T09:40:53.000000Z
      handler_name    : SoundHandle

ffmpeg cmd

ffmpeg -y -i 1.mp4 -threads 4 -b:v 2000k -vcodec libopenh264 -acodec copy -ss 0 -t 3 -f mp4 -movflags faststart -strict -2 ./output.mp4

результат * * тысяча двадцать-одна Error reinitializing filters! Failed to inject frame into filter network: Out of memory Error while processing the decoded data for stream #0:0 Затем я нашел ответ: ffmpeg-for-android-out-of-memory , после того как я добавил команду -noautorotate в свой cmd, видео обрезается успешно. Если я использую -vcodec copy вместо -vcodec libopenh264, результат также будет в порядке, мне интересно, есть ли ошибка при декодировании libopenh264 с помощью функции автоответа ffmpeg. Я стираю информацию о повороте видео из метаданных с помощью команды -metadata:s:v:0, новое видео можно успешно обрезать с помощью cmd origin: (

1 Ответ

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

Сообщение об ошибке вводит в заблуждение. Из-за использования --disable-filters вам необходимо вручную включить фильтры hflip / vflip:

--enable-filter=aresample,crop,hflip,scale,transpose,vflip

В этом случае будут автоматически включены некоторые фильтры (например, фильтр формата).

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