如果我有一个视频,通常是avi格式,但也可能是其他格式,我想创建另一个同样格式的视频,只包含原视频中从第i秒到第f秒的部分,那么如何用一行命令来实现这个功能?
mencoder
或 ffmpeg
来完成。
假设你想要从原始文件的00:00:30开始剪切一个长度为5秒的部分,并且不需要重新编码(如果你想要重新编码,你需要将 copy
替换为音频和视频编解码器,可以通过输入 mencoder -oac help
查看可用的音频编解码器列表,通过输入 mencoder -ovc help
查看可用的视频编解码器列表),然后你可以执行以下命令:
mencoder -ss 00:30:00 -endpos 00:00:05 -oac pcm -ovc copy originalfile -o newfile
orginalfile
和newfile
,后者是创建用于保存剪切部分的文件的名称。
假设你想从原始文件的00:00:30开始剪切一个长度为5秒的部分,并且不希望重新编码(如果你想重新编码,你需要用音频和视频编解码器替换copy
,要获取可用编解码器的列表,请输入ffmpeg -formats -E
),然后你可以执行以下命令:
ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile
orginalfile
和newfile
,后者是创建用于保存剪切部分的文件的名称。
参考http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html和http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/中的"7. Copy Only A Part Of Video"。
Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4
Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4
-t 00:00:10
。-c copy
得到了更准确的切割结果。 - joemedipack是一个非常简单的命令行应用程序,作为ffmpeg
的包装器。
您可以使用以下命令来裁剪视频:
medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4
srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]
positional arguments:
inp input video file ex: input.mp4
optional arguments:
-h, --help show this help message and exit
-s START, --start START
start time for cuting in format hh:mm:ss or mm:ss
-e END, --end END end time for cuting in format hh:mm:ss or mm:ss
-t TIME, --time TIME clip duration in format hh:mm:ss or mm:ss
-o OUTPUT, --output OUTPUT
medipack -h
来探索其他选项。srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...
positional arguments:
{trim,crop,resize,extract}
optional arguments:
-h, --help show this help message and exit
-v, --version Display version number
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)
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"
-ss ... -t ...
需要放在-i infile
选项之前。请参考这个答案获取真正的一行命令。你差点就成功了,只是顺序不对... - Hendy-t
标志必须放在-i
选项之后。来源:http://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video - Marco Sullaavconv
。如果您希望从开始点到视频结束,那么不需要使用-t选项。 - Antonios Hadjigeorgalismplayer-2:1.2.1-1ubuntu1.1
无法正确生成剪辑,但是ffmpeg-7:2.8.15-0ubuntu0.16.04.1
完美运行:谢谢! - Tomislav Nakic-Alfirevicffmpeg -ss 00:00:30 -i orginalfile.mp4 -t 00:00:05 -vcodec copy -acodec copy newfile.mp4
- Salma Gomaa