我試圖創建圖像縮略圖,以保持原始的方面,但如果尺寸太大,則裁剪它。 發現了一個可能的代碼片斷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默認的東西。任何幫助表示讚賞。
最新的ffmpeg你需要顯示完整的從每個命令的控制檯輸出,而不僅僅是摘錄。 – LordNeckbeard
好的謝謝。增加了完整的輸出以用於逐字和逃避命令。 – paul
請編輯您的文章並正確格式化控制檯輸出以便於閱讀。突出顯示它並按代碼按鈕(看起來像'{}'),或突出顯示它並按下ctrl + k。 – LordNeckbeard