2015-12-03 22 views
0

我試圖創建圖像縮略圖,以保持原始的方面,但如果尺寸太大,則裁剪它。 發現了一個可能的代碼片斷hereffmpeg調整大小保持方面 - 未找到過濾器

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 -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 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,而不是libav默認的東西。任何幫助表示讚賞。

+0

最新的ffmpeg你需要顯示完整的從每個命令的控制檯輸出,而不僅僅是摘錄。 – LordNeckbeard

+0

好的謝謝。增加了完整的輸出以用於逐字和逃避命令。 – 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

有一個腳本編譯在Ubuntu 12.04或14.04 HERE

+0

該鏈接是[FFmpeg Wiki:Ubuntu編譯指南](http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu)陳舊過時的翻版。 – LordNeckbeard

+0

它很簡單,並且可以運行,並且在12.04上完全用一個./command工作。振作起來。 – paul

+0

它安裝你不需要的東西,省略一些重要的編碼器,並污染與回購存在衝突的軟件包,但你當然可以隨意遵循過時的,無人管理的隨機指南。 – LordNeckbeard

相關問題