我可以使用 ffmpeg v. 3.4.7 从 mp4 文件中提取隐藏式字幕信息,因此:
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] 使用参数 'http://example.com/stream.m3u8' 初始化过滤器'movie' 时出错
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 fps, 14.99 tbr, 90k tbn, 29.97 tbc
是否有可能做到这一点?感谢您的任何指示。