Ffmpeg සමඟ වීඩියෝ ප්‍රමාණය අඩු කරන්නේ කෙසේද?


275

ffmpegගුණාත්මක භාවය අඩු කිරීමෙන් වීඩියෝවක ප්‍රමාණය අඩු කිරීමට මා භාවිතා කරන්නේ කෙසේද (හැකි තරම් අවම වශයෙන්, ස්වාභාවිකවම, වැඩි ඉඩක් නොමැති ජංගම උපාංගයක් මත ධාවනය කිරීමට මට එය අවශ්‍ය නිසා)?

වීඩියෝවට උපසිරැසි (* .srt හෝ * .sub) භාවිතා කළ හැකි විට, පරිවර්තනය කළ වීඩියෝ ගොනුවේ පරාමිතීන්ට ගැලපෙන පරිදි ඒවා පරිවර්තනය කිරීමට මම කැමැත්තෙමි.


7
මම එය භාවිතා කර නැති නමුත් ffmpegමෑන් පිටුව -fsමඟින් ප්‍රතිදාන ප්‍රමාණය සීමා කිරීමට විකල්පයක් පෙන්වයි , ffmpeg -i in.avi -fs 100M out.aviවැඩක් වැනි දෙයක් තිබේද?
කෙවින්

3
මෙම .aviප්රධාන ප්රශ්නය නොවේ .. aviහුදෙක් රුවනයකි. ප්‍රධාන ගැටළුව වන්නේ ඔබ භාවිතා කරන කෝඩෙක්ස් .. බොහෝ (බොහෝ?) .aviප්‍රභේද පැරණි විලාසිතාවේ කෝඩෙක්ස් (උදා. භාවිතා කරමින් දැඩි කේතන H.264වීඩියෝ සම්පීඩන ප්රමිතියක් (. උදා: ලැබෙන codec x264) සහ aac... මෙම ඔබ භාවිතා ඔබ සහ ඔබේ දුරකථන දක්වා වන මෙම බහාලුම් කේතක ගණනාවක් ශ්රව්ය සඳහා සම්පීඩන .. .mp4රුවනයකි හොඳින් පිළිගනු .. (නමුත් ඔබේ දුරකථන හසුරුව එය පුළුවන්: මෙම සබැඳිය
පීටර්.ඕ

E කෙවින් මෙය පරිවර්තනය සඳහා තවත් පරාමිතීන් අවශ්‍ය වේ.
xralf

එය ඕනෑවට වඩා වැඩි නම්, 480p
ක්වික්ටයිම් භාවිතා කිරීමේ අඩුපාඩු

1
@ Wolfpack'08 - ආදාන වීඩියෝව දැනටමත් එකම විධානයක ප්‍රති result ලයක් වූ විට පිළිගත් පිළිතුරේ දෙවන විධානය සමඟ ප්‍රමාණය වැඩි වී ඇති බව මම දැක ඇත්තෙමි . ඉතින්: A-> B-> C, B, A ට වඩා 4 ත් 5 ත් අතර කුඩා විය; නමුත් සී බී වලට වඩා ටිකක් විශාලයි
සිප්රිකස්

Answers:


383

මෙම පිළිතුර බලන්න . පහසුව සඳහා පහත සඳහන් කර ඇත:

ඔබේ ඉලක්ක ප්‍රමාණය (බිටු වලින්) වීඩියෝ දිග (තත්පර වලින්) බෙදීමෙන් ඔබට අවශ්‍ය බිට්‍රේට් ගණනය කරන්න. උදාහරණයක් ලෙස ඉලක්කගත ප්‍රමාණය 1 GB (එක් ගිගා බයිට් එකක් , එය ගිගා බිටු 8 ක් ) සහ තත්පර 10 000 වීඩියෝ (2 පැය 46 මිනිත්තු 40 s) සඳහා, බිට්‍රේට් 800 000 / s (800 kbit / s) භාවිතා කරන්න. :

ffmpeg -i input.mp4 -b 800k output.mp4

සලකා බැලිය යුතු අතිරේක විකල්පයන් වන්නේ ස්ථාවර අනුපාත සාධකය සැකසීමයි , එය සාමාන්‍ය බිට් අනුපාතය අඩු කරයි, නමුත් වඩා හොඳ ගුණාත්මක බවක් රඳවා ගනී. සීආර්එෆ් 18 ත් 24 ත් අතර වෙනස් වේ - පහළ, ඉහළ බිට්‍රේට්.

ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4

එම පිළිතුර 2009 දී වඩා හොඳ වඩා (2020) ලියන ලද්දේ අද කාලයේ වීඩියෝ ආකෘතිය H.264 පුළුල් ලෙස ලබා ගත හැකි වන අතර, එනම් H.265 (එය එම තත්ත්වය වඩාත් සංකෝචනය, හෝ එම ප්රමාණය ඉහල ගුණාත්මක ලබා දෙන බව වඩා හොඳ). එය භාවිතා කිරීම සඳහා, libx264කෝඩෙක් වෙනුවට ආදේශ කර libx265CRF අගය වැඩි කිරීමෙන් සම්පීඩන ලීවරය තව දුරටත් තල්ලු කරන්න - H.265 සඳහා සාධාරණ පරාසයක් 24 සිට 30 දක්වා විය හැකි බැවින් 4 හෝ 6 එකතු කරන්න.


24
දෙවන විධානය, භාවිතා කිරීම -crf 24මා සතුව තිබූ 255.3MB වීඩියෝවක් ගෙන එහි ගුණාත්මකභාවය සැලකිය යුතු ලෙස අඩු නොකර 72.7MB දක්වා අඩු කළේය. ඉහළට යන්න!
පැට්‍රික් රොබට්ස්

3
M 2G වීඩියෝවක් 14MB දක්වා කැපී පෙනෙන ලෙස අඩු කර ඇත, තවමත් හොඳ පෙනුමක් ඇත, මෙය පළමු සෙවුම් ප්‍රති result ලය වූ අතර එය මා සොයන දේමයි, ස්තූතියි!
sinisterstuf

9
ඔබට දැන් libx265ඊටත් වඩා ප්‍රමාණය අඩු කිරීම සඳහා භාවිතා කළ හැකි බව මතක තබා ගැනීම හොඳය .
ZN13

8
භාවිතා කර ffmpeg -i input.avi -vcodec libx264 -crf 24 output.aviඇත. එය 100mb වීඩියෝවක් 9mb දක්වා අඩු කළේය .. වීඩියෝ ගුණාත්මක භාවයේ ඉතා සුළු වෙනසක්. ඔබට ස්තුතියි!
ඇල්ෆා_989

2
පිළිතුර හොඳයි, නමුත් මට තවත් විස්තරයක් පෙන්වා දීමට අවශ්‍යයි: සමහර උපාංග (උදා: පැරණි ටැබ්ලට්, රාස්ප්බෙරි පයි 1) අඩු මතකයක් පමණක් නොව අඩු සැකසුම් ශක්තියක් ද තිබිය හැකිය. එවැනි අවස්ථාවන්හිදී, පැතිකඩ සීමා කිරීම මගින් විසංයෝජනයේ සංකීර්ණත්වය සීමා කිරීමට ඔබට අවශ්‍ය විය හැකිය -profile:v baseline( superuser.com/questions/371460/… හි පෙන්වා ඇති පරිදි ). ද -pix_fmt yuv420pඒ සඳහා ලබා යහපත් හා -movflags +faststartමුල් ආරම්භක ඉඩ.
හර්මන්

50

ජංගම උපාංගයක තවත් වීඩියෝ ගැලපෙන පරිදි ගොනු ප්‍රමාණය අඩු කිරීමට අවශ්‍ය බව ඔබ සඳහන් කළ අතර එය මගේ භාවිත කේතය ද වේ. මෙහි ඇති සියලුම පිළිතුරු සම්පීඩන ගුණාත්මකභාවය අඩු කිරීම සඳහා වන නමුත් වීඩියෝ රාමු ප්‍රමාණය අඩු කිරීම කිසිවෙකු සඳහන් කර නැත. එය මගේ අත්දැකීම් නැවත සකස් කිරීමට වඩා 3 සිට 5 ගුණයක් ඉක්මන් වේ. වැඩි විස්තර සඳහා පරිමාණය පිළිබඳ ffmpeg ලියකියවිලි බලන්න .

ffmpeg -i input.mkv -vf "scale=iw/2:ih/2" half_the_frame_size.mkv
ffmpeg -i input.mkv -vf "scale=iw/3:ih/3" a_third_the_frame_size.mkv
ffmpeg -i input.mkv -vf "scale=iw/4:ih/4" a_fourth_the_frame_size.mkv

39

ඔබ නිශ්චිත බිට් අනුපාතයක් සොයන්නේ නැත්නම්, මම -crfවිකල්පය නිර්දේශ කරමි .

මෙම ලිපියේx264 විස්තර කර ඇති පරිදි මෙය කේතනය සඳහා බහුලව භාවිතා වේ .

කෙටියෙන් කිවහොත්: 23 ක නියත අනුපාත සාධකය (CRF) ඩීවීඩී ගුණාත්මක චිත්‍රපටයක් (M 700MB - 1GB) බවට පත් කරන අතර අඩු CRF අගයන් උසස් තත්ත්වයේ (විශාල ගොනු) වනු ඇත.

සම්බන්ධිත ලිපියෙන් උදාහරණයක්:

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

6
කරුණාකර බාහිර වෙබ් අඩවියකට සම්බන්ධ වීම වෙනුවට සම්පූර්ණ විධානය සඳහා උදාහරණ දෙන්න (එය කවදා හෝ බිඳ දැමිය හැකිය :)
ජේක් බර්ජර්

2
Ick විකී චිජ්වානි ඉහත උදාහරණයේ කේතය සපයයි. මෙය අදහස් දැක්වීමකට වඩා සුදුසු නමුත් එය මෙම වෙබ් අඩවියේ මගේ පළමු ක්‍රියාකාරකම විය. සබැඳිය crf විකල්පය පිළිබඳ වැඩි විස්තරයක් ඇති නමුත් කේතය වැඩ කිරීමට අවශ්‍ය නොවේ.
ටොම් කෙලී

35

මෙම ප්‍රශ්නයට වෙනත් යෝජිත පිළිතුරු බොහොමයක් මම අත්හදා බැලුවෙමි. පරීක්ෂණ දත්ත නිගමන පහතින්. මා විසින් පරීක්ෂා කරන ලද යෝජිත පිළිතුරු මේවා ය:

(BR) භාවිතා කරමින් බිට්‍රේට් වෙනස් කරන්න:

ffmpeg -i $infile -b $bitrate $newoutfile 

(CR) නියත අනුපාත සාධකය වෙනස් කරමින්,

ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile

(SZ) වීඩියෝ තිර ප්‍රමාණය වෙනස් කරන්න (උදාහරණයක් ලෙස එහි පික්සල් ප්‍රමාණයෙන් අඩකට),

ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile

(බීඑල්) H.264 පැතිකඩ "බේස්ලයින්" ලෙස වෙනස් කරන්න,

ffmpeg -i $infile -profile:v baseline $outfile

(DF) පෙරනිමි ffmpeg සැකසුම් භාවිතා කරන්න,

ffmpeg -i $infile $outfile

දත්ත

  • "ප්‍රමාණය" - මුල් පිටපතට සාපේක්ෂව පරිවර්තනය කරන ලද වීඩියෝ පටයේ ප්‍රතිශත පික්සල් ප්‍රමාණය.
  • "බිට්‍රේට්" - මුල් සහ පරිවර්තනය කළ වීඩියෝ වල බිට්‍රේට්.
  • "අර්ථ දැක්වීම" - වීඩියෝවල පික්සල් ප්‍රමාණය.
  • "පරිවර්තනය" - තත්පර කිහිපයකින් වීඩියෝව පරිවර්තනය කිරීමට කාලයයි.

මම යෝජිත ක්‍රමය භාවිතා කරමින් (බීඑල්) සඳහා ඉලක්ක බිට්‍රේට් ගණනය කළෙමි.

=== ගොනුව A - කෝණික - Fnbixa7Ts6M.mkv ඉදිරියට ගෙනයාමට නෝඩ් උදව් කරන්නේ කෙසේද ===

            original    BR         CR         SZ         BL         DF
            --------    ---        --         --         --         --
size        64152 kb    214%       76%        40%        83%        76%
bitrate     411 kb/s    883        313        165        342        313
definition  1920x1080   1920x1080  1920x1080  960x540    1920x1080  1920x1080
convert     --          648        509        225        427        510

=== ගොනුව B - කෝණික _ සමඟ ග්‍රැෆික්එල් භාවිතා කිරීම - විසින් - ලී කොස්ටෙලෝ- OGyFxqt5INw.mkv ===

            original    BR         CR         SZ         BL         DF
            --------    ---        --         --         --         --
size        410301 kb   33%        109%       28%        143%       109%
bitrate     2687 kb/s   880        2920       764        3843       2920
definition  3840x2160   3840x2160  3840x2160  1920x1080  3840x2160  3840x2160   
convert     --           2307       3188       1116       2646       3278

නිගමන

  • (SZ) ක්‍රමය අනිවාර්යයෙන්ම ඉක්මන්ම ක්‍රමයයි. එය 2X සිට 4X දක්වා වේගවත් විය. අනෙක් සියලුම ක්‍රම වීඩියෝවේ සත්‍ය දිගට වඩා පරිවර්තනය කිරීමට වැඩි කාලයක් ගත වූ බැවින් මෙය අධි-ඩෙෆ් වීඩියෝ සඳහා බොහෝ සෙයින් ගැටළුවක් විය හැකිය! උදාහරණයක් ලෙස, (CR) ක්‍රමය මිනිත්තු 21 වීඩියෝව පරිවර්තනය කිරීමට මිනිත්තු 53 ක් ගතවිය.

  • වීඩියෝවේ අර්ථ දැක්වීම තිරයේ අර්ථ දැක්වීමට වඩා විශාල නම් (SZ) ක්‍රමය අනිවාර්යයෙන්ම හොඳම ක්‍රමය වේ. උදාහරණයක් ලෙස, ඔබගේ දුරකථනයට 1080p පින්තූරයක් පමණක් පෙන්විය හැකි නම්, එය 3840x2160 වීඩියෝවක් යැවීම නාස්තියකි. එහි ප්‍රමාණයෙන් 1080p දක්වා අඩක් කිරීම වඩාත් සුදුසුය.

  • යෝජිත සමහර පිළිතුරු ඇත්ත වශයෙන්ම සමහර වීඩියෝවල ප්‍රමාණය වැඩි කළේය. උදාහරණයක් ලෙස, (BR) ක්‍රමය 1080p නියැදියේ ප්‍රමාණය මෙන් දෙගුණයකටත් වඩා වැඩිය. කෙසේ වෙතත් එය 2160p ප්‍රමාණයෙන් තුනෙන් එකක් බවට පත් කළේය. අධි-ඩෙෆ් නියැදිය සඳහා, (CR), (BL) සහ (DF) ක්‍රම සියල්ලම වීඩියෝවේ ප්‍රමාණය වැඩි කරයි.

නිවැරදි (හෝ හොඳම) පිළිතුර

පළමුවෙන්ම ඔබේ ඉලක්ක සංදර්ශකය මඟින් සහය දක්වන උපරිමයට විභේදනය අඩු කිරීම වඩාත් සුදුසුය.

ඔබට තවදුරටත් ගොනු ප්‍රමාණය අඩු කිරීමට අවශ්‍ය නම්, එය පුද්ගලික තේරීම් මත රඳා පවතී. ඔබට තොරතුරු අන්තර්ගතය අඩු කිරීමට හෝ සම්පීඩනය වැඩි කිරීමට හැකිය.

  • එය ඔබ ගැන සැලකිලිමත් වන දෙයක් නොවේ නම් ඔබට විභේදනය වැඩි කළ හැකිය.

  • වීඩියෝවෙහි වේගවත් ක්‍රියා දර්ශන ඇතුළත් නොවේ නම්, ඔබට රාමු අනුපාතය අඩු කිරීමට අවශ්‍ය විය හැකිය.

  • ඔබට ප්‍රබල ප්‍රොසෙසරයක් තිබේ නම් සහ අවකාශය එකම ගැටළුව නම්, ඔබට සම්පීඩන වේගය වැඩි කළ හැකිය.

  • බිට් අනුපාතය යනු විවිධ සාධකවල එකතුවකි. එබැවින් බිට් අනුපාතය අඩු කරන ලෙස ffmpeg ට පැවසීමෙන් ඔබට අවශ්‍ය ප්‍රති results ල නොලැබෙනු ඇත.

  • අඩු තොරතුරු අන්තර්ගතයේ තවත් ක්‍රමයක් වන්නේ වර්ණ ගැඹුර අඩු කිරීමයි. මෙය කරන්නේ කෙසේද යන්න තවමත් සාකච්ඡා කර නොමැත.


(SZ) ආරම්භ කිරීම වැනි වඩා හොඳ ප්‍රති result ල සඳහා අපි ක්‍රම 2 ක් මිශ්‍ර කර (CR) සමඟ අවසන් කළහොත් කුමක් කළ යුතුද?
අලියම්

1
@aleyam එය සම්පූර්ණයෙන්ම රඳා පවතින්නේ ඔබ මිශ්‍ර කරන්නේ කුමන ඒවාද යන්න සහ කුමන අනුපිළිවෙල අනුවද යන්නයි. SZ වලින් ආරම්භ වී CR සමඟ අවසන් වීම අර්ථවත් කරයි. මෙය "නිවැරදි (හෝ හොඳම) පිළිතුර" හි මා සඳහන් කළ දෙයට උදාහරණයකි. ඔබ මුලින්ම විභේදනය අඩු කර සම්පීඩනය වැඩි කරයි. නමුත් විවිධ සංයෝජන හෝ විවිධ ඇණවුම් වල තේරුමක් නැත - උදාහරණයක් ලෙස CR පසු SZ කිරීම. සමහර ක්‍රම එකිනෙකාට එරෙහිව ක්‍රියා කරයි. උදාහරණයක් ලෙස, CR රාමුවේ බිට්‍රේට් ගතිකව වෙනස් කිරීමට උත්සාහ කරන නමුත් BR එය නියතව තබා ගැනීමට උත්සාහ කරයි.
ජෝන් පැන්කොවිච්

මෙම දත්ත එක්රැස් කිරීම ගැන ස්තූතියි. අවාසනාවට, මෙම මිණුම් දණ්ඩ ඇපල් දොඩම් සමඟ සංසන්දනය කරයි. (1) ක්‍රමය ඩීඑෆ් පින්තූරයට කිසිදු තොරතුරක් එක් නොකරයි, එය ක්‍රමවේදය සීආර් හා සමාන බැවින් එය නැවත කේතනය කිරීමකිlibx264 සහ සීආර්එෆ් 23, එනම් ffmpeg හි පෙරනිමි සැකසුම්. (2) ක්‍රමය බීඑල් ඇත්ත වශයෙන්ම සම්පීඩන ක්‍රමයක් නොවන අතර ප්‍රතිදාන ප්‍රමාණය වෙනස් වේ (දෙපැත්තටම) වෙනත්, පාලනය කළ නොහැකි සාධක නිසා. [H.264 හි “පැතිකඩ” “බේස්ලයින්” දක්වා පහත හෙලීම යන්නෙන් අදහස් කරන්නේ සමහර පැරණි දෘඩාංග සමඟ අනුකූලතාවය සහතික කිරීමයි.
එච් .264

(3) බීආර් වචනයේ පරිසමාප්ත අර්ථයෙන්ම නියත බිට්‍රේට් යෙදේ, එබැවින් එහි ප්‍රති ing ලයක් ලෙස බිට්‍රේට් පැහැදිලිවම ඔබ ඉල්ලූ දෙයයි (දළ වශයෙන්). ඔබ ආදානයට වඩා දෙගුණයක් ඉල්ලුවහොත්, ප්‍රතිදානය දෙගුණයක් තරම් විශාල වීම පුදුමයක් නොවේ! [එසේම, නියත බිට්‍රේට් එකකට කේතනය කිරීම අධෛර්යමත් කර ඇති බව සලකන්න, ඔබ ඒ වෙනුවට පාස් 2 ක සාමාන්‍ය බිට්‍රේට් කේතීකරණයක් කළ යුතුය, වෙනත් පිළිතුරු බලන්න.] (4) සීආර් සිත්ගන්නා දත්ත ලක්ෂ්‍යයක් සපයන නමුත් සීආර්එෆ් සඳහා එක් අත්තනෝමතික අගයකට සීමා වේ. . එම අඩුපාඩුව සමඟම ඔබ ආදාන මට්ටමට වඩා ඉහළ ගුණාත්මක ඉලක්කයක් තෝරා ගන්නේ නම්, එවිට ඔබට විශාල ප්‍රතිදානයක් ලැබේ.
Maëlan

(5) කේතීකරණයේ ධාවන කාලය ආදාන වීඩියෝවේ (නොදන්නා) රාමු ගණනට සමානුපාතික වේ, එබැවින් එය අනුපාතයක් (කේතීකරණයේ ධාවන කාලය) / (වීඩියෝවේ දිග) හෝ වඩා හොඳ ලෙස රාමු ලෙස ප්‍රකාශ වේ. තත්පරයට කේතනය කර ඇත (විවිධ වීඩියෝවලට තත්පරයට වෙනස් රාමු ගණනක් ඇති නිසා).
Maëlan

25

විකල්පයන් නොමැතිව ධාවනය වන විට ffmpeg දැනටමත් යම් ප්‍රශස්තිකරණයක් සිදු කර ඇති බව පෙනේ , එබැවින් ඔබට නොතේරෙන සැකසුම් භාවිතා කිරීමට පෙර හෝ තොරතුරු පැහැදිලිවම නැතිවීමට තීරණය කිරීමට පෙර, පෙරනිමි පරිවර්තනයකට උත්සාහ කරන්න:

ffmpeg -i input.mp4 output.mp4

මගේ නඩුවේදී එය වීඩියෝ සහ ශ්‍රව්‍ය යන දෙකෙහිම බිට්‍රේට් අඩු කර ඇත (ඔබට ffprobeඒවා ක්‍රියාත්මක කිරීමෙන් ආදාන සහ ප්‍රතිදාන ගොනුව පරීක්ෂා කර සංසන්දනය කළ හැකිය ), 700 Mb වීඩියෝවක් 60 Mb බවට සමාන ගුණාත්මක බවකින් යුත් එකක් බවට පරිවර්තනය කරයි.


1
මේ සමඟ 4Gb සිට 2Gb දක්වා ගියේය, ස්තූතියි !!
සෑම් හොසේනි

1
(10Mo සිට 1.2Mb දක්වා, ffmpeg ස්වයංක්‍රීයව VP8 හි තිබූ මගේ වීඩියෝව VP9 බවට පරිවර්තනය කළේය )
සෝඩිමෙල්

මෙය මගේ වීඩියෝවේ ප්‍රමාණය 10.8MB සිට 14MB දක්වා වැඩි කළේය
pjtnt11

2
මේ වන විට වඩාත්ම සරල පිළිතුර. පික්සාබේ හි 18s 4K වීඩියෝවක් සඳහා එය භාවිතා කළ අතර එහි ප්‍රති result ලය වූයේ ගුණාත්මක භාවය සැලකිය යුතු ලෙස අඩු නොකර 30% ප්‍රමාණය අඩු කිරීමයි.
ජොෂ් හබ්දාස්

1
always pjtnt11 එය සැමවිටම කාර්යක්ෂම නොවන බව දැන ගැනීම සතුටක් , වාර්තා කිරීමට ස්තූතියි.
Skippy le Grand Gourou

5

මම විනාඩි 40 ක HD වීඩියෝ ඉදිරිපත් කිරීමක් 505MB සිට 183MB දක්වා සම්පීඩනය කළෙමි.
එය 100MB → 36MB සිට ගමන් කිරීම වැනි ය.
මුල් වීඩියෝව HD වන අතර ප්‍රතිදානය සැලකිය යුතු වෙනසක් විය.
එය වීඩියෝ ගොනුවකි "මම අවට තබා ගැනීමට කැමතියි, නමුත් HD අධික ලෙස මරා දමයි."
මෙන්න මම හේතු සහිතව භාවිතා කළ විධානය:

ffmpeg -n -loglevel error -i inputfile.mp4 -vcodec libx264 -crf 28 -preset faster -tune film outputfilename.mp4

  • -n: ප්‍රතිදාන ලිපිගොනු නැවත ලිවීමෙන් වළකින්න (පරීක්ෂා කිරීම සඳහා ආරක්ෂිතයි.
  • -loglevel error : දෝෂ පෙන්වන්න සහ ප්‍රගතියේ පේළි සහ පේළි සඟවන්න
  • -i inputfile.mp4 : ආදාන ගොනුවේ නම
  • -vcodec libx264: ඉහත ඉහළ පිළිතුරෙන් ස්වයිප් කර ඇත
  • -crf 28: තනි-සමත් සුළු සැලකිය යුතු වෙනස (සමග සම්පීඩන ; "තේමාව සිහිකල්පනාව පරාසයක 17- වේ 0 = lossless, 23 = පෙරනිමි, 51 = නරකම 28 " ) ref ලේඛන
  • -preset faster: 'මධ්‍යම' ref docs හි පෙරනිමි කේතීකරණ වේලාවට වඩා 2x වේගයෙන් පෙනේ
  • -tune film: ආදානය HQ වීඩියෝවක් බව සඳහන් කරන්න (වෙනත් විකල්ප අතරට 'කාටූන්', 'නිශ්චලතාව' ඇතුළත් වේ.) Ref docs
  • outputfilename.mp4 : ප්‍රතිදාන ගොනුවේ නම

වීඩියෝ ගොනු නාමාවලියක් සඳහා:

for i in *.{avi,flv,m4v,mov,wmv,mp4,MP4,TS,mkv}; do ffmpeg -n -loglevel error -i "$i" -vcodec libx264 -crf 28 -preset faster -tune film "cc${i}"; done

ගැටලු:

  • විධානයෙහි සියලු දිගුවන් නොමැතිව "සියලු වීඩියෝ ගොනු" එකතු කිරීමේ පිරිසිදු ක්‍රමයක්
  • "සීසී" උපසර්ගය නොමැතිව ගොනු නාමය ප්‍රතිදානය කිරීමට පිරිසිදු ක්‍රමයක් වන අතර මකා දැමීමට පෙර වීඩියෝව තහවුරු කිරීමට හැකි වේ
  • .webmගොනු විධානය සමඟ ක්‍රියා නොකරයි. හුවමාරු විය "cc${i}""${i%.*}.mp4"

හෑන්ඩ්බ්‍රේක් යනු UI සමඟ විවෘත කේත විකල්පයකි


එය වැඩ කරනවා. නමුත් එයට වැඩි කාලයක් ගතවේ. අඩු ක්‍රියාත්මක කිරීමේ කාලය සඳහා කිසියම් දියුණුවක් තිබේද
නිරාලි

3

මගේ පැරණි කැමරාව ජනනය කරන චලන JPEG වීඩියෝ (සෑම රාමුවක්ම සමස්ත JPEG රූපයක් බැවින්) h264 බවට පරිවර්තනය කිරීම සඳහා මා විසින්ම ව්‍යාජ ලෙස සකස් කරන ලද වට්ටෝරුවක් මා සතුව ඇත. මෙන්න වෙනත් ආකාරයේ වීඩියෝ (පා courses මාලා ආදිය) සඳහා අනුවර්තනයක්.

මම ffmpeg භාවිතා කරන්නේ නැහැ , නමුත් mplayer සහ mencoder . පළමුව, අපි mplayer සමඟ ශ්රව්ය උපකරණ ඉවත් කළ යුතුය:

mplayer -vo null -ao pcm:fast:file=<audio_pcm.wav> <video>
  • මෙම -vo nullසහ -ao nullපරාමිතීන් වීඩියෝ වැරදිම නෑ කිරීම සදහා MPlayer වැඩසටහන පවසයි.

මීලඟ පියවරේදී, අපි mencoder සමඟ 3-pass සම්පීඩනයක් කරන්නෙමු. පළමු මුරපදයේදී අපි ආරම්භක ස්ථානයක් ලෙස සුදුසු ස්ථාවර තත්ත්ව ප්‍රකාර සම්පීඩනයක් ( crf පරාමිතිය) තෝරා ගනිමු :

mencoder <video> -ovc x264 \ 
         -x264encopts ratetol=100:preset=veryslow:crf=<value>:pass=1 \
         -nosound -o video1.h264
  • වීඩියෝවේ අවසාන ගුණාත්මක භාවය සමඟ ඔබ ව්‍යාකූල වී ඇත්නම් -x264encopts වෙත මන්දගාමී_පස්පාස් පරාමිතිය එක් කළ හැකිය . මැන්කෝඩර් අත්පොතෙහි දැක්වෙන්නේ මෙම විකල්පය “අවසාන මුරපදයේ ගුණාත්මක භාවයට සුළු හෝ බලපෑමක් නොකරන අතරම කේතීකරණ වේගය සැලකිය යුතු ලෙස වැඩි දියුණු කරන” පරාමිතීන් අක්‍රීය කරන බවයි. එබැවින්, එය අවසාන පියවරේදී පමණක් භාවිතා කරන්න.

  • ඔබ crf සඳහා අගයන් කිහිපයක් උත්සාහ කළ යුතුය - 25 සිට ආරම්භ කර එහි ප්‍රති video ලයක් ලෙස ඇති වීඩියෝ පටයේ පුරාවස්තු සටහන් කරන තෙක් එය වැඩි කරන්න (ඉහළ අගයන් වැඩි සම්පීඩනය කරයි). පසුකාලීන කේතීකරණ මුරපද ඔබ crf සඳහා තෝරාගත් ගුණාත්මකභාවය වැඩි දියුණු කරන බව මතක තබා ගන්න .

  • සඳහා විකල්ප veryslow අැති වේ මන්දගාමී , මන්දගාමී , මධ්යම ආදිය සම්පූර්ණ ලැයිස්තුවක් සඳහා mencoder අත්පොත බලන්න.

  • රැටෙටෝල් විසින් බිට්‍රේට් විචලනය පාලනය කරයි - මම මෙහි නිවැරදි දේ කරන්නේ දැයි මට විශ්වාස නැත, නමුත් සෑම දර්ශනයක් සඳහාම නිවැරදි බිට්‍රේට් තෝරා ගැනීමට මැන්කෝඩරයට පූර්ණ නිදහස ලබා දීම සඳහා මම එය උපරිම අගයට සකසා ගතිමි.

පළමු සාමාර්ථයෙන් පසුව, අවසාන පියවර මඟින් ඔබ ඊළඟ පියවරේදී භාවිතා කරන සාමාන්‍ය බිට්‍රේට් ලබා දෙන බව ඔබ සටහන් කරනු ඇත:

(...)
x264 [info]: kb/s:526.43

වෙනසක් crf පළමු සමත්, මේ දක්වා නිර්දේශ පරාමිතිය, බිට්රේට් පසුව විෂයයන් දී අවශ්ය:

mencoder <video> -ovc x264 \
       -x264encopts slow_firstpass:ratetol=100:preset=veryslow:bitrate=526:pass=3 \
       -nosound -o video2.h264

සම්පීඩනය ප්‍රශස්ත කිරීම සඳහා මෙම දෙවන පාස් කේතන ක්‍රමය මඟින් පළමු මුරපදයේ ( divx2pass.logසහ divx2pass.log.mbtree) ජනනය කරන ලද සංඛ්‍යාලේඛන කියවනු ඇත .

  • පළමු පාස් එකෙන් ජනනය නොවූ එකම වීඩියෝ ආදානය ඔබ භාවිතා කරන බව සලකන්න - පළමු පාස් ප්‍රතිදාන වීඩියෝව ප්‍රයෝජනවත් වන්නේ ආරම්භක ගුණාත්මකභාවය පරීක්ෂා කිරීමට පමණි.

  • pass=3( නොවේ pass=2 ) නව සංඛ්‍යාලේඛන ගොනුවක් ජනනය කරනු ඇති බව සලකන්න , එවිට ඔබට අවසන් පියවර ඔබට අවශ්‍ය වාර ගණනක් පුනරාවර්තනය කළ හැකිය. මම සාමාන්‍යයෙන් pass=3දෙවරක් කරන්නෙමි , සෑම විටම ප්‍රති bit ල බිට්‍රේට් කෙරෙහි අවධානය යොමු කරමි.

මේ අතර, ඔබට භාවිතා කරමින් lameහෝ oggenc:

oggenc -q<n> <audio_pcm.wav>

අවසාන වශයෙන්, අපි ශ්‍රව්‍ය හා දෘශ්‍ය නැවත සකස් කරමු

mencoder -audiofile <audio>.ogg video2.h264 -oac copy -ovc copy \
         -of lavf -lavfopts format=mp4 -o <video>.mp4
  • මෙම -of lavf -lavfopts format=mp4ජනනය mp4වන lavopts muxers භාවිතා ගොනු ආකෘතිය.

3

ඔබ ඉලක්ක කරන්නේ නිශ්චිත ගුණාංගයකට වඩා නිශ්චිත ගොනු ප්‍රමාණයක් (හෝ බිට්‍රේට්) නම්, ඔබට ද්වි-මුරපදයක් භාවිතා කිරීමට අවශ්‍ය වේ මෙම ප්‍රමාණය තුළ වීඩියෝව ගැලපීම සඳහා සාමාන්‍ය බිට්‍රේට් කේතීකරණයක් (හෝ කෙටියෙන් “2-පාස් ඒබීආර්”) භාවිතා කිරීමට අවශ්‍ය වේ. ගුණාත්මකභාවය විශාල ලෙස අඩු නොකර.

කෙටියෙන් කිවහොත්, එකම බිට්‍රේට් සඳහා එය තනි-පාස් බිට්‍රේට් කේතීකරණයකට වඩා හොඳ ගුණාංගයක් ලබා ගනී ( මෙම පිළිතුරෙහි පෙන්වා ඇති පරිදි ), පළමු පාස් මඟින් කෝඩෙක්ට අවශ්‍යතා මත පදනම්ව බිට් භාවිතය වෙන් කිරීමට ඉඩ සලසයි, එනම් පහසු රාමු මත බිටු ඉතිරි කළ හැකිය. සහ වැඩි ඉල්ලුමක් ඇති රාමු සඳහා වියදම් කිරීමට වැඩි ඉඩක් ඇත. ඊට වෙනස්ව, තනි-පාස් ප්‍රකාරයේදී, කෝඩෙක්ට පැමිණෙන්නේ කුමක් දැයි කල්තියා දැනගත නොහැකි නමුත් තවමත් සීමිත බිට්‍රේට් ක්‍රියාත්මක කළ යුතුය.

බලන්න මේ බ්ලොග් (හෝ මෙම සම්පීඩිත එක් ඥානාලෝකය පැහැදිලි කිරීමක්, සහ සඳහා) H.264 ගැන ffmpeg ගේ විකි වඩාත් කෘතිම කෙසේ-කරන්නේද-යන-සඳහා.

සාමාන්‍ය විධාන රේඛාව:

ffmpeg -i <INPUT> -c:v libx264 -preset medium -b:v <BITRATE> -pass 1 -an -f <OUTPUT_CONTAINER> -y /dev/null && \
ffmpeg -i <INPUT> -c:v libx264 -preset medium -b:v <BITRATE> -pass 2 <AUDIO_OPTIONS> <OUTPUT>.<OUTPUT_CONTAINER>

ඔබට කරුණු ගණනාවක් තෝරා ගැනීමට සිදුවේ.

  • ඉලක්කගත බිට්‍රේට් එකක් සකසන්න, උදා 1M (1 Mbit / s) හෝ 500k(500 kbit / s). අදාළ බිට්‍රේට් ගණනය කරන්නේ කෙසේද යන්න සඳහා මෙම පිළිතුර බලන්න .
  • වර්තමානයේ (2020), ඔබ බොහෝ විට libx264වීඩියෝ කෝඩෙක් නව libx265කෝඩෙක් සමඟ ප්‍රතිස්ථාපනය කරනු ඇත , එමඟින් එකම ප්‍රමාණයට ඉහළ ගුණාත්මක බවක් ලබා දේ. ද්වි -පාස් විකල්ප එම කෝඩෙක් එකට අනුගත කරන්නේ කෙසේද යන්න සඳහා ffmpeg හි විකිය බලන්න .
  • ශ්‍රව්‍ය කේතීකරණය සඳහා ඔබට අවශ්‍ය ඕනෑම විකල්පයක් සකසන්න. උදාහරණයක් ලෙස, 128 kbit / s දී ඕපස් කෝඩෙක් සමඟ නැවත කේතනය කිරීම සඳහා , ලියන්න -c:a libopus -b:a 128k(2020 දී මම AAC වැනි වෙනත් අලාභහානි ශ්‍රව්‍ය කෝඩෙක් වලට වඩා ඕපස් නිර්දේශ කරමි). නමුත්, ඔබ කරන්නේ කුමක්දැයි ඔබ නොදන්නේ නම්, ඔබේ හොඳම විකල්පය වනුයේ ශ‍්‍රව්‍ය නැවත කේතනය නොකිරීමයි, එනම් ලියන්න -c:a copy. මේ ආකාරයෙන්, ඔබ කරදර නොවන අතර ඔබේ ශ්රව්ය උපකරණයේ ගුණාත්මකභාවය නැති නොවේ. කෙසේ වෙතත්, ශ්රව්ය නැවත කේතනය කිරීමෙන් බොහෝ විට බොහෝ දේ ඉතිරි නොවේ (වනගතව ඇති බොහෝ ශ්රව්ය ධාරාවන් දැනටමත් කි.බි. ශ්‍රව්‍ය නැවත කේතනය කිරීම පිළිබඳ වැඩි මාර්ගෝපදේශ සඳහා එහි බලන්න .
  • ඔබේ රුචිකත්වයේ බහාලුම් ආකෘතිය තෝරන්න. වඩාත්ම අදාළ ඒවා (2020) webm, mkvසහ mp4.

2

වීඩියෝවේ ප්‍රමාණය අඩු කිරීම සහ ස්වයංක්‍රීයව වෙනස් crf අගයන් උත්සාහ කිරීම සඳහා මම bash ස්ක්‍රිප්ට් එකක් ලිවීය.

මූලික වශයෙන් ඔබ එසේ කරනු ඇත

  • crf අගයන් පරාසයක් තෝරන්න
  • ස්ක්‍රිප්ට් ධාවනය කරන්න
  • ජනනය කළ වීඩියෝවල ප්‍රමාණය පරීක්ෂා කර ඔබට අවශ්‍ය එක තෝරන්න

ඔබට ළඟා කර ගැනීමට අවශ්‍ය ප්‍රමාණයේ සීමාවක් ඇති විට මෙය සැබවින්ම පහසු වන අතර ඔබට එය කිරීමට ඉඩ සලසන crf අගය කුමක්දැයි ඔබ නොදනී.

මෙය යමෙකුට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි. මම මගේ සගයන් සමඟ බෙදාගත් අතර සෑම කෙනෙකුටම එය ප්‍රයෝජනවත් විය.

#!/bin/bash

# bigger values of crf will lead to a bigger compression (smaller video size)
#for i in 1 2 3 4 5
for i in {25..28}
do
# you can remove the option -y if you want to be asked if to overwrite a file with the same name (leave the -y only if you understand what you are doing, otherwise you might rewrite an important file)
   ffmpeg -y -i NAMEOFTHEVIDEOTOCOMPRESS.mp4 -c:v libx264 -crf $i -preset veryfast -profile:v baseline -level 3.0 -strict -2 out_$i.mp4
   printf "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Done compression at crf=$i \n\n"
done

1

මෙන්න 2 පාස් උදාහරණයක්. තරමක් තදින් කේත කර ඇති නමුත් එය සැබවින්ම මිරිකීම මත තබයි
#!/bin/bash ffmpeg -y -i "$1" -c:v libvpx-vp9 -pass 1 -deadline best -crf 30 -b:v 664k -c:a libopus -f webm /dev/null && ffmpeg -i "$1" -c:v libvpx-vp9 -pass 2 -crf 30 -b:v 664k -c:a libopus -strict -2 "$2"

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.