Ошибка при открытии потока кодировщика в ffmpeg android

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

String[]sepCmd=new String[]{"-loop","1","-i",uri,"-i",overlayUri,"-filter_complex","[1:v]colorkey=0x000000:0.5:0.5[ckout];[0:v][ckout]overlay[out]","-map","[out]","-acodec","libfaac","-c:a", "copy",outputPath};

Когда я запускаю указанную выше команду, я получаю сообщение об ошибке, как показано ниже.

 Input #0, png_pipe, from '/storage/emulated/0/snowflake.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, gray(pc), 304x345 [SAR 11811:11811 DAR 304:345], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/FilterVideos/vintage1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
  Duration: 00:00:05.08, start: 0.000000, bitrate: 447 kb/s
    Stream #1:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 306 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #1:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 (png) -> overlay:main
  Stream #1:0 (h264) -> colorkey
  overlay -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
[swscaler @ 0xee29d000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0xee2a8000] No accelerated colorspace conversion found from yuv420p to argb.
[libx264 @ 0xf125ba00] height not divisible by 2 (304x345)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

@LordNeckbeard, я пробовал эти ссылки, но мне не помогает

Vivek Mishra 09.10.2018 19:14

Что именно вы пробовали? Добавьте фильтр масштаба, кадрирования и / или прокладки, чтобы высота делилась на 2. См. Первую ссылку для той же ситуации, что и ваша.

llogan 09.10.2018 19:15

@LordNeckbeard зависит от платформы ffmpeg? У меня есть команда, которая успешно работает в Android, но не работает с активом FFMPEG для единства.

Vivek Mishra 09.10.2018 19:19

Это не зависит от платформы, но это похоже на другую проблему, чем то, что пытается решить этот конкретный вопрос. Я видел ваши вопросы относительно ffmpeg в Unity, но ничего не знаю о Unity. Вероятно, это проблема с кавычками или экранированием специальных символов.

llogan 09.10.2018 19:22

Потому что прямо сейчас я пробовал команду, которая отлично работает с ffmpeg android sdk, но не работает с ffmpeg unity sdk

Vivek Mishra 09.10.2018 19:25

Я знаю. Вы уже упомянули об этом.

llogan 09.10.2018 19:28
String[]sepCmd=new String[]{"-i",overlayUri,"-i",uri,"-filter_complex","[1:v][0‌​:v]scale2ref[ua][b];‌​[ua]setsar=1,format=‌​yuva444p,colorchanne‌​lmixer=aa=0.5[u];[b]‌​[u]overlay",outputPa‌​th};. Смотрите команду. Когда я запускаю это в единстве, он говорит, что не могу найти подходящий формат вывода. Единственная разница здесь в Android, который я тестирую на мобильных устройствах, и в Unity на настольных компьютерах.
Vivek Mishra 09.10.2018 19:30

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

Vivek Mishra 09.10.2018 19:30

Это не та же проблема? Этот конкретный вопрос на этой странице касается height not divisible by 2. Давайте ограничим это обсуждение этой проблемой.

llogan 09.10.2018 19:32

О, вы отредактировали его, поэтому теперь это другая проблема, как и раньше, и она перекрестная. Пожалуйста, не задавайте один и тот же вопрос на нескольких сайтах Stack Exchange. Это не рекомендуется, так как это ослабляет усилия, тратит время и вызывает путаницу (как показано здесь).

llogan 09.10.2018 19:39

Позвольте нам продолжить обсуждение в чате.

Vivek Mishra 09.10.2018 19:45
1
11
201
0

Другие вопросы по теме