සාධාරණ ගුණාත්මකභාවයකින් යුතුව ffmpeg භාවිතා කරමින් වීඩියෝවක් GIF බවට පරිවර්තනය කරන්නේ කෙසේද?


350

මම වීඩියෝවක් GIF ගොනුවකට පරිවර්තනය කරන්නේ ffmpeg:

ffmpeg -i input.flv -ss 00:00:00.000 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

එය විශිෂ්ට ලෙස ක්‍රියා කරයි, නමුත් ප්‍රතිදාන gif ගොනුව ඉතා අඩු ගුණාත්මකභාවයකින් යුක්ත වේ.

පරිවර්තනය කළ gif වල ගුණාත්මකභාවය වැඩි දියුණු කරන්නේ කෙසේද?

Answers:


533

ffmpeg උදාහරණයක්

Ffmpeg වෙතින් GIF ප්‍රතිදානය
183k

ffmpegඋසස් තත්ත්වයේ GIF ප්‍රතිදානය කළ හැකිය. ඔබ ආරම්භ කිරීමට පෙර සෑම විටම නවතම අනුවාදයක් භාවිතා කිරීම රෙකමදාරු කරනු ලැබේ: බාගත කිරීම හෝ සම්පාදනය කිරීම .

ffmpeg -ss 30 -t 3 -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
  • මෙම උදාහරණය මඟින් -ss 30ආදානයේ පළමු තත්පර 30 ( ) මඟ හැර තත්පර 3 ක ප්‍රතිදානයක් ( -t 3) නිර්මාණය කරයි .
  • fps පෙරණය රාමු අනුපාතය සකසයි. උදාහරණයට තත්පරයට රාමු 10 ක අනුපාතයක් භාවිතා වේ.
  • පරිමාණ පෙරණය මඟින් ප්‍රතිදානය පළල පික්සල් 320 දක්වා ප්‍රමාණයට වෙනස් කර දර්ශන අනුපාතය ආරක්ෂා කරමින් ස්වයංක්‍රීයව උස තීරණය කරයි. මෙම උදාහරණයේ දී ලැන්කෝස් පරිමාණ ඇල්ගොරිතම භාවිතා වේ.
  • palettegen සහ paletteuse පෙරහන් මඟින් ඔබේ ආදානයෙන් ජනනය කරන ලද අභිරුචි පලත් ජනනය කර භාවිතා කරනු ඇත. මෙම පෙරහන් වලට බොහෝ විකල්ප ඇත, එබැවින් පවතින සියලු විකල්ප සහ අගයන් ලැයිස්තුවක් සඳහා සබැඳි වෙත යොමු වන්න. ද දකින උසස් විකල්ප පහත කොටසෙහි.
  • භේදය පෙරණය මඟින් සෑම දෙයක්ම එකම විධානයකින් සිදු කිරීමට ඉඩ ලබා දෙන අතර තාවකාලික PNG ගොනුවක් සෑදීමෙන් වළක්වයි.
  • -loopප්‍රතිදාන විකල්පය සමඟ ලූප පාලනය කරන්න නමුත් අගයන් අවුල් සහගතය. ක අගය 0අනන්ත වැලැකුමට වන අතර, -1කිසිදු වැලැකුමට, සහ මෙය 1කැමැත්ත පුඩුවක් තේරුම දෙවරක් ඉටු කරනු ඇත වරක්. එබැවින් 10 ක අගයක් GIF 11 වතාවක් වාදනය කිරීමට හේතු වේ.

ඉහල විකල්ප

මෙම palettegen හා paletteuse පෙරහන් බොහෝ අමතර විකල්ප තියෙනවා. වැදගත්ම දේ:

  • stats_mode(palettegen). සාමාන්‍ය පින්තූරය ( fullපෙරනිමිය) වෙත අවධානය යොමු කිරීමට ඔබට පෙරහන් බල කළ හැකිය , චලනය වන කොටස් ( diff) හෝ එක් එක් තනි රාමුව ( single). උදාහරණයක් ලෙස, එක් එක් රාමු භාවිතය සඳහා පලත් ජනනය කිරීම සඳහා palettegen=stats_mode=single& paletteuse=new=1.

  • dither(paletteuse). වියළන ඇල්ගොරිතම තෝරන්න. ප්‍රධාන වර්ග තුනක් ඇත: නිර්ණායක ( bayer), දෝෂ විසරණය (පෙරනිමිය ඇතුළුව අනෙක් සියල්ලම sierra2_4a), සහ කිසිවක් නැත. ඔබේ ජීඅයිඑෆ් විශේෂිත වියළීමේ ඇල්ගොරිතමයක් භාවිතා කිරීම වඩා හොඳ පෙනුමක් හෝ කිසිසේත් වියැකී නොයනු ඇත. ඔබට උත්සාහ කිරීමට අවශ්‍ය නම් විකල්පය ද bayerපරීක්ෂා කිරීමට වග බලා ගන්න bayer_scale.

පැහැදිලි කිරීම්, නිදර්ශන රූප සහ උසස් භාවිතය සඳහා වඩාත් සවිස්තරාත්මක තොරතුරු සඳහා FFmpeg සමඟ උසස් තත්ත්වයේ GIF බලන්න .

පවතින සියලුම විකල්ප සහ අගයන් සඳහා palettegen සහ paletteuse ප්‍රලේඛනය බලන්න .


ImageMagick convertඋදාහරණය

Ffmpeg වෙතින් GIF ප්‍රතිදානය
227k

තවත් විධාන රේඛා ක්‍රමයක් වන්නේ ImageMagick සිට (හෝ ) දක්වා නල ffmpegකිරීමයි .convertmagick

 ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v pam -f image2pipe - | convert -delay 10 - -loop 0 -layers optimize output.gif

ffmpeg විකල්ප:

  • -vf "fps=10,scale=320:-1:flags=lanczos"fps සහ පරිමාණ පෙරහන් භාවිතා කරන පෙරහනක් . fps මඟින් රාමු අනුපාතය 10 ක් ලෙසත්, පරිමාණය විශාලත්වය පික්සල් 320 ක් ලෙසත්, උස ස්වයංක්‍රීයව තීරණය වන අතර දර්ශන අනුපාතය ආරක්ෂා කරන අගයක් භාවිතා කරයි. මෙම උදාහරණයේ දී ලැන්කෝස් පරිමාණ ඇල්ගොරිතම භාවිතා වේ.

  • -c:v pamපෑම් රූප කේතන ක්‍රමය තෝරයි. උදාහරණය මඟින් PAM (Portable AnyMap) රූප ආකෘතිය ප්‍රතිදානය කරයි, එය විනිවිදභාවයට (ඇල්ෆා) සහය දක්වන සරල, අලාභ රහිත RGB ආකෘතියකි convert. එය පීඑන්ජී වලට වඩා කේතනය කිරීම වේගවත් ය.

  • -f image2pipeimage2pipe muxer තෝරා ගනී, මන්ද පයිප්පයකට ප්‍රතිදානය කිරීමේදී ffmpegකුමන muxer භාවිතා කළ යුතු දැයි කිව යුතු බැවිනි.

convert විකල්ප:

  • -delayබලන්න රාමු ෙව්ගය කිරීම , පහත කොටසෙහි.

  • -loop 0 අසීමිත පුඩුවක් සාදයි.

  • -layers optimizeපොදු අරමුණු සඳහා GIF ප්‍රශස්තකරණය සක්‍රීය කරයි. බලන්න ImageMagick සජීවනය සුසර වැඩි විස්තර සඳහා. එය කුඩා නිමැවුමක් ලබා දෙන බවට සහතිකයක් නැත, එබැවින් එය උත්සාහ නොකර -layers optimizeප්‍රති .ල සංසන්දනය කිරීම වටී .

රාමු අනුපාතය සැකසීම

ඇතුළත සහ ඇතුළත fps ෆිල්ටරයේ සංයෝජනයක් සමඟ රාමු අනුපාතය සකසන්න . මෙය සංකීර්ණ විය හැක්කේ අමු රූප ප්‍රවාහයක් ලබා ගන්නා නිසා fps කිසිවක් ආරක්ෂා නොවන බැවිනි. දෙවනුව, අගය වේ කිනිතුල්ලන් (තත්පරයට කිනිතුල්ලන් 100 ඇත), නො තත්පරයට රාමු ය. උදාහරණයක් ලෙස, = 100 / 12.5 = 8 = සමඟ .ffmpeg-delayconvertconvert-delayconvertfps=12.5-delay 8

convert-delayමුළු සංඛ්‍යාවකට අගය වට කරයි , එබැවින් 8.4 ප්‍රති 8 ල 8 සහ 8.5 ප්‍රති 9 ල 9 වේ. මෙයින් effectively ලදායී ලෙස අදහස් කරන්නේ සියලු රාමු වලට වඩා ඒකාකාරී ප්‍රමාදයක් සැකසීමේදී සහය දක්වන්නේ සමහර රාමු අනුපාතයන්ට පමණි (එක් රාමුවකට නිශ්චිත ප්‍රමාදයක් නියම කළ හැකි නමුත් ඉන් ඔබ්බට ය මෙම පිළිතුර).

-delayප්‍රතිදාන විකල්පයක් ලෙස භාවිතා කරන්නේ නම් එය නොසලකා හරින බවක් පෙනේ, එබැවින් එය -උදාහරණයේ පෙන්වා ඇති ආකාරයට පෙර භාවිතා කළ යුතුය .

අවසාන වශයෙන්, බ්‍රව්සර් සහ රූප නරඹන්නන් අවම ප්‍රමාදයක් ක්‍රියාත්මක කළ -delayහැකි බැවින් ඔබගේ නොසලකා හැරිය හැක.

එක්සත් ජනපද මත්ස්‍ය හා වනජීවී සේවා ජාතික සංරක්ෂණ පුහුණු මධ්‍යස්ථානයේ වීඩියෝ අනුග්‍රහයෙනි.


4
උදාහරණ ප්‍රති results ල කිහිපයක් එක් කරන ලදි (තවමත් රාමු වුවද). මෙන්න, පළමු ගොනුව 4.1 MB වේ, දෙවැන්න 8 MB පමණ වේ.
slhck

3
OrdLordNeckbeard, ඔබ නියමයි! -vf scale=320:-1,format=rgb8,format=rgb24
බොහෝම

6
මාර්ගය වන විට, convertමම භාවිතා කළ PNG රාමු වලින් පරිවර්තනය කිරීමේ විධානය සඳහා convert -delay 5 -loop 0 -dither None -colors 80 "frames/ffout*.png" -fuzz "40%" -layers OptimizeFrame "output.gif", එය සමස්ත ගොනු ප්‍රමාණය මඳක් අඩු කරයි
විල්ෆ්

2
හරි, මම එය ලබා ගත්තා, මම භාවිතා කළා scale=0:-1, එබැවින් ඔබ පරිමාණය සැකසූ විට 0, එය වීඩියෝවෙන් පරිමාණය ගනී.
මවුසා ඇල්ෆේලි

2
මෙම ප්‍රශ්නෝත්තරය ස්ථිරවම සංකේතවත් කළ යුතුය (නැතහොත් දැනට "පින්" කර ඇත) මන්ද වසර සියයක් තුළ සිට සියලු සන්නිවේදනයන් මේමස් හරහා සිදු කරනු ඇත. මම හිතන්නේ මෙම තනතුරේ ක්‍රියාකාරිත්වය පමණක් එයට කථා කරයි.
ජොනතන් නියුෆෙල්ඩ්

90

ඔබ අතරමැදි රූපය ගොනු වළක්වා ගැනීමට කැමති නම්, LordNeckBeard විසින් සපයන ලද විධාන අතර නල කළ හැකි ffmpegගේ හා ImageMagick convertමැදි ගොනු අවශ්ය නිසා බව:

ffmpeg -i input.flv -vf scale=320:-1 -r 10 -f image2pipe -vcodec ppm - | convert -delay 5 -loop 0 - output.gif

මෙම -f image2pipeරූප බවට වීඩියෝ භේද කිරීම හා එය විය සුදුසු පරිදි සකස් කිරීමට ffmpeg කියයි සිදු නල, සහ -vcodec ppmආකෘතිය png නම්, එක්කෝ යම් හේතුවක් නිසා ppm (විය ප්රතිදානය ආකෘතිය විශේෂණය convertනල සිට සියලු රූප කියවීමට නැත, හෝ ffmpeg බවක් ඒවා සියල්ලම ප්‍රතිදානය නොකරයි). මෙම -අඩිය පිළිවෙළින් ප්රතිදාන සහ ආදාන සඳහා භාවිතා කල යුතු බව යන දෙකම විධාන සඳහන් කරනුයේ සඳහා.

ගොනුවක් සුරැකීමකින් තොරව ප්‍රති result ලය ප්‍රශස්ත කිරීම සඳහා, ඔබට ප්‍රතිදානය convertදෙවන convertවිධානයකට නල කළ හැකිය :

ffmpeg -i input.flv -vf scale=320:-1 -r 10 -f image2pipe -vcodec ppm - | convert -delay 5 -loop 0 - gif:- | convert -layers Optimize - output.gif

මෙම gif:-කියයි convertgif ලෙස එහි ප්රතිදානය දත්ත ආකෘතිගත හා ජල නල -layers Optimizeදෙවන කියයි convertඉටු කිරීමට optimize-frameහා optimize-transparancyක්රම (මෙම ImageMagick බලන්න සජීවනය සුසර හැඳින්වීම ). සිට ලැබෙන ප්‍රතිදානය -layers Optimizeසෑම විටම කුඩා ගොනු ප්‍රමාණයක් ලබා නොදෙන බව සලකන්න , එබැවින් ඔබට පළමුව සහතික කිරීම සඳහා ප්‍රශස්තිකරණයකින් තොරව gif බවට පරිවර්තනය කිරීමට උත්සාහ කිරීමට අවශ්‍ය විය හැකිය.

මෙම සම්පූර්ණ ක්‍රියාවලිය තුළ සෑම දෙයක්ම මතකයේ පවතින බව මතක තබා ගන්න, එම නිසා රූප තරමක් විශාල නම් ඔබට ප්‍රමාණවත් මතකයක් අවශ්‍ය වනු ඇත.


1
මෙම විධානයන් ද ක්‍රියාත්මක වේavconv
රෆායෙල්

ඔබ අවසාන පරිවර්තන විධාන දෙක ඒකාබද්ධ කළ යුතුය:convert -delay 5 -loop 0 -layers Optimize - output.gif
ක්ලෙමන්ට්

ප්‍රභව වීඩියෝවේ වේගය 2x ක වේගයකින් gif ධාවනය වන බව පෙනේ?
ටයිටන්

It ටයිටන් විශ්වාස කරන්නේ එය පළමු විධානයෙහි -r 10 සහ දෙවන විධානය -delay 5 බවයි. මම ප්‍රමාදය 10 දක්වා වෙනස් කළ අතර එය දැන් සාමාන්‍යයෙන් ක්‍රීඩා කරන බවක් පෙනේ.
ස්ටීවන් හුවාං

2
splitFfmpeg හි පෙරණය භාවිතා කිරීමෙන් ඔබට අතරමැදි රූප ගොනු වළක්වා ගත හැකිය . කිසිසේත් පයිප්ප කිරීමට අවශ්‍ය නැත:ffmpeg -ss 30 -t 3 -i "input.flv fps=10,scale=320:-1:flags=lanczos,split[x][z];[z]palettegen[y];[x][y]paletteuse" output.gif
අජෙඩි 32

38

Ffmpeg 2.6 අනුව, අපට ඊටත් වඩා හොඳින් කළ හැකිය:

palette="/tmp/palette.png"
filters="fps=15,scale=320:-1:flags=lanczos"

ffmpeg -i input.flv -vf "$filters,palettegen" -y $palette
ffmpeg -i input.flv -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y output.gif

එච්.ටී.


21

මම මගේම පිටපතක් සාදන ලද අතර එය ප්‍රතිදාන විභේදනය සහ රාමු අනුපාතය පරාමිතිකරණය කරයි.

ධාවනය ./gifenc.sh input.mov output.gif 720 10මඟින් ඔබ ලබා දුන් චිත්‍රපටයෙන් 720p පළල 10fps GIF ප්‍රතිදානය කරනු ඇත. chmod +x gifenc.shගොනුව සඳහා ඔබට කිරීමට අවශ්‍ය විය හැකිය .

#!/bin/sh

palette="/tmp/palette.png"

filters="fps=$4,scale=$3:-1:flags=lanczos"

ffmpeg -v warning -i "$1" -vf "$filters,palettegen" -y "$palette"
ffmpeg -v warning -i "$1" -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y "$2"

ඔබට මගේ ගිතුබ්හි විස්තර කියවිය හැකිය

උපකල්පන: ffmpeg ස්ථාපනය කර ඇති අතර ස්ක්‍රිප්ට් අනෙක් ගොනු මෙන් එකම ෆෝල්ඩරයේ ඇත.


3
ඔබගේ පිටපතට බොහෝම ස්තූතියි. මම එය අත්හදා බැලූ අතර එය විශිෂ්ට ලෙස ක්‍රියා කරයි!
orschiro

20

St ස්ටෙෆේන් වෙතින් ලැබෙන පිළිතුර ඉතා හොඳයි. නමුත් එය Buffer queue overflow, dropping.සමහර වීඩියෝ සඳහා මෙන් අනතුරු ඇඟවීමක් ලබා දෙනු ඇත , සහ ජනනය කරන ලද gifරාමුවක් පහත වැටී ඇත.

fifoපෙරණය Buffer queue overflowභාවිතා කිරීමේදී වළක්වා ගැනීම සඳහා පෙරණය සමඟ වඩා හොඳ අනුවාදයක් මෙන්න paletteuse. splitඅතරමැදි පලත් PNG ගොනුව සෑදීම වළක්වා ගැනීම සඳහා පෙරණය භාවිතා කිරීමෙන්.

ffmpeg -i input.mp4 -filter_complex 'fps=10,scale=320:-1:flags=lanczos,split [o1] [o2];[o1] palettegen [p]; [o2] fifo [o3];[o3] [p] paletteuse' out.gif

මම එය නිවැරදිව තේරුම් ගත්තා නම්, ඔබ ආදානය o1 සහ o2 ලෙස බෙදන අතර o2 o3 ට පිටපත් කරයි. ඉතින් ඔබට o3 අවශ්‍ය ඇයි? O2 කෙලින්ම භාවිතා නොකරන්නේ ඇයි?
ක්ලෝයි

1
H ක්ලෝයි සහ fifoඅතර පෙරහන් ක්‍රියාකාරිත්වය ඔබ දුටුවාද ? අනතුරු ඇඟවීම වළක්වා ගැනීම සඳහා . o2o3Buffer queue overflow
අලිජැන්ඩ්‍රෝ

+1 මෙය මට ඉතා හොඳින් ක්‍රියාත්මක වේ (සහ යොමු කරන ලද ගැටලුව විසඳීය).
ඉයන් කොලින්ස්

1
මම මෙම විසඳුමට නියත වශයෙන්ම ආදරය කරමි. කුඩෝස්!
ලියොනිඩ් උසොව්

12

මෙම ffmpegපලත් සමග ක්රමය අතරමැදියා තොරව, එක් විධානයක් තුළ ධාවනය කළ හැකි .pngගොනු.

ffmpeg -y -ss 30 -t 3 -i input.flv -filter_complex \
"fps=10,scale=320:-1:flags=lanczos[x];[x]split[x1][x2]; \
[x1]palettegen[p];[x2][p]paletteuse" output.gif

පෙරනයට ස්තූතිවන්ත වන පරිදි මෙය කළ හැකිය split.


11

පිටපතක් සාදා, පරීක්ෂා කර ක්‍රියා කරයි.

භාවිතය:

./avi2gif.sh ./vokoscreen-2015-05-28_12-41-56.avi

PHUN කරන්න :)

vim avi2gif.sh

#!/bin/sh

INPUT=$1

# default settings, modify if you want.

START_AT_SECOND=0; # in seconds, if you want to skip the first 30 seconds put 30 here

LENGTH_OF_GIF_VIDEO=9999999; # in seconds, how long the gif animation should be

echo "Generate a palette:"
ffmpeg -y -ss $START_AT_SECOND -t $LENGTH_OF_GIF_VIDEO -i $INPUT -vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png

echo "Output the GIF using the palette:"
ffmpeg -ss $START_AT_SECOND -t $LENGTH_OF_GIF_VIDEO -i $INPUT -i palette.png -filter_complex "fps=10,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" $INPUT.gif

btw : vokoscreen යනු ලිනක්ස් සඳහා විශිෂ්ට තිර පිටපත් කිරීමේ මෙවලමකි :)

ගොඩක් ස්තූතියි මයිකල් කොහවුප්ට් :) පාෂාණය ස්ථාවරයි.

සමහර ගොනු ප්‍රමාණ සංඛ්‍යාන:

5.3M = vokoscreen-2015-04-28_15-43-17.avi -> vokoscreen-2015-05-28_12-41-56.avi.gif = 1013K

බලන්න මෙතන ප්රතිඵල.


11

ලිනක්ස් / යුනික්ස් / මැකෝස්

පහත සඳහන් @LordNeckbeard ප්රවේශය සමඟ ffmpegවිධාන, ඔබේ බවට එකතු කළ හැකි පහත සඳහන් ප්රයෝජනවත් බැලූබැල්මට සොයා කරුණාකර ~/.bash_profileගොනුව:

# Convert video to gif file.
# Usage: video2gif video_file (scale) (fps)
video2gif() {
  ffmpeg -y -i "${1}" -vf fps=${3:-10},scale=${2:-320}:-1:flags=lanczos,palettegen "${1}.png"
  ffmpeg -i "${1}" -i "${1}.png" -filter_complex "fps=${3:-10},scale=${2:-320}:-1:flags=lanczos[x];[x][1:v]paletteuse" "${1}".gif
  rm "${1}.png"
}

ශ්‍රිතය පූරණය වූ පසු (අතින් හෝ සිට . ~/.bash_profile), ඔබට නව video2gifවිධානයක් තිබිය යුතුය .

උදාහරණ භාවිතය:

video2gif input.flv

හෝ:

video2gif input.flv 320 10

තත්පරයට රාමු 10 ක් සහිත පළල 320 දක්වා පරිමාණය කරන්න.

ඔබට වෙනත් වීඩියෝ ආකෘතියක් ද නියම කළ හැකිය (mp4 වැනි).


macOS

වීඩියෝ ගොනු වලින් GIF නිර්මාණය කළ හැකි GIF බ rew වරි යෙදුම ඔබට උත්සාහ කළ හැකිය.


විකල්පයක් ලෙස නොමිලේ මාර්ගගතව පරිවර්තනය කරන වෙබ් අඩවි කිහිපයක් තිබේ.


ඔබගේ ස්ක්‍රිප්ට් එක png ගොනුවක් ගැන දෝෂයක් මතු කරන අතර මට gif ප්‍රතිදානයක් නොලැබේ, නමුත් .mp4 ආදාන ගොනුව නොවෙනස්ව පවතී
lacostenycoder

1
ස්තූතියි. පරාමිතීන් 1500සහ 40මට පෞද්ගලිකව පරිපූර්ණ ගුණාත්මක තෑගි ජනනය කරයි.
සිද්ධාර්ථ

9

තෝරාගත් පිළිතුර උපකල්පනය කරන්නේ ඔබ ප්‍රභව වීඩියෝව පරිමාණය කර නිෂ්පාදනය කරන ලද gif තුළ එහි fps වෙනස් කිරීමට අදහස් කරන බවයි. ඔබට මෙය කිරීමට අවශ්‍ය නොවේ නම්, පහත සඳහන් දෑ ක්‍රියාත්මක වේ:

src="input.flv"
dest="output.gif"
palette="/tmp/palette.png"

ffmpeg -i $src -vf palettegen -y $palette
ffmpeg -i $src -i $palette -lavfi paletteuse -y $dest

මා භාවිතා කරන මූලාශ්‍ර වීඩියෝව විශ්වාසවන්තව ප්‍රතිනිර්මාණය කරන ලද gif එකක් අවශ්‍ය වූ විට මෙය ප්‍රයෝජනවත් විය.


6

වින්ඩෝස් භාවිතා කරන්නන් සඳහා: මෙම අන්තර්ගතයන් සමඟ වින්ඩෝස් නාමාවලියෙහි ගොනුවක්
සාදන්න video2gif.bat:

@echo off
set arg1=%1
set arg2=%arg1:~0,-4%
ffmpeg -y -i %arg1% -vf fps=10,scale=-1:-1:flags=lanczos,palettegen %TEMP%\palette.png
ffmpeg -i %arg1% -i %TEMP%\palette.png -filter_complex "fps=10,scale=-1:-1:flags=lanczos[x];[x][1:v]paletteuse" %arg2%.gif
del /f %TEMP%\palette.png

ඔබට එය භාවිතා කළ හැකි ඕනෑම තැනක මෙම උදාහරණය මෙන් වන්න:

video2gif myvideo.mp4

එවිට ඔබට myvideo.gifවත්මන් නාමාවලියෙහි ඇත.
නම් myvideo.gifපැවති, ලියන්නට ඒ සඳහා ඔබ ප්රශ්නයක් තිබිය නොහැකි ය.

සංස්කරණය කරන්න:

මෙම කණ්ඩායම් පිටපත භාවිතා කිරීමට මම යෝජනා කරමි: https://github.com/NabiKAZ/video2gif


2
පෙරහන් (අනෙක් පිළිතුරු භාවිතා කිසිවක් වෙනස් එකතුවක් ලබා (1) ලියන ලද වින්ඩෝස් (.BAT) විධානය තිර රචනය ලෙස විධාන, සහ (2): මම ඔබ මෙහි කරුණු දෙකක් සිදු කර ඇත බව දකින්න දෙකම fps=10 හා scale=-1:-1).  සූර්යයාගේ පිළිතුර දැනටමත් අපට කණ්ඩායම් ගොනුවක් ලබා දී ඇති අතර, එම ( පීජේගේ පිළිතුරෙහි ඇති ෂෙල් ස්ක්‍රිප්ට් සහ දේවදූතයාගේ පිළිතුර වැනි ) වාසියක් ඇත, එය පෙරණයන්ගේ ලැයිස්තුව විචල්‍යයකට ( එක් වරක් ) පැවරීමේ වාසිය ඇත,… (ඉදිරියට)
ස්කොට්

1
(Cont'd)… එබැවින් එයට ලැයිස්තුව දෙවරක් අක්ෂර වින්‍යාස කිරීමට අවශ්‍ය නොවේ (ඔබේ කණ්ඩායම් ගොනුව මෙන්). (මෙය අවදානමක් ඇති කරයි යැයි මම සිතමි, පරිශීලකයා එක් ලැයිස්තුවක් වෙනස් කිරීමට ස්ක්‍රිප්ට් සංස්කරණය කළ නමුත් අනෙක නොගැලපීම ගැටළුවක් ඇති කරයි.) ඔබට අවම වශයෙන් ඔබේ පෙරහන් තේරීම පැහැදිලි කළ හැකිද ( fps=10,scale=-1:-1)? ( විධානයක කොටස් පැහැදිලි කිරීම සඳහා උදාහරණයක් ලෙස සැලකිය යුතු පිළිතුර බලන්න .)
ස්කොට්

1
Sc ස්කොට් ඔබ පැවසූ දේ නිවැරදියි, එබැවින් මම මෙහි නව ප්‍රයෝජනවත් පිටපතක් ලියමි
නබි

4

වින්ඩෝස් භාවිතා කරන්නන් සඳහා වන කාණ්ඩ ගොනුව පහත දැක්වේ:

gifenc.bat:

set start_time=0
set duration=60
set palette="c:\temp\palette.png"
set filters="fps=15,scale=-1:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -vf "%filters%,palettegen" -y %palette%
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y %2

මූලාශ්‍රය: FFmpeg සමඟ උසස් තත්ත්වයේ GIF: නියැදියක් පමණක් උපුටා ගැනීම

ඔබට එක් ආදාන විචල්‍යයක් භාවිතා කිරීමට අවශ්‍ය නම් සහ ප්‍රතිදාන නාමයට GIF (උච්චාරණය කරන ලද JIF) දිගුවක් තිබේ නම්, ඒ වෙනුවට මෙය භාවිතා කරන්න:

set start_time=0
set duration=60
set palette="c:\temp\palette.png"
set filters="fps=15,scale=-1:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -vf "%filters%,palettegen" -y %palette%
set var1=%1
set var2=%var1:~0,-4%
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y %var2%.gif

3

ඔබේ වීඩියෝ ගොනුව gif බවට පරිවර්තනය කිරීම සඳහා වින්ඩෝස් 7/10 "දකුණු-ක්ලික් කරන්න" සන්දර්භය මෙනු ඇතුළත් කිරීම

තවත් සමහර පිළිතුරු වල මා භාවිතා කළ video2gif පිටපත සඳහන් විය . නමුත්, ඔබට ඕනෑම පිටපතක් භාවිතා කළ හැකිය.

සන්දර්භය-මෙනු විකල්පය නිර්මාණය කිරීම සඳහා, ඔබ ඔබේ ලේඛකාධිකාරය සංස්කරණය කළ යුතුය. W / admin privs ධාවනය කරමින් පවර්ෂෙල් විධාන විමසුමක් විවෘත කරන්න. මෙම විධානයන් ක්‍රියාත්මක කරන්න:

$key = "Registry::HKEY_CLASSES_ROOT\`*\shell\Run Video2Gif"
New-Item -Path $key"\Command" -Value "C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\bin\video2gif.bat `"%1`"" -Force

දැන් ඔබ ගොනුවක් දකුණු ක්ලික් කළ විට ඔබට "Video2Gif ධාවනය කරන්න" විකල්පයක් ඇත!

btw මම ffmpeg ස්ථාපනය C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\සහ ය video2gif.batඅයිතිය ඊළඟ කිරීමට බින් හිස් තීරුවෙහි දී තිර රචනය ffmpeg.exe. මම C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\binමගේ කවුළුවලටද එකතු කළෙමි PATH, නමුත් ඔබට අවශ්‍ය යැයි මම නොසිතමි.

ස්ක්‍රිප්ටයට අමතර විධාන රේඛා කොඩි / ආර්ග් කිහිපයක් සැපයීමේ විකල්පය ඔබට අවශ්‍ය නම්, පසුව නව ගොනුවක් නම් video2gif-prompt.batකර රෙජිස්ට්‍රාර් විසින් ඒ වෙනුවට යොමු කරන්න video2gif.bat:

@echo off
set /p inp=Enter extrta args, if desired:
C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\bin\video2gif.bat %* %inp%

පෙරනිමි ඉක්මනින් ලබා ගැනීම සඳහා ඔබට තවමත් Enter යතුර ඔබන්න.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.