使用一行命令提取视频的一部分

使用一行命令提取视频的一部分

如果我有一个视频,通常是 avi,但也可以是任何视频,我想以相同的格式创建另一个视频,但只是其中的一部分,位置秒到F几秒钟后,执行此操作的单行命令是什么?

答案1

这可以使用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

您必须用实际文件名替换orginalfilenewfile后者是为保存剪切部分而创建的文件的名称。

ffmpeg

假设您要从原始文件中剪切出从 00:00:30 开始的一段时长为 5 秒的部分,并且不应重新编码(如果您想重新编码,则必须用copy音频和视频编解码器替换,有关可用编解码器的列表,请参阅问题ffmpeg -formats -E),然后发出:

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

您必须用实际文件名替换orginalfilenewfile后者是为保存剪切部分而创建的文件的名称。


请参阅http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html和“7. 仅复制视频的一部分”http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

答案2

您是否需要使用重新编码或不使用重新编码模式来剪切视频?您可以尝试以下命令。

概要:ffmpeg -i [输入文件] -ss [起始秒数] -t [持续时间秒数] [输出文件]

使用 FFmpeg 剪切 mp4 视频无需重新编码

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

使用 FFmpeg 剪切 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从命令中删除

答案3

医疗包是一个非常简单的命令行应用程序,作为的包装器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

您可以查看 trim 子命令的选项如下:

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

您可以访问https://github.com/srbcheema1/medipack并在 README 中检查示例。

答案4

更准确地说,您可以:在逐帧前进的媒体播放器中手动打开文件(我最喜欢的是 potplayer,但是 MPC-HC 也可以)并播放包含如下数据的 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)

然后按照精确的时间格式剪切:

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"

如果您想加入,请制作一个包含视频文件的 txt 文件,内容如下:

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"

编程方面我写了一个程序,但没有 10 级来展示它,抱歉

相关内容