2015-12-03 2 views
0

Я пытаюсь создать эскизы изображений, которые поддерживают аспект оригинала, но обрезают его, если размеры слишком далеко. нашли вероятный фрагмент кода hereffmpeg resize сохранить аспект - фильтр не найден

ffmpeg -i Einstein_500_459.jpg -vf scale="'if(gt(a,320/240),320,-1)':'if(gt(a,320/240),-1,240)'" Einstein_320x240_fit.png 

, но не может получить FFmpeg для его выполнения. как он генерирует ошибку в терминале:

ffmpeg -i Einstein_500_459.jpg -vf scale="'if(gt(a,320/240),320,-1)':'if(gt(a,320/240),-1,240)'" Einstein_320x240_fit.png 
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Apr 26 2014 09:49:36 with gcc 4.6.3 
    configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static 
    libavutil  51. 35.100/51. 35.100 
    libavcodec  53. 61.100/53. 61.100 
    libavformat 53. 32.100/53. 32.100 
    libavdevice 53. 4.100/53. 4.100 
    libavfilter  2. 61.100/2. 61.100 
    libswscale  2. 1.100/2. 1.100 
    libswresample 0. 6.100/0. 6.100 
    libpostproc 52. 0.100/52. 0.100 
Input #0, image2, from 'Einstein_500_459.jpg': 
    Duration: 00:00:00.04, start: 0.000000, bitrate: N/A 
    Stream #0:0: Video: mjpeg, yuvj444p, 500x459 [SAR 300:300 DAR 500:459], 25 tbr, 25 tbn, 25 tbc 
Incompatible pixel format 'yuvj444p' for codec 'png', auto-selecting format 'rgb24' 
[buffer @ 0x236d720] w:500 h:459 pixfmt:yuvj444p tb:1/1000000 sar:300/300 sws_param: 
[scale @ 0x235d5e0] [Eval @ 0x7fffcb68f270] Missing ')' or too many args in 'if(gt(a,320/240),320,-1)' 
[scale @ 0x235d5e0] [Eval @ 0x7fffcb68f270] Missing ')' or too many args in 'if(gt(a,320/240),-1,240)' 
Error when evaluating the expression 'if(gt(a,320/240),-1,240)'. 
Maybe the expression for out_w:'if(gt(a,320/240),320,-1)' or for out_h:'if(gt(a,320/240),-1,240)' is self-referencing. 
Error opening filters! 

после побега одиночных кавычек

ffmpeg -i Einstein_500_459.jpg -vf scale="\'if(gt(a,320/240),320,-1)\':\'if(gt(a,320/240),-1,240)\'" Einstein_320x240_fit.png 

он генерирует ошибка

ffmpeg -i Einstein_500_459.jpg -vf scale="\'if(gt(a,320/240),320,-1)\':\'if(gt(a,320/240),-1,240)\'" Einstein_320x240_fit.png 
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Apr 26 2014 09:49:36 with gcc 4.6.3 
    configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static 
    libavutil  51. 35.100/51. 35.100 
    libavcodec  53. 61.100/53. 61.100 
    libavformat 53. 32.100/53. 32.100 
    libavdevice 53. 4.100/53. 4.100 
    libavfilter  2. 61.100/2. 61.100 
    libswscale  2. 1.100/2. 1.100 
    libswresample 0. 6.100/0. 6.100 
    libpostproc 52. 0.100/52. 0.100 
Input #0, image2, from 'Einstein_500_459.jpg': 
    Duration: 00:00:00.04, start: 0.000000, bitrate: N/A 
    Stream #0:0: Video: mjpeg, yuvj444p, 500x459 [SAR 300:300 DAR 500:459], 25 tbr, 25 tbn, 25 tbc 
Incompatible pixel format 'yuvj444p' for codec 'png', auto-selecting format 'rgb24' 
[buffer @ 0x1897720] w:500 h:459 pixfmt:yuvj444p tb:1/1000000 sar:300/300 sws_param: 
No such filter: '320/240)' 
Error opening filters! 

это просто проблема синтаксиса? или у меня ffmpeg что-то не хватает? или что? это ubuntu 12.04 с тем, что я считаю полной установкой ffmpeg, а не ливаром по умолчанию. любая помощь приветствуется.

+0

Вы должны показать полный консоль выводится из каждой команды, а не только отрывок. – LordNeckbeard

+0

ОК спасибо. добавлен полный вывод для команды verbatim и escaped. – paul

+0

Пожалуйста, отредактируйте свое сообщение и правильно отформатируйте вывод консоли, чтобы сделать его более удобным для чтения. Выделите его и нажмите кнопку кода (выглядит как '{}') или выделите его и нажмите ctrl + k. – LordNeckbeard

ответ

0

решение заключается в установке последней версии ffmpeg, для всех, кто имеет эту проблему.

ffmpeg -i Einstein_500_459.jpg -vf scale="'if(gt(a,320/240),320,-1)':'if(gt(a,320/240),-1,240)'" Einstein_320x240_fit.png 

этот код работал без проблем на Ubuntu 12.04 - выпуск FFmpeg: 2.8.3

есть скрипт для компиляции последней FFmpeg на Ubuntu 12.04 или 14.04 HERE

+0

Эта ссылка - старый, устаревший ripoff [FFmpeg Wiki: Ubuntu Compile Guide] (http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu). – LordNeckbeard

+0

он прост и готов к запуску, и отлично работал с одним ./command 12.04. взбодритесь. – paul

+0

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

Смежные вопросы