使用一行命令提取影片的一部分

使用一行命令提取影片的一部分

如果我有一個視頻,通常是 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

您必須將orginalfile和替換newfile為實際的檔案名,後者是為保存剪切部分而建立的檔案的名稱。

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

您必須將orginalfile和替換newfile為實際的檔案名,後者是為保存剪切部分而建立的檔案的名稱。


參考見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

您可以將修剪子命令的選項查看為:

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並查看自述文件中的範例。

答案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 級來顯示它,抱歉

相關內容