Extraia parte de um vídeo com um comando de uma linha

Extraia parte de um vídeo com um comando de uma linha

Se eu tenho um vídeo, normalmente avi, mas pode ser qualquer um, e quero criar outro no mesmo formato mas apenas uma parte, a posiçãoeusegundos parafsegundos de vídeo, qual é o comando de uma linha para fazer isso?

Responder1

Isso pode ser feito usando mencoderou ffmpeg.

codificador

Digamos que você queira recortar uma parte começando em 00:00:30 no arquivo original com duração de 5 segundos e que ela não deve ser recodificada (se você quiser recodificar terá que substituí-la copypor áudio e codecs de vídeo, para obter uma lista de codecs de áudio disponíveis mencoder -oac help, para obter uma lista de codecs de vídeo disponíveis mencoder -ovc help), então você emite:

mencoder -ss 00:30:00 -endpos 00:00:05 -oac pcm -ovc copy originalfile -o newfile

Você terá que substituir orginalfilee newfilepelos nomes de arquivo reais, o último é o nome do arquivo que é criado para conter a parte recortada.

ffmpeg

Digamos que você queira cortar uma parte começando em 00:00:30 no arquivo original com duração de 5 segundos e que ela não deve ser recodificada (se você quiser recodificar você terá que substituir copycom codecs de áudio e vídeo, para obter uma lista de codecs disponíveis ffmpeg -formats -E), então você emite:

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

Você terá que substituir orginalfilee newfilepelos nomes de arquivo reais, sendo o último o nome do arquivo criado para conter a parte recortada.


Para referência, consultehttp://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.htmle "7. Copie apenas uma parte do vídeo" emhttp://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

Responder2

Você precisa cortar vídeo com recodificação ou sem modo de recodificação? Você pode tentar seguir o comando abaixo.

Sinopse: ffmpeg -i [arquivo_de_entrada] -ss [segundos_iniciais] -t [segundos_duração] [arquivo_saída]

use FFmpeg cut mp4 video sem recodificação

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

use FFmpeg cut mp4 video com recodificação

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4

Se você quiser cortar a seção desde o início, simplesmente solte -t 00:00:10do comando

Responder3

kit médicoé um aplicativo de linha de comando muito simples como um wrapper ffmpeg.

você pode cortar seu vídeo usando estes comandos:

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

você pode visualizar as opções do subcomando trim como:

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

você também pode explorar outras opções usandomedipack -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

você pode visitarhttps://github.com/srbcheema1/medipacke exemplos de checkout no README.

Responder4

Para ser mais preciso, você pode: Abrir MANUALMENTE o arquivo em um media player que irá avançar quadro a quadro (potplayer meu favorito, mas MPC-HC funciona) e reproduzir um arquivo AVISynth com dados como:

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)

Em seguida, corte com o formato de hora EXATO:

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"

e

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"

Caso queira participar, faça um arquivo txt com os arquivos de vídeo com conteúdos como:

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

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

Correr ffmpeg:

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

PROGRAMÁTICA Eu escrevi um programa mas não tenho nível 10 para mostrá-lo, desculpe

informação relacionada