যুক্তিসঙ্গত মানের সাথে কীভাবে আমি ffmpeg ব্যবহার করে কোনও ভিডিওকে জিআইএফ রূপান্তর করতে পারি?


310

আমি ffmpeg দিয়ে FLVমুভি GIFফাইল রূপান্তর করছি ।

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

এটি দুর্দান্ত কাজ করে তবে আউটপুট জিআইএফ ফাইলের খুব কম মানের রয়েছে।

কোনও ধারণা কীভাবে আমি রূপান্তরিত জিআইএফের মান উন্নত করতে পারি?

কমান্ডের আউটপুট:

ffmpeg -i input.flv -ss 00:00:00.000 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000  output.gif
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 24 2013 14:52:53 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.flv':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-02-14 04:00:07
  Duration: 00:00:18.85, start: 0.000000, bitrate: 3098 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 2905 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2013-02-14 04:00:07
[buffer @ 0x92a8ea0] w:1280 h:720 pixfmt:yuv420p
[scale @ 0x9215100] w:1280 h:720 fmt:yuv420p -> w:320 h:240 fmt:rgb24 flags:0x4
Output #0, gif, to 'output.gif':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-02-14 04:00:07
    encoder         : Lavf53.21.1
    Stream #0.0(und): Video: rawvideo, rgb24, 320x240, q=2-31, 200 kb/s, 90k tbn, 10 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
frame=  101 fps= 32 q=0.0 Lsize=    8686kB time=10.10 bitrate=7045.0kbits/s dup=0 drop=149    
video:22725kB audio:0kB global headers:0kB muxing overhead -61.778676%

ধন্যবাদ।


1
এপিএনজি জিনিস হ'ল লোকেরা এখনও জিআইএফ দিয়ে কীভাবে প্যালেটওয়ার্কগুলি করে তা মজার বিষয়।
Ван

উত্তর:


447

ffmpeg উদাহরণ

Ffmpeg থেকে GIF আউটপুট
183k

ffmpegউচ্চ মানের জিআইএফ আউটপুট করতে পারেন। এটি সর্বদা একটি সাম্প্রতিক সংস্করণ ব্যবহার করার পরামর্শ দেওয়া হয়: ডাউনলোড বা সংকলন

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
  • এই উদাহরণটি ইনপুটটির প্রথম 30 সেকেন্ড ( -ss 30) এড়িয়ে যাবে এবং একটি 3 দ্বিতীয় আউটপুট তৈরি করবে ( -t 3)।
  • fps ফিল্টার ফ্রেম হার নির্ধারণ করে।
  • স্কেল ফিল্টারটি আউটপুটটিকে 320 পিক্সেল প্রশস্ত আকারে দেবে এবং দিক অনুপাত সংরক্ষণ করার সময় স্বয়ংক্রিয়ভাবে উচ্চতা নির্ধারণ করবে।
  • প্যালেটজেন এবং প্যালেটিউজ ফিল্টারগুলি আপনার ইনপুট থেকে উত্পন্ন কাস্টম প্যালেট তৈরি এবং ব্যবহার করবে।
  • বিভাজন ফিল্টার সমস্ত কমান্ডে করার অনুমতি দেয়।
  • -loopআউটপুট বিকল্পের সাথে লুপিং নিয়ন্ত্রণ করুন । এর মান 0হ'ল অসীম লুপিং।

আরও অনেক উদাহরণ এবং বিকল্পের জন্য FFmpeg সহ উচ্চমানের জিআইএফ দেখুন ।


চিত্রগ্রাহক convertউদাহরণ

Ffmpeg থেকে GIF আউটপুট
227k

আরেকটি কম্যান্ড-লাইন পদ্ধতি থেকে পাইপ হয় ffmpegথেকে convert(অথবা magick) করে ImageMagick থেকে।

 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

ফ্রেম রেট নির্ধারণ করা হচ্ছে

সংমিশ্রণ সঙ্গে ফ্রেম রেট সেট fpsফিল্টার ffmpegএবং -delayconvert। এটি জটিল হয়ে উঠতে পারে কারণ convertকেবল চিত্রের কাঁচা প্রবাহ পায় তাই কোনও এফপিএস সংরক্ষণ করা হয় না। দ্বিতীয়ত, -delayমান convertহয় এঁটেল পোকা (সেখানে প্রতি সেকেন্ডে 100 এঁটেল পোকা হয়), ফ্রেম প্রতি সেকেন্ডে না। উদাহরণস্বরূপ, fps=12.5= 100 / 12.5 = 8 = সহ -delay 8

convertচক্রের -delayএকটি পূর্ণ সংখ্যা মান, তাই 8 8.4 ফলাফল এবং 8.5 ফলাফল 9. এই কার্যকরভাবে এর মানে হল যে শুধুমাত্র কিছু ফ্রেম হার সমর্থিত যখন (ক নির্দিষ্ট বিলম্ব ফ্রেম প্রতি সেট করা যেতে পারে কিন্তু তার পরেও যে সব ফ্রেম উপর একটি অভিন্ন বিলম্ব সেটিং এই উত্তর)।

-delayযদি আউটপুট বিকল্প হিসাবে ব্যবহার করা হয় তবে তা উপেক্ষা করা হবে বলে মনে হয়, -উদাহরণস্বরূপ এটির আগে এটি ব্যবহার করতে হবে ।

শেষ অবধি, ব্রাউজার এবং চিত্র দর্শকদের একটি ন্যূনতম বিলম্ব কার্যকর করতে পারে, তাই আপনার -delayযাইহোক উপেক্ষা করা যেতে পারে।

মার্কিন মৎস্য ও বন্যজীবন পরিষেবা জাতীয় সংরক্ষণ প্রশিক্ষণ কেন্দ্রের ভিডিও সৌজন্যে।


4
কিছু উদাহরণ ফলাফল যুক্ত করা হয়েছে (এখনও এখনও ফ্রেম যদিও)। এখানে, প্রথম ফাইলটি 4.1 মেগাবাইট, দ্বিতীয়টি প্রায় 8 এমবি।
স্ল্যাক করুন

2
@ লর্ডনেকবার্ড, আপনি দুর্দান্ত! অনেক ধন্যবাদ-vf scale=320:-1,format=rgb8,format=rgb24
কামিল হিম্মাতুলিন

6
যাইহোক, convertপিএনজি ফ্রেমগুলি থেকে রূপান্তর করার কমান্ডটি আমি ব্যবহার করে শেষ করেছি convert -delay 5 -loop 0 -dither None -colors 80 "frames/ffout*.png" -fuzz "40%" -layers OptimizeFrame "output.gif", যা সামগ্রিক ফাইলের আকারটি কিছুটা হ্রাস করে
উইল্ফ

2
ঠিক আছে, আমি এটি পেয়েছি, আমি ব্যবহার করেছি scale=0:-1, সুতরাং আপনি যখন স্কেল সেট করবেন 0, এটি ভিডিও থেকে স্কেলটি নেবে।
মৌসা আলফাইল

2
এই প্রশ্নোত্তরটি অবশ্যই একটি টোমে স্থায়ীভাবে এনকোড করা উচিত (বা সম্ভবত আপাতত "পিনড") কারণ এখন থেকে একশো বছরে সমস্ত যোগাযোগ মেমসের মাধ্যমে করা হবে। আমি মনে করি এই পোস্টের ক্রিয়াকলাপটি একা তার সাথে কথা বলে।
জোনাথন নিউফিল্ড

87

আপনি অন্তর্বর্তী ইমেজ ফাইল এড়াতে পছন্দ করেন, তাহলে 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 image2pipeFfmpeg বলে ইমেজ মধ্যে ভিডিও বিভক্ত এবং এটি উপযুক্ত আউট পাইপ করা করা, এবং -vcodec ppmআউটপুট ফরম্যাট নির্দিষ্ট করে (কিছু কারণে যদি বিন্যাস png জন্য পিপিএম হতে হয় convertনল থেকে সমস্ত চিত্র পড়া নেই, অথবা ffmpeg করে তাদের সমস্ত আউটপুট না)। -উভয় কমান্ডের জন্য নির্দিষ্ট করে একটি পাইপ আউটপুট এবং ইনপুট জন্য যথাক্রমে ব্যবহার করা হবে।

কোনও ফাইল সংরক্ষণ না করেই ফলাফলটি অনুকূল করতে, আপনি আউটপুটটিকে 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:-বলে convertনল থেকে GIF ফরম্যাট ডেটা এটির আউটপুটের এবং -layers Optimizeদ্বিতীয় বলে convertসম্পাদন করতে optimize-frameএবং optimize-transparancyপদ্ধতি (দেখুন করে ImageMagick অ্যানিমেশন অপ্টিমাইজেশান পরিচিতি )। নোট করুন যে আউটপুটটি -layers Optimizeসর্বদা একটি ছোট ফাইল আকার সরবরাহ করে না, তাই আপনি নিশ্চিত হওয়ার আগে প্রথমে অপ্টিমাইজেশন ছাড়াই একটি জিআইএফ রূপান্তর করার চেষ্টা করতে পারেন।

মনে রাখবেন যে পুরো প্রক্রিয়া চলাকালীন সবকিছু মেমরির মধ্যে থাকে তাই আপনার যদি যথেষ্ট পরিমাণ মেমরির প্রয়োজন হয় তবে চিত্রগুলি বেশ বড় হয়।


1
কমান্ডগুলির এই সেটটিও কাজ করেavconv
রাফেল

আপনার শেষ দুটি রূপান্তর কমান্ডগুলি মার্জ করা উচিত:convert -delay 5 -loop 0 -layers Optimize - output.gif
ক্লাইমেন্ট

জিআইএফটি উত্স ভিডিওটির গতি 2x গতিতে চলছে বলে মনে হচ্ছে?
টাইটান

@ টাইটান বিশ্বাস করে যে এটি প্রথম কমান্ডের -10 এবং দ্বিতীয়টিতে 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

37

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

এইচ টি


18

আমি স্ক্রিপ্টটির নিজস্ব সংস্করণ তৈরি করেছি, যা আউটপুট রেজোলিউশন এবং ফ্রেমের হারকেও পরামিতি দেয়।

./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

15

@ স্টেফেনের উত্তরটি খুব ভাল। তবে এটি Buffer queue overflow, dropping.কিছু ভিডিওর মতো একটি সতর্কতা পাবে এবং উত্পন্ন উত্স gifথেকে কিছু ফ্রেম বাদ পড়েছে।

fifoফিল্টার Buffer queue overflowব্যবহারের সময় এড়াতে এখানে ফিল্টার সহ একটি আরও ভাল সংস্করণ paletteusesplitমধ্যবর্তী প্যালেট পিএনজি ফাইল তৈরি এড়াতে ফিল্টার ব্যবহার করে ।

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
@ চলো আপনি এবং এর fifoমধ্যে ফিল্টার অপারেশনটি দেখেছেন ? সতর্কতা এড়াতে । o2o3Buffer queue overflow
আলিজান্দ্রো

+1 এটি আমার পক্ষে সত্যিই ভাল কাজ করে (এবং সমস্যাটি রেফারেন্স করা সমাধান করে)।
আয়ান কলিন্স

আমি এই সমাধানটি সম্পূর্ণ পছন্দ করি। যশ!
লিওনিড উসোভ

10

একটি স্ক্রিপ্ট তৈরি, পরীক্ষিত এবং কাজ করে।

ব্যবহার:

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

ফ্যান আছে :)

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

বিটিডব্লিউ : ভোকোস্ক্রিন হ'ল লিনাক্সের জন্য একটি এক্সক্লিনটি স্ক্রিন ক্যাপচারিং টুল :)

অনেক ধন্যবাদ মাইকেল কোহাপ্ট :) রক অবিচল।

কিছু ফাইল আকারের পরিসংখ্যান:

5.3 এম = ভোকসস্ক্রিন-2015-04-28_15-43-17.avi -> ভোকসস্ক্রিন-2015-05-28_12-41-56.avi.gif = 1013K

দেখতে এখানে ফলাফল নেই।


10

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ফিল্টার ধন্যবাদ করা যেতে পারে ।


10

লিনাক্স / ইউনিক্স / MacOS

কমান্ড সহ লর্ডনেকবার্ড পদ্ধতির অনুসরণ 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 প্রস্থে স্কেল করুন।

আপনি আলাদা ভিডিও ফর্ম্যাটও নির্দিষ্ট করতে পারেন (যেমন এমপি 4)।


ম্যাক অপারেটিং সিস্টেম

আপনি জিআইএফ ব্রুওয়ারি অ্যাপ ব্যবহার করতে পারেন যা ভিডিও ফাইলগুলি থেকে জিআইএফ তৈরি করতে পারে।


বিকল্পভাবে এমন বেশ কয়েকটি ওয়েবসাইট রয়েছে যা বিনামূল্যে অনলাইনে রূপান্তর করছে।


আপনার স্ক্রিপ্টটি কোনও পিএনজি ফাইল সম্পর্কে আমার জন্য ত্রুটি উত্থাপন করে এবং আমি কোনও জিআইএফ আউটপুট পাই না, তবে। এমপি 4 ইনপুট ফাইলটি অপরিবর্তিত থাকে
ল্যাকোস্টেনাইকোডার

7

নির্বাচিত উত্তরটি ধরে নিয়েছে যে আপনি উত্স ভিডিওটি স্কেল করতে এবং উত্পাদিত জিএফ-তে এর 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

এটি কার্যকর হয়েছিল যখন আমি এমন একটি জিআইএফ চেয়েছিলাম যা আমি ব্যবহার করা উত্স ভিডিওটি বিশ্বস্ততার সাথে তৈরি করেছিলাম।


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)।  সান এর উত্তর ইতিমধ্যে আমাদের একটি ব্যাচ ফাইল দিয়েছে, এবং যে একটি ( pje এর উত্তর শেল স্ক্রিপ্ট এবং andvangelist এর উত্তর মত ) এর সুবিধা আছে যে এটি ফিল্টারগুলির তালিকাটি একটি ভেরিয়েবলের কাছে বরাদ্দ করে ( একবার ),… (চালিয়ে যায়)
স্কট

1
(চালিয়ে যাওয়া) ... সুতরাং তালিকার দু'বার বানান করার দরকার নেই (যেমন আপনার ব্যাচের ফাইলটি করে)। (আমি অনুমান করি যে এটি ঝুঁকি তৈরি করে যে ব্যবহারকারী যদি তালিকার মধ্যে একটির পরিবর্তনের জন্য স্ক্রিপ্টটি সম্পাদনা করে তবে অন্যটি না, অসঙ্গতি সমস্যার কারণ হয়ে দাঁড়ায়?) আপনি কি অন্তত আপনার ফিল্টারগুলির পছন্দ ব্যাখ্যা করতে পারেন ( fps=10,scale=-1:-1)? ( কমান্ডের কিছু অংশের ব্যাখ্যার উদাহরণের জন্য উল্লেখযোগ্য উত্তর দেখুন ))
স্কট

1
@ স্কট আপনি সঠিক বলেছেন, তাই আমি এখানে একটি নতুন দরকারী স্ক্রিপ্ট লিখি
নবী KAZ

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 সহ উচ্চমানের জিআইএফ: মাত্র একটি নমুনা বের করা ract

আপনি যদি কেবল একটি ইনপুট ভেরিয়েবল ব্যবহার করতে চান এবং আউটপুট নামেরটিতে কেবল জিআইএফ (উচ্চারণযোগ্য জেআইএফ) এক্সটেনশন থাকে, তবে পরিবর্তে এটি ব্যবহার করুন:

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

আপনার ভিডিও ফাইলটিকে জিআইএফ-তে রূপান্তর করতে উইন্ডোজ 7-10 "রাইট ক্লিক" প্রসঙ্গ মেনু এন্ট্রি কীভাবে যুক্ত করবেন

অন্যান্য উত্তরগুলির মধ্যে কয়েকটিতে আমি ভিডিও 2gif স্ক্রিপ্ট উল্লেখ করেছি। তবে, আপনি যে কোনও স্ক্রিপ্ট ব্যবহার করতে পারেন।

প্রসঙ্গ-মেনু বিকল্পটি তৈরি করতে আপনার রেজিস্ট্রি সম্পাদনা করতে হবে। একটি পাওয়ারশেল কমান্ড প্রম্পট খুলুন, ডাব্লু / অ্যাডমিন বেসরকারী চলমান। এই আদেশগুলি কার্যকর করুন:

$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

এখন আপনি যখন কোনও ফাইলকে ডান ক্লিক করেন তখন আপনার কাছে একটি "রান ভিডিও 2 জিআইএফ" বিকল্প থাকবে!

বিটিডব্লিউ আমি এফএফএমপিএগ ইনস্টল 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%

আপনি এখনও ডিফল্ট পেতে সবেমাত্র এন্টার টিপুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.