Actualmente estoy usando ffmpeg para convertir videos en varios formatos a archivos flv. También ha surgido una solicitud que consiste en obtener información del subtítulo cerrado del archivo también. ¿Alguien tiene alguna experiencia con esto o sabe que incluso se puede hacer? No veo ninguna opción para eso pero pensé en preguntar y ver.Puede ffmpeg extraer datos de subtítulos
Respuesta
Si el título se incluyen como una corriente separada, luego extraerlos es (relativamente) sencillo:
ffmpeg -i input.mov -an -vn -c:s copy -f rawvideo -map 0:s sub.txt
si es "quemado en" en el archivo de vídeo, entonces usted está probablemente fuera de suerte, pero yo sería más común para los subtítulos que los subtítulos.
Para obtener sólo los subtítulos y no cualquier basura meta, me he dado cuenta que
ffmpeg -i input.mov -an -vn -bsf:s mov2textsub -scodec copy -f rawvideo sub.txt
funciona mejor para mí.
Los subtítulos no son flujos separados, ni se graban en la imagen, se entrelazan en las líneas de escaneo EN LA imagen: esta es una extraña idea estadounidense, que en realidad no se usa en ninguna otra parte. Aunque puede comprar DVD que tiene este tipo de subtítulos, generalmente las personas fuera de los Estados Unidos no pueden ver los subtítulos y ni siquiera saben que hay algunos en el archivo.
CCExtractor puede extraer esta información de VOB examinado los metadatos TS: http://ccextractor.sourceforge.net/
parece que para las transmisiones ATSC los subtítulos están de alguna manera "contenidos pero separados" y no son imágenes, por lo que son extraíbles, consulte la respuesta de Anshul. Ahora bien, si ffmpeg puede "superponerlos" de forma adecuada y grabarlos, no estoy seguro, pero al menos es posible extraerlos ... – rogerdpack
subtítulos son de 2 formato
1) ATSC estándar americano (apoyo está allí en ffmpeg)
2) japonés ISDB (soporte no está todavía allí en ffmpeg)
puede utilizar el comando
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map s output.srt
siguiente
Esto se ha desarrollado recientemente, así que echa un vistazo a tu versión de ffmpeg.
¡Gracias por desarrollar este parche! – tmm1
Si alguien, como yo, termina en este hilo, aquí hay una explicación un poco más detallada sobre el comando ffmpeg
que funcionó para mí.
ffmpeg -f lavfi -i movie=input.ts[out+subcc] -map 0:1 output.srt
No parece un requisito duro en la fuente sea de mpegts
formato (extensión de archivo .ts
). De lo contrario, el filtro lavfi
no parece funcionar. La especificación out+subcc
obliga a ffmpeg a tratar los subtítulos (que están incrustados en los datos de trama) como flujo separado. Más tarde, -map 0:1
hace que ffmpeg
correlacione solo esa secuencia y descarte todo lo demás. El resultado se guarda en output.srt
. Dependiendo de su entrada, la asignación puede ser diferente. Una manera fácil de averiguar la asignación de los subtítulos es ejecutar comandos ffprobe
, al igual que
$ ffprobe -f lavfi -i movie=input.ts[out+subcc]
ffprobe version N-79653-g4efd3ec Copyright (c) 2007-2016 the FFmpeg developers
libavutil 55. 22.101/55. 22.101
libavcodec 57. 38.100/57. 38.100
libavformat 57. 34.103/57. 34.103
libavdevice 57. 0.101/57. 0.101
libavfilter 6. 44.100/6. 44.100
libswscale 4. 1.100/4. 1.100
libswresample 2. 0.101/2. 0.101
libpostproc 54. 0.100/54. 0.100
[h264 @ 0x7fe869826200] Increasing reorder buffer to 1
Input #0, lavfi, from 'movie=input.ts[out+subcc]':
Duration: N/A, start: 1562.233011, bitrate: N/A
Stream #0:0: Video: rawvideo (I420/0x30323449), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 90k fps, 30 tbr, 90k tbn
Stream #0:1: Subtitle: eia_608
corriente Subtitle: eia_608
tiene "índice" 0:1
, de manera que es lo que debería ser asignada.
Pocas notas de separación, el orden de los argumentos importa para ffmpeg
, -f lavfi
debe ir antes de -i move=...
, de lo contrario, la especificación no será reconocida. Además, esta característica es bastante reciente, por lo que debe verificar su versión ffmpeg
y actualizarla si es necesario.
- 1. uso ffmpeg para añadir texto subtítulos
- 2. Cómo desactivar los subtítulos de decodificación en ffmpeg
- 3. Extraer valores RGB de un marco AVFrame (FFMPEG) en C++
- 4. ¿Qué tipo de datos puede extraer de un UUID?
- 5. ¿Puede ffmpeg mostrar una barra de progreso?
- 6. Subtítulos para AVPlayer/MPMoviePlayerController
- 7. subtítulos SRT al analizar
- 8. FFMPEG No se puede mostrar la duración de un video
- 9. subtítulos reStructuredText que no respeten
- 10. FFmpeg no puede decodificar H264 stream/frame data
- 11. cómo usar ffmpeg
- 12. Subtítulos de tabla de posicionamiento en LaTeX
- 13. FFmpeg -ss comportamiento extraño
- 14. ¿Cómo extraer datos de un PDF?
- 15. Extraer datos del modelo de Enterprise Architect
- 16. Cómo extraer datos del diagrama de matplotlib
- 17. ¿Puede ffmpeg convertir audio de PCM sin formato a WAV?
- 18. Cómo mostrar subtítulos dentro de MPMoviePlayerController
- 19. Reproductor nativo de Android con subtítulos
- 20. hacer una captura de subtítulos Delphi TPanel
- 21. Funciona ffmpeg el archivo de video completo para extraer la imagen
- 22. ffmpeg extracción de fotograma clave
- 23. no se puede ejecutar ffmpeg como subproceso en Ruby
- 24. FFMPEG - Cómo extraer marcos como imágenes al eliminar marcos duplicados secuencialmente
- 25. ¿Cómo puedo extraer datos EXIF usando PerlMagick?
- 26. Cómo extraer datos .gpx con python
- 27. Android MediaPlayer/VideoView con subtítulos (SRT)
- 28. ffmpeg av_seek_frame
- 29. GStreamer vs FFmpeg
- 30. ffmpeg y opengl
Gracias Heshy. Veré sobre darle una oportunidad. El proyecto ha avanzado ahora, pero tomaré nota de esto cuando vuelva a aparecer. – spinon