Extraer parte de un video con un comando de una línea

81

Si tengo un video, normalmente avi, pero podría ser cualquiera, y quiero crear otro en el mismo formato pero solo una parte, la posición i segundos a f segundos en el video, ¿cuál es el comando de una línea para hacer? ¿esta?

Strapakowsky
fuente

Respuestas:

114

Esto se puede hacer usando mencodery ffmpeg.

Mencoder

Supongamos que desea cortar una parte a partir de las 00:00:30 en el archivo original con una duración de 5 segundos y que no debe volver a codificarse (si desea volver a codificarlo, deberá reemplazarlo copycon audio y códecs de video, para una lista de problemas de códecs de audio disponibles mencoder -oac help, para una lista de problemas de códecs de video disponibles mencoder -ovc help), entonces emite:

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

Tendrá que reemplazar orginalfiley newfilecon nombres de archivo reales, el último es el nombre del archivo que se crea para contener la parte recortada.

ffmpeg

Supongamos que desea cortar una parte a partir de las 00:00:30 en el archivo original con una duración de 5 segundos y que no debe volver a codificarse (si desea volver a codificarla, deberá reemplazarla). copycon códecs de audio y video, para obtener una lista de problemas de códecs disponibles ffmpeg -formats -E), luego emite:

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

Tendrá que reemplazar orginalfiley newfilecon nombres de archivo reales, el último es el nombre del archivo que se crea para contener la parte recortada.


Para referencia, consulte http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html y "7. Copie solo una parte del video" en http: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

NN
fuente
Lo intenté y fallé. ¿Me puede mostrar cuál sería el comando para usted con sus códecs típicos para usar para avi, flv y mpg? Enumeré los códecs pero no pude tener mucho sentido.
Strapakowsky
@strapakowsky Depende del archivo de entrada y de los códecs que haya instalado. Tal vez deberías hacer una nueva pregunta para eso y agregar información sobre qué archivo tienes y qué comando intentaste.
NN
@strapakowsky No puedo hacer que funcione con ffmpeg tampoco, pero todas las guías para cortar partes con ffmpeg sugieren que debería funcionar de alguna manera, así que lo mantengo en mi respuesta. Sin embargo, también he agregado una línea mencoder que me pongo a trabajar.
NN
Acabo de usar una versión de esto. No funciona para ti porque -ss ... -t ...debe ser antes de la -i infileopción. Vea esta respuesta para el verdadero one-liner. Casi lo tienes, pero no el pedido ...
Hendy
1
@Hendy Editado en consecuencia
NN
25

¿Necesita cortar el video con la codificación o sin el modo de codificación? Puede intentar seguir el siguiente comando.

Sinopsis: ffmpeg -i [archivo_entrada] -ss [segundos_inicio] -t [segundos_duración] [archivo_salida]

use el video mp4 FFmpeg cortado sin volver a codificar

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

utilice el video mp4 FFmpeg cortado con la codificación

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

Si desea cortar la sección desde el principio, simplemente suelte -t 00:00:10el comando

Ben Wong
fuente
0

medipack es una aplicación de línea de comandos muy simple como envoltorio ffmpeg.

puedes lograr recortar tu video usando estos 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

puede ver las opciones del 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

También puede explorar otras opciones usando 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

puede visitar https://github.com/srbcheema1/medipack y ejemplos de pago en README.

srbcheema1
fuente
-1

Para ser más precisos, puede: ABRIR MANUALMENTE el archivo en un reproductor multimedia que avance fotograma a fotograma (potplayer, mi favorito, pero MPC-HC funciona) y reproducir un archivo AVISynth con datos 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)

Luego corte con el formato de hora EXACTO:

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"

y

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"

Si desea unirse, cree un archivo txt con los archivos de video con contenidos como:

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

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

Ejecutar ffmpeg:

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

PROGRAMÁTICAMENTE Escribí un programa pero no tengo el nivel 10 para mostrarlo, lo siento

Budman1
fuente