Извлеките закрытые титры VTT из потока с помощью ffmpeg

Я могу извлечь информацию о закрытых титрах из файла mp4, используя ffmpeg v. 3.4.7, таким образом:

ffmpeg -f lavfi -i movie="sample.mp4[out+subcc]" -map 0:1 -c:s webvtt /tmp/output.vtt

Файл был получен путем захвата живого потока HLS, содержащего скрытые субтитры. Я хотел бы извлечь закрытые титры непосредственно из потока, а не после сохранения видео в файле. Я пробовал разные вещи, в том числе:

ffmpeg -f lavfi -i movie="http://example.com/stream.m3u8[out+subcc]" -map 0:0 -c:s webvtt /tmp/output.vtt

Но фильтр фильмов не распознает URL-адрес, хотя документация по фильтру ffmpeg говорит, что имя файла для кинофильтра не обязательно является файлом; это также может быть устройство или поток, доступ к которому осуществляется через какой-либо протокол:

[Parsed_movie_0 @ 0x264ad80] Не удалось выполнить avformat_open_input 'http'
[lavfi @ 0x2647e80] Ошибка инициализации фильтра 'movie' с аргументами 'http://example.com/stream.m3u8'
movie=http://example .com/stream.m3u8[out+subcc]: нет такого файла или каталога

Когда я захватываю видео из потока следующим образом:

ffmpeg -i http://example.com/stream.m3u8 /tmp/output.mp4

ffmpeg сообщает, что поток содержит скрытые титры (откуда их взял захваченный видеофайл sample.mp4):

Поток #0:0: Видео: h264 (высокий) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 480x270 [SAR 1:1 DAR 16:9], скрытые титры , 14,99 к/с, 14,99 тбр, 90к тбн, 29,97 тбк

Можно ли сделать это? Спасибо за любые указатели.


person EK0    schedule 26.06.2020    source источник


Ответы (1)


фильтр фильмов может принимать URL-адреса, которые вам просто нужно экранировать: согласно https://ffmpeg.org/ffmpeg-filters.html#Notes-on-filtergraph-escaping

эта команда должна работать

ffmpeg -f lavfi -i movie="http\\\://example.com/stream.m3u8[out+subcc]" -map 0:0 -c:s webvtt /tmp/output.vtt

person Alex B    schedule 15.04.2021
comment
Только что проверил это, и это работает. Большое спасибо! - person EK0; 19.04.2021