在VLC中使用多个字幕流编码流式视频

时间:2018-01-06 15:33:42

标签: encoding ffmpeg streaming vlc subtitle

我正在实施离线视频流服务,因此我们的用户可以在其计算机上安装加密视频,并仅使用我们的流式应用打开它们。

所以我需要的是将新解密的视频文件直接流式传输到本地VLC客户端,这样我就不必将其保存在磁盘上。最小的工作示例是:

cat my_video.mp4 | vlc -

但这仅显示视频和音频曲目,没有字幕。

我想知道是否有一种方法可以对视频进行编码,这样就可以使用3个音轨和3个字幕轨道。 我也会答应解释说这是不可能的,为什么不可能。

以下更多详情:

我有3个音轨和3个字幕轨道,我正在使用FFMPEG (视频的原始格式为mp4,采用h264编码)

目前,我可以生成可流式.mp4个文件,thanks to this answer,还可以生成.ts个文件,这些文件将显示视频和3个音频选项,但不会显示字幕。我正在使用的命令是:

video_name=demo_0101.mp4
sub_name=demo_0101.srt
output=0101.mp4 # Or `.ts`

ffmpeg\
  -i en_raw/$video_name -i pt_raw/$video_name -i es_raw/$video_name\
  -i en_subs/$sub_name\
  -i pt_subs/$sub_name\
  -i es_subs/$sub_name\
  -map 2:v\
  -map 0:a:0 -map 1:a:0 -map 2:a:0\
  -map 3:s -map 4:s -map 5:s\
  -c:v libx264 -crf 22\
  -movflags faststart\ # (This line is only necessary for .mp4)
  -c:a:0 aac -c:a:1 aac -c:a:2 aac\
  -c:s:0 mov_text -c:s:1 mov_text -c:s:2 mov_text\
  $output

问题是:使用.ts格式无法识别字幕(根本不显示),并且在使用.mp4 VLC时报告错误:

  

未识别的编解码器:   VLC无法识别音频或视频编解码器

请注意,不流式传输.mp4版本适用于所有音频和字幕,即:

vlc my_video.mp4

如果有人想知道我打算从命令行中选择要使用VLC选项播放哪个字幕和音频:--audio-track 1 --sub-track 0

我希望有人可以帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我无法找到直接在视频上编码字幕的方法,这将是更好的解决方案。但是,我发现了一个VLC命令,它将显示字幕文件和流视频:

cat 0101.mp4 | vlc --sub-file en_subs/demo_0101.srt

由于两个原因,这并不理想:

  1. 仅适用于.ts格式.mp4
  2. 这需要我将原始字幕文件保存在用户磁盘上。
  3. 我不会将此解决方案标记为已接受的答案,因为如果可以直接使用我想知道的字幕流式传输视频,并且我也相信这样的答案对于恰好阅读此页面的其他人有帮助。