Я пытаюсь наложить видео на изображение, используя команду ниже.
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!
Что именно вы пробовали? Добавьте фильтр масштаба, кадрирования и / или прокладки, чтобы высота делилась на 2. См. Первую ссылку для той же ситуации, что и ваша.
@LordNeckbeard зависит от платформы ffmpeg? У меня есть команда, которая успешно работает в Android, но не работает с активом FFMPEG для единства.
Это не зависит от платформы, но это похоже на другую проблему, чем то, что пытается решить этот конкретный вопрос. Я видел ваши вопросы относительно ffmpeg в Unity, но ничего не знаю о Unity. Вероятно, это проблема с кавычками или экранированием специальных символов.
Потому что прямо сейчас я пробовал команду, которая отлично работает с ffmpeg android sdk, но не работает с ffmpeg unity sdk
Я знаю. Вы уже упомянули об этом.
String[]sepCmd=new String[]{"-i",overlayUri,"-i",uri,"-filter_complex","[1:v][0:v]scale2ref[ua][b];[ua]setsar=1,format=yuva444p,colorchannelmixer=aa=0.5[u];[b][u]overlay",outputPath};. Смотрите команду. Когда я запускаю это в единстве, он говорит, что не могу найти подходящий формат вывода. Единственная разница здесь в Android, который я тестирую на мобильных устройствах, и в Unity на настольных компьютерах.
Он отличается от того, который я упомянул в вопросе, так как после многократных испытаний мне удалось заставить его работать в Android, но не в единстве.
Это не та же проблема? Этот конкретный вопрос на этой странице касается height not divisible by 2. Давайте ограничим это обсуждение этой проблемой.
О, вы отредактировали его, поэтому теперь это другая проблема, как и раньше, и она перекрестная. Пожалуйста, не задавайте один и тот же вопрос на нескольких сайтах Stack Exchange. Это не рекомендуется, так как это ослабляет усилия, тратит время и вызывает путаницу (как показано здесь).
Позвольте нам продолжить обсуждение в чате.
@LordNeckbeard, я пробовал эти ссылки, но мне не помогает