වීඩියෝ කැපීමට ffmpeg භාවිතා කිරීම


387

මේ වගේ විශාල ගොනුවක කොටසක් කැපීමට මම ffmpeg භාවිතා කරමි:

ffmpeg -i input.wmv -ss 60 -t 60 -acodec copy -vcodec copy output.wmv

මෙම -ssකොටස දඩ කරන නමුත් -tනොසලකා හරිනු ලබයි. එය නිශ්චිතව දක්වා ඇති ආරම්භක නිශ්චිත තත්පර නිවැරදිව ඉවත් කරන -ssනමුත් පසුව පිටපත සමඟ ආදානයේ අවසානය දක්වා ගමන් කරයි.

වීඩියෝවක් නැවත කේතනය නොකර කපා හැරීමට ffmpeg භාවිතා කිරීමට ක්‍රමයක් තිබේද?


1
මෙම වාක්‍ය ඛණ්ඩය නිවැරදි ය.
ජිග්ගුන්ජර්

Answers:


458

ඔබ භාවිතා කළ හැකිය -ssආරම්භයක් ඇති වේලාමුද්රාව හා නියම කිරීමට විකල්පය, සහ -tකේතන කාලය නියම කිරීමට විකල්පය. කාලරාමු HH:MM:SS.xxxආකෘතියෙන් හෝ තත්පර වලින් ( s.msec) විය යුතුය.

පහත දැක්වෙන්නේ පළමු තත්පර 30 ක් ක්ලිප් කර පසුව තත්පර 10 කට පසුව ඇති සියල්ල ක්ලිප් කරන්න:

ffmpeg -ss 00:00:30.0 -i input.wmv -c copy -t 00:00:10.0 output.wmv
ffmpeg -ss 30 -i input.wmv -c copy -t 10 output.wmv

බව සටහන -tනිමැවුම් විකල්පය වන අතර, සෑම විටම නියම කළ යුතුය පසු -i .

ඉඟි කිහිපයක්:

  • පැරණි ffmpeg අනුවාද සඳහා, ඔබ -ssපසුව භාවිතා කරන්නේ නම් -i, මන්දගාමී ක්‍රියාත්මක කිරීමේ වියදමෙන් ඔබට වඩාත් නිවැරදි සෙවීමක් ලැබෙනු ඇත. මෙයද බලන්න: FFmpeg සමඟ සෙවීම
  • ඔබට කැපීමට අවශ්‍ය කාලරාමුව නියම කිරීම -toවෙනුවට භාවිතා කළ හැකිය -t. එමනිසා, -i <input> -ss 30 -t 10ඔබ වෙනුවට ඒ දේම කිරීමටද හැකිය -i <input> -ss 30 -to 40.

  • ඔබේ ffmpeg සහාය නොදක්වන්නේ -cනම් හෝ -toඑය යල් පැන ගිය එකක් විය හැකිය. නව අනුවාදයක් ඔබම සම්පාදනය කරන්න හෝ ඔවුන්ගේ මුල් පිටුවෙන් ස්ථිතික ගොඩනැගීමක් බාගන්න . එය ඇත්තෙන්ම සංකීර්ණ නොවේ.


1
Ond මොන්ඩයින් ඇත්ත වශයෙන්ම, -ss පසු කිරීමෙන් ඔබට වඩාත් නිරවද්‍යතාවය ලැබේ. Slhck විසින් මෙහි බ්ලොග් අඩවිය ගැන සඳහන් කරයි. බ්ලොග් අඩවිය සඳහා.
බාර්ලොප්

6
+1 මම මෙහි පැමිණියේ පළමු තත්පර 35 න් පසු සියල්ල නොසලකා හරින ආකාරය දැන ffmpeg -i input.wmv -c copy -t 35 output.wmv
ගැනීමටයි

2
මෙය මට වැඩ නොකරයි (mp4). එය තත්පර 5 ක කළු තිරයක් නිපදවයි:frame= 150 fps=0.0 q=-1.0 Lsize= 264kB time=00:00:09.97 bitrate= 216.6kbits/s
ඔරලෝසුකරු

3
මෙය මගේ වීඩියෝ පටයේ ආරම්භයේ 3-4 s කළු තිරයක් නිපදවීය. අතහැර දැමීම සමඟ ක්‍රිස්ගේ වෙනස් -c copyකිරීම ආරම්භක කළු තිරය ඉවත් කළේය, විස්තර සඳහා ඔහුගේ පිළිතුර බලන්න.
joelostblom

4
ඔබ ලියන්නේ "පහත දැක්වෙන්නේ පළමු තත්පර 30 ක් ක්ලිප් කර පසුව තත්පර 10 කට පසුව ඇති සියල්ල ක්ලිප් කරන්න:" <- එයින් අදහස් කරන්නේ කුමක්ද? ක්ලිප් මගින් ඔබ අදහස් කරන්නේ ඇතුළත් කිරීමද? කොස් ක්ලිප් යන්නෙන් අදහස් වන්නේ ක්ලිප් අවුට් යන්නයි. ඔබ අදහස් කරන්නේ යැයි උපකල්පනය කරන්න. ඔබ අදහස් කරන්නේ තත්පර 30 කින් ආරම්භ කරන්න, එතැන් සිට තත්පර 10 ක් ඇතුළත් කරන්නද? එසේ නම් එය වඩාත් පැහැදිලි වනු ඇතැයි ලිවීමට මම යෝජනා කරමි.
බාර්ලොප්

117

අනෙක් පුද්ගලයින් සඳහන් කළ පරිදි, -ssපෙර (වඩා වේගවත්) හෝ පසුව (වඩාත් නිවැරදි) තැබීමෙන් -iවිශාල වෙනසක් සිදු වේ. Ffmpeg සෙවීමේ පිටුවේ “වේගවත් හා නිරවද්‍ය සෙවීම” යන කොටස ඔබට දෙකම ලබා ගන්නේ කෙසේදැයි පවසන අතර මම එය භාවිතා කර ඇති අතර එය විශාල වෙනසක් ඇති කරයි. මූලික වශයෙන් ඔබ -ssඊට පෙර සහ පසුව තැබූ විට -i, වෙනත් යතුරු රාමුවක් තිබීම සඳහා කැපීම ආරම්භ කිරීමට අවශ්‍ය ස්ථානයට පෙර ප්‍රමාණවත් කාලයක් ඉතිරි කිරීමට වග බලා ගන්න. උදාහරණය: Video.mp4 හි 9min0sec සිට 10min 0sec දක්වා මිනිත්තු 1 ක ක්ලිප් එකක් සෑදීමට ඔබට අවශ්‍ය නම්, ඔබට එය ඉක්මණින් හා නිවැරදිව භාවිතා කළ හැකිය:

ffmpeg -ss 00:08:00 -i Video.mp4 -ss 00:01:00 -t 00:01:00 -c copy VideoClip.mp4

පළමුවැන්නා -ssවේගයෙන් (ආසන්න වශයෙන්) 8min0sec වෙතද, දෙවැන්න -ssනිවැරදිව 9min0sec වෙතද උත්සාහ කරයි, සහ -t 00:01:001min0sec ක්ලිප් එකක් ලබා ගනී.

එම පිටුවෙන් මෙම වැදගත් කරුණද සටහන් කරන්න: "ඔබ භාවිතා -ssකරන්නේ නම් -c:v copy, එහි ප්‍රති bit ලයක් ලෙස බිට්ස්ට්රීම් අවසන් විය හැක්කේ චොප්සි, වාදනය කළ නොහැකි හෝ ශ්රව්ය ධාරාව සමඟ සමමුහුර්ත නොවීම නිසා විය හැකිය, මන්ද ffmpeg ට බල කෙරෙන්නේ අයි-රාමු මත පමණක් භාවිතා කිරීමට / බෙදීමට ය. "

මෙයින් අදහස් කරන්නේ ඔබට වීඩියෝව පිටපත් කිරීමට අවශ්‍ය වුවද එය නැවත සංකේතනය කළ යුතු බවයි. ඔබට -c copyපළමුව උත්සාහ කළ හැකිය , නමුත් වීඩියෝව උරා ගන්නේ නම් ඔබට එය නැවත කිරීමට අවශ්‍ය වේ.


මෙම අනතුරු ඇඟවීම සඳහා එකම අනතුරු ඇඟවීම අදාළ වේ -c:a copy.
ජිග්ගුන්ජර්

2
හොඳම පිළිතුර, මේ ආකාරයෙන් මට හොඳම දේ විය.
Ondra Žižka

7
එය "-ss" දෙවරක් සඳහන් නොකර ffmpeg 2.1+ හි වේගවත් හා නිවැරදි බව පෙනේ. trac.ffmpeg.org/wiki/Seeking
කොන්රාඩ් මේයර්

වීඩියෝව දිගු නම්, -c copyකෙලින්ම නොමැතිව කැපීම මන්දගාමී වේ. කෙසේ වෙතත්, ඔබට මුලින් පිටපත් කිරීමේ මාදිලිය භාවිතයෙන් දළ කැපීමක් කළ හැකි අතර ප්‍රති-කේතනය කිරීමෙන් ප්‍රති result ලය වඩාත් නිවැරදිව කපන්න.
danijar

On කොන්රාඩ්මෙයර් නැත. මා භාවිතා -c copyකරන විට එය ප්‍රතිදානයේ ආරම්භයේ තත්පර 7 ක් එක් කළේය -ss.
Phani Rithvij

29

ආරම්භයේ දී තත්පර භාගයක චොප්සි -ssවලට -c copyහේතු වූ බව මට පෙනී ගියේය.

එය වළක්වා ගැනීම සඳහා, ඔබ ඉවත් කළ යුතුය -c copy(එය ට්‍රාන්ස්කෝඩ් එකක් කරන බව පිළිගත යුතුය).


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

1
හොඳ කරුණ @ ටොමාස්ගන්ඩර්
ක්‍රිස්

3
මට තේරුණේ නැහැ @ ටොමාස්ගන්ඩෝර්ගේ පිළිතුර කිසිසේත්ම, නමුත් එය ඉවත් කිරීම -c copy.
ඉලියන් ඔනොෆ්රි

ඔබ -c පිටපතක් භාවිතා කරන්නේ නම් එය මුල් යතුරු රාමු සහ ඒවායේ පිහිටීම පවත්වා ගනී. ආරම්භයේ ඇති 'නැතිවූ කාලය' යතුරු රාමු අතර පරතරය මත රඳා පවතී.
user1323995

මා භාවිතා -c copyකරන විට එය ප්‍රතිදානයේ ආරම්භයේ තත්පර 7 ක් එක් කළේය -ss.
Phani Rithvij

13

මැනුවල්

රාමු අත්තිකාරම් අනුව රාමු කරන මාධ්‍ය වාදකයක් තුළ ගොනුව විවෘත කර දත්ත වැනි AVISynth ගොනුවක් වාදනය කරන්න :

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)
ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

ඉන්පසු EXACT කාල ආකෘතියෙන් කපන්න:

ffmpeg -i "Path\do you want him.flv"        \
       -ss 00:00:05.240 -to 00:00:08.360    \
       -vcodec libx264 -acodec libvo_aacenc \
       "Path\Do you want him1.flv"

හා

ffmpeg -i "Path\do you want him.flv"        \
       -ss 00:00:10.240 -to 00:00:14.360    \
       -vcodec libx264 -acodec libvo_aacenc \
       "Path\Do you want him2.flv"

දැන් වීඩියෝ ගොනු සමඟ අන්තර්ගතය සහිත ටෙක්ස්ට් ගොනුවක් සාදන්න:

file 'C:\Downloads\Video\Do you want him1.flv'
file 'C:\Downloads\Video\Do you want him2.flv'

Ffmpeg ධාවනය කරන්න:

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

ඔබ -c පිටපතක් භාවිතා කරන්නේ නම් එය මුල් යතුරු රාමු සහ ඒවායේ පිහිටීම පවත්වා ගනී. ඔබගේ වීඩියෝ එම ​​යතුරු රාමු වලට කපා දමනු ඇත, එබැවින් නැත, කාලය හරියටම නොවනු ඇත.
user1323995

8

මට -tවිකල්පය ක්‍රියාත්මක වූයේ නැත, නමුත් -vframesවැඩ කළේය. මම භාවිතා කිරීමට කැමැත්තක් දක්වන්නේ #frames, මම අයි-රාමු කපා හැරීමට කැමති නිසා සහ වීඩියෝ භාවිතය සඳහා GOP සොයාගත් ffprobeබැවිනි.

මා වෙනුවෙන් වැඩ කළ විධාන රේඛාව:

ffmpeg -ss 60s -i input.wmv -vframes 1800 -acodec copy -vcodec copy output.wmv

මාර්ගය වන විට, -ssඉදිරියෙන් තැබීම -iක්‍රියාත්මක කිරීමේ වේලාවේ විශාල වෙනසක් ඇති කරයි.


1
ඇත්ත වශයෙන්ම -vframes(හෝ -frames:v) පැමිණිය යුත්තේ -iඑය ප්‍රතිදාන විකල්පයක් වන බැවිනි.
slhck

5

User225366 මෙන්ම, -t විකල්පය කෙටි වීඩියෝ සඳහා ක්‍රියා නොකරයි, නමුත් එය දිගු වීඩියෝ සඳහා ක්‍රියා කරයි. කෙටි වීඩියෝ සඳහා -frames: v වඩා හොඳ බව පෙනේ. මට වැඩ කළේ මෙයයි.

ffmpeg -ss 4 -i input.mp4 -frames:v 200 -vcodec copy output.mp4

අනෙක් පිළිතුරු පෙන්වන පරිදි වීඩියෝවෙහි ශ්‍රව්‍ය තිබේ නම් -acodec පිටපත එක් කළ යුතුය.


නමුත් මට කොපමණ තත්පර ගණනක් කපා ගැනීමට අවශ්‍යද යන්න මත පදනම්ව රාමු කීයක් තීරණය කළ හැකිද?
රයන්

1

බොහෝ දෙනෙක් මේ ගැන සඳහන් කර නැති බව මම දකිමි (මම විශේෂ expert යෙක් නොවන නිසා අල්ලා ගැනීමක් තිබිය හැක), නමුත් ඔබේ ගොනුවට උපසිරැසි වැනි වෙනත් ප්‍රවාහයන් සහ පරිච්ඡේද වැනි වෙනත් පාර-දත්ත තිබේ නම්, එසේ නම්, සියලු ධාරාවන් කපා / කැපීමට සහ තබා ගැනීමට හැකිය. පහත විධානය

ffmpeg -to 60 -i input.mkv -map 0 -c copy output.mkv

-map 0ඔබ සමඟ ගොනුවේ ඇති සියලුම ධාරාවන් රැගෙන, -c copyඔබ සමඟ ඒවා සියල්ලම පිටපත් කරන්න. ආරම්භය මඟ හැරීම
භාවිතා කිරීමෙන් ආදාන වීඩියෝව ආරම්භයේ සිට දෙවන 60 දක්වා කපා හරිනු ඇත.-to-ss

mapකප්පාදුවේ නිශ්චිත ධාරාවන් පමණක් තබා ගැනීමට ඔබට අවශ්‍ය නම් (සමඟ ගොනුවේ ඇති සියලුම ශ්‍රව්‍ය ප්‍රභවයන් හෝ සමහර උපසිරැසි පමණක් අවශ්‍ය නොවේ) සමඟ සම්බන්ධ වීම ප්‍රයෝජනවත් වේ.

FAT32 ගබඩාවේ ගබඩා කළ නොහැකි විශාල MKV ගොනු බෙදීමට අවශ්‍ය විට මම මෙය භාවිතා කරමි.


0

මෙම ආකෘතිය භාවිතා කරන්න:

ffmpeg <start time> <input file> <cut duration> <out file>

උදා. වීඩියෝවෙන් මිනිත්තු 1 කට පසු තත්පර 60 ක් කපා දමන්න

ffmpeg.exe -ss 00:01:00 -i "in file.mp4" -to 00:01:00 -c copy out.mp4

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.