【发布时间】:2021-12-06 03:31:46
【问题描述】:
前言
我正在努力将视频从 4k 转换为具有多种语言的多种质量,但遇到了多种语言重叠的问题,有时质量下降,有时不同步。 (这在德语音频中不是问题,因为无论如何这是语音)
我们作为一个团队在视频/音频 + HLS 方面完全是菜鸟——我是一名前端开发人员,没有这方面的经验,如果我的问题措辞不当,敬请见谅
视频
我有 4k 格式的视频并删除了原始声音,因为我有需要叠加的英语和德语音频文件。然后我将这些文件一起放入一个 .ts 文件中,如下所示:
$ ffmpeg -i ep03-ns-4k.mp4 -i nkit-ep3-de-output.m4a -i nkit-ep3-en-output.m4a \
> -thread 0 -muxdelay 0 -y \
> -map 0:v -map 1 -map 2 -movflags +faststart -refs 1 \
> -vcodec libx264 -acodec aac -profile:v baseline -level 30 -ar 44100 -ab 64k -f mpegts out.ts
这会输出一个 4k out.ts 视频,同时播放两个音轨。
困难的部分
这是我觉得很棘手的地方,我现在需要将此单个文件转换为多个质量级别(480、720、1080、1920),并使用以下命令进行尝试:
ffmpeg -hide_banner -y -i out.ts \
-crf 20 -sc_threshold 0 -g 48 -keyint_min 48 -ar 48000 \
-map 0:v:0 -map 0:v:0 -map 0:v:0 -map 0:v:0 \
-c:v:0 h264 -profile:v:0 main -filter:v:0 "scale=w=848:h=480:force_original_aspect_ratio=decrease" -b:v:0 1400k -maxrate:v:0 1498k -bufsize:v:0 2100k \
-c:v:1 h264 -profile:v:1 main -filter:v:1 "scale=w=1280:h=720:force_original_aspect_ratio=decrease" -b:v:1 2800k -maxrate:v:1 2996k -bufsize:v:1 4200k \
-c:v:2 h264 -profile:v:2 main -filter:v:2 "scale=w=1920:h=1080:force_original_aspect_ratio=decrease" -b:v:2 5600k -maxrate:v:2 5992k -bufsize:v:2 8400k \
-c:v:3 h264 -profile:v:3 main -filter:v:3 "scale=w=3840:h=1920:force_original_aspect_ratio=decrease" -b:v:3 11200k -maxrate:v:3 11984k -bufsize:v:3 16800k \
-var_stream_map "v:0 v:1 v:2 v:3" \
-master_pl_name master.m3u8 \
-f hls -hls_time 4 -hls_playlist_type vod -hls_list_size 0 \
-hls_segment_filename "%v/episode-%03d.ts" "%v/episode.m3u8"
这创造了所需的品质,但我现在不知道这如何与音频一起工作
音频
对于音频我运行这个命令:
ffmpeg -i out.ts -threads 0 -muxdelay 0 -y -map 0:a:0 -codec copy -f segment -segment_time 4 -segment_list_size 0 -segment_list audio-de/audio-de.m3u8 -segment_format mpegts audio-de/audio-de_%d.aac
ffmpeg -i out.ts -threads 0 -muxdelay 0 -y -map 0:a:1 -codec copy -f segment -segment_time 4 -segment_list_size 0 -segment_list audio-en/audio-en.m3u8 -segment_format mpegts audio-en/audio-en_%d.aac
这会创建所需的音频片段。
问题
我意识到这是一个相当大的问题,但是我们的输入有什么问题吗?有没有一种方法可以让这件事变得更精简?
非常感谢任何答案。
【问题讨论】:
-
您有视频“A”和音频文件“B”、“C”、“D”等。您想要制作 A+B、A+C、A+D 等视频,并且每一个都具有多种分辨率,例如 1080p、720p、480p 等。我的理解是否正确?
-
@Rajib 这是正确的。我们正在尝试将音频添加到您的示例中的视频中。
标签: ffmpeg video-streaming http-live-streaming video-conversion