gpt4 book ai didi

ffmpeg - 使用 ffmpeg 将 MP4 转换为具有多个字幕轨道的 m3u8

转载 作者:行者123 更新时间:2023-12-04 22:54:24 32 4
gpt4 key购买 nike

我目前正在开发一个视频管道,该管道将接收一个 mp4 文件和 n 个 webvtt 文件,并输出一个带有可选字幕轨道的 m3u8 文件,我在用 ffmpeg 找出正确的咒语时遇到了一些困难。
以下是我现在用来测试所有内容的命令,然后再将其集成到我的项目中:

ffmpeg -i sample.mp4 -i sample-vtt-en.vtt -i sample-vtt-es.vtt \
-map 0:v -map 0:a -map 1 -map 2 \
-c:v copy -c:a copy -c:s webvtt \
-metadata:s:s:0 language=en \
-metadata:s:s:1 language=es \
-start_number 0 -hls_time 10 -hls_list_size 0 -f hls \
-master_pl_name master.m3u8 \
out/sample.m3u8
运行上述内容时,出现以下错误
[webvtt @ 0x7fb6c6075a00] Exactly one WebVTT stream is needed.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:3 --
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #1:0 -> #0:2 (webvtt (native) -> webvtt (native))
Stream #2:0 -> #0:3 (webvtt (native) -> webvtt (native))
Last message repeated 1 times
此外,当我使用单个 webvtt 文件处理它时,它不会出错,但输出不太正确。最大的问题是主播放列表不包含任何字幕信息,也不识别任何轨道。 sample.m3u8 播放列表似乎确实了解字幕轨道,但它们以各种奇怪的方式拆分。
有人可以帮助我完成我想要完成的事情吗?

最佳答案

看来 HLS muxer当前不允许仅包含字幕的变体流。我不使用 HLS,所以如果我错了,或者如果你是 future 的读者,情况可能已经改变,你需要进一步调查。
次优解决方法是使用 -var_stream_map 将音频添加到变体流中。 HLS 多路复用器选项。就像是:

ffmpeg -i sample.mp4 -i sample-vtt-en.vtt -i sample-vtt-es.vtt \
-map 0:v -map 0:a -map 0:a -map 1 -map 2 \
-c:v copy -c:a copy -c:s webvtt \
-metadata:s:s:0 language=en \
-metadata:s:s:1 language=es \
-start_number 0 -hls_time 10 -hls_list_size 0 -f hls \
-var_stream_map "v:0,name:video a:0,s:0,language:eng,name:english a:1,s:1,language:spa,name:espanol"
-master_pl_name master.m3u8 \
out/sample.m3u8

关于ffmpeg - 使用 ffmpeg 将 MP4 转换为具有多个字幕轨道的 m3u8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68532847/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com