una subtitulos programa poner pelicula para online descargado como automaticamente ffmpeg mp4 subtitle srt

subtitulos - Use ffmpeg para agregar subtítulos de texto



como poner subtitulos a una pelicula online (9)

Ejemplo simple:

videoSource=test.mp4 videoEncoded=test2.mp4 videoSubtitle=test.srt videoFontSize=24 ffmpeg -i "$videoSource" -vf subtitles="$videoSubtitle":force_style=''Fontsize="$videoFontSize"'' "$videoEncoded"

Reemplazar solo las variables de linux

Estoy tratando de agregar subtítulos de texto a un contenedor .mp4 usando ffmpeg:

ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4

Cuando intento ejecutar esta línea, me da un error:

Un número de mapas de flujo debe coincidir con el número de flujos de salida.

Si trato de cambiar el mp4 a mkv (aunque mp4 admite subtítulos de texto), así:

ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv

Correlaciona correctamente las transmisiones, pero da un error:

Codificador (id. De códec 94210) no encontrado para la secuencia de salida # 0.2

Cuando lanzo

ffmpeg -codecs

Puedo ver que el códec de Srt es compatible como decodificador y codificador, sin embargo, no estoy seguro de qué se utiliza para la codificación de subpuntos mp4 y mkv, y si necesito activarlo o compilarlo por separado.


El contenedor MKV admite códecs de audio y video. Prácticamente cualquier cosa y también admite subtítulos y menús de DVD. De modo que puede copiar códecs de video de entrada a video de salida con contenedor MKV con subtítulos. Primero debes convertir SRT a formato de subtítulos ASS

ffmpeg -i input.srt input.ass

e incrustar subtítulos ASS en video

ffmpeg -i input.mp4 -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

También trabajó con el archivo VMW.

ffmpeg -i input.wmv -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

ver la página wiki Comparación de formatos de contenedores


Está intentando cambiar los subtítulos como una secuencia de subtítulos. Es fácil, pero se usa una sintaxis diferente para MP4 (o M4V) y MKV. En ambos casos debe especificar códec de audio y video, o simplemente copiar secuencia si solo desea agregar subtítulos.

MP4:

ffmpeg -i input.mp4 -f srt -i input.srt / -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy / -c:s mov_text output.mp4

MKV:

ffmpeg -i input.mp4 -f srt -i input.srt / -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy / -c:s srt output.mkv


Esta es la razón por la que mkv es un contenedor tan bueno, especialmente ahora que está maduro:

mkvmerge -o output.mkv video.mp4 subtitle.srt


Intenté usar MP4Box para esta tarea, pero no podía manejar el M4V con el que estaba lidiando. Tuve éxito incrustando el SRT como subtítulos suaves con ffmpeg con la siguiente línea de comando:

ffmpeg -i input.m4v -i input.srt -vcodec copy -acodec copy -scodec copy -map 0:0 -map 0:1 -map 1:0 -y output.mkv

Al igual que usted, tuve que usar un archivo de salida MKV; no pude crear un archivo M4V.


Proporcionaré una respuesta simple y general que funcione con cualquier número de audios y subtítulos srt y respete los metadatos que pueden incluir el contenedor mkv . Por lo tanto, incluso agregará las imágenes que el matroska puede incluir como archivos adjuntos (aunque no es otro tipo de AFAIK) y los convertirá en pistas; no podrás mirar pero estarán allí (puedes demultiplicarlos). Ah, y si el mkv tiene capítulos el mp4 también.

ffmpeg -i <mkv-input> -c copy -map 0 -c:s mov_text <mp4-output>

Como puede ver, todo se trata del -map 0 , que le dice a FFmpeg que agregue todas las pistas, que incluyen metadatos, capítulos, archivos adjuntos, etc. Si hay una "pista" no reconocida ( mkv permite adjuntar cualquier tipo de archivo) , terminará con un error.

Puede crear un lote simple mkv2mp4.bat si generalmente hace esto para crear un mp4 con el mismo nombre que el mkv . Sería mejor con el control de errores, un nombre de salida diferente, etc., pongo a entender el punto.

@ffmpeg -i %1 -c copy -map 0 -c:s mov_text "%~n1.mp4"

Ahora puedes simplemente correr

mkv2mp4 "Video with subtitles etc.mkv"

Y creará "Video con subtítulos, etc.mp4" con el máximo de información incluida.


Utilice la biblioteca libass (asegúrese de que su instalación ffmpeg tenga la biblioteca en la configuración --enable-libass ).

Primero convierta los subtítulos a formato .ass :

ffmpeg -i subtitles.srt subtitles.ass

Luego agrégalos usando un filtro de video:

ffmpeg -i mymovie.mp4 -vf ass=subtitles.ass mysubtitledmovie.mp4


ffmpeg admite el codificador de subtítulos mov_text que es el único soportado en un contenedor MP4 y reproducible por iTunes, Quicktime, iOS, etc.

Tu línea leería:

ffmpeg -i input.mp4 -i input.srt -map 0:0 -map 0:1 -map 1:0 -c:s mov_text output.mp4


ffmpeg -i infile.mp4 -i infile.srt -c copy -c:s mov_text outfile.mp4

-vf subtitles=infile.srt no funcionará con la -c copy

El orden de -c copy -c:s mov_text es importante. Usted le está diciendo a FFmpeg:

  1. Video: copia, Audio: copia, Subtítulo: copia
  2. Subtítulo: mov_text

Si los invierte, le está diciendo a FFmpeg:

  1. Subtítulo: mov_text
  2. Video: copia, Audio: copia, Subtítulo: copia

Alternativamente, puede usar -c:v copy -c:a copy -c:s mov_text en cualquier orden.