Может ли ffmpeg извлекать данные скрытых титров - PullRequest
11 голосов
/ 03 июля 2010

В настоящее время я использую ffmpeg для конвертирования видео в различные форматы в файлы FLV.Один запрос также поступил, и он должен получить информацию о субтитрах из файла.Кто-нибудь имеет какой-либо опыт с этим или знает, что это может быть сделано.Я не вижу вариантов для этого, но подумал, что я попрошу и посмотрю.

Ответы [ 6 ]

15 голосов
/ 26 августа 2016

Если кто-то, как и я, попадает в этот поток, вот более подробное объяснение команды ffmpeg, которая работала для меня.

ffmpeg -f lavfi -i movie=input.ts[out+subcc]  -map 0:1  output.srt

Кажется, что для источника требуется жесткое требованиеmpegts формат (расширение файла .ts).В противном случае фильтр lavfi не работает.Спецификация out+subcc заставляет ffmpeg обрабатывать закрытые титры (которые встроены в данные кадра) как отдельный поток.Позже -map 0:1 заставляет ffmpeg отображать только этот поток и отбрасывать все остальное.Результат сохраняется в output.srt.В зависимости от вашего ввода отображение может отличаться.Один простой способ выяснить сопоставление скрытых титров - это запустить команду ffprobe, например,

$ 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

Stream Subtitle: eia_608 имеет «index» 0:1, так что это то, что должно отображаться.1018 *

Немногие напутствия, порядок аргументов имеет значение для ffmpeg, -f lavfi должно идти до -i move=..., иначе спецификация не будет распознана.Также эта функция появилась довольно недавно, поэтому дважды проверьте версию ffmpeg и обновите ее при необходимости.

8 голосов
/ 05 января 2015

Субтитры имеют 2 формата
1) Американский стандарт ATSC (поддержка есть в ffmpeg)
2) ISDB Японский стандарт (поддержка пока отсутствует в ffmpeg)

Вы можете использовать следующую команду

ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map s output.srt

Эта вещь была недавно разработана, поэтому, пожалуйста, проверьте вашу версию FFmpeg.

2 голосов
/ 08 августа 2012

Для получения только субтитров, а не мета-мусора, я обнаружил, что

ffmpeg -i input.mov -an -vn -bsf:s mov2textsub -scodec copy -f rawvideo sub.txt 

работает лучше всего для меня.

1 голос
/ 05 ноября 2011

Если заголовок включен как отдельный поток, то извлечь его (относительно) просто:

ffmpeg -i input.mov -an -vn -c:s copy -f rawvideo -map 0:s sub.txt

Если он "записан" в видеофайле, то вам, вероятно, не повезло, но я бы это чаще использовал для субтитров, чем для субтитров.

0 голосов
/ 04 июня 2019

Это зависит от того, с каким типом входного файла вы работаете.В моем случае у меня были файлы Final Cut Pro MOV Master с треком Siaarist (.scc) в стиле eia-608.Хотя ffmpeg может извлекать вложенные закрытые титры из файлов транспортного потока mpeg2, он не может работать с данными eia-608 на отдельной дорожке.

ccextractor должен работать без проблем, но MOV вращается вокруг продуктов Apple, а иногдапереходит с полным пренебрежением к третьим лицам ... как таковой, вы должны нормализовать файлы MOV, прежде чем иметь дело с ними ... простой ffmpeg -i my.mov -c copy -map 0 out.mov должен добиться цели.Тогда встроенная в C4xtractor сборка MP4Box должна быть в состоянии передать ей дорожку eia и декодировать ее во что-то пригодное для использования ... как vtt.

Источник: https://trac.ffmpeg.org/ticket/7694

0 голосов
/ 02 сентября 2012

Субтитры не являются отдельными потоками, и они не сгорают в изображении, они чередуются на линиях сканирования на изображении - это странная американская идея, которая в действительности не используется где-либо еще.Хотя вы можете купить DVD с такими субтитрами, обычно люди за пределами США не видят субтитры и могут даже не знать, что их в файле есть.

CCExtractor может извлечь эту информацию из VOB с помощьюглядя на метаданные TS: http://ccextractor.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...