我正在实施离线视频流服务,因此我们的用户可以在其计算机上安装加密视频,并仅使用我们的流式应用打开它们。
所以我需要的是将新解密的视频文件直接流式传输到本地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
我希望有人可以帮助我。提前谢谢。
答案 0 :(得分:0)
我无法找到直接在视频上编码字幕的方法,这将是更好的解决方案。但是,我发现了一个VLC命令,它将显示字幕文件和流视频:
cat 0101.mp4 | vlc --sub-file en_subs/demo_0101.srt
由于两个原因,这并不理想:
.ts
格式.mp4
。我不会将此解决方案标记为已接受的答案,因为如果可以直接使用我想知道的字幕流式传输视频,并且我也相信这样的答案对于恰好阅读此页面的其他人有帮助。