gpt4 book ai didi

ffmpeg - 如何使用 ffmpeg dash muxer 创建多比特率 dash 内容

转载 作者:行者123 更新时间:2023-12-04 14:08:54 28 4
gpt4 key购买 nike

ffmpeg documentation说我们可以使用 dash muxer 来创建 dash 段和 list 文件,只需要一个命令,比如:

ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264
-b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline
-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0
-b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1
-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a"
-f dash /path/to/out.mpd

假设我有一些高清视频文件,我希望通过 DASH 以不同的比特率提供该视频,以便客户端可以根据当前的网络状况自动选择备选方案。所有这些都可以用一个 ffmpeg 完成吗?命令,就像上面给出的?

我知道有一个使用 ffmpeg + mp4box 的解决方案,但我很感兴趣是否可以使用 ffmpeg只要。

最佳答案

好的,这就是我解决问题的方法。以下命令对于实现伪实时短划线内容很有用(当您想要流式传输现有视频文件时,就好像它是实时视频一样),但同样的方法也可用于点播视频。首先,我们将一个输入视频文件 (sample.divx) 转换为另一个为 dash 流视频文件做好充分准备的文件 - sample_dash.mp4:

ffmpeg -y -i sample.divx ^
-c:v libx264 -x264opts "keyint=24:min-keyint=24:no-scenecut" -r 24 ^
-c:a aac -b:a 128k ^
-bf 1 -b_strategy 0 -sc_threshold 0 -pix_fmt yuv420p ^
-map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 ^
-b:v:0 250k -filter:v:0 "scale=-2:240" -profile:v:0 baseline ^
-b:v:1 750k -filter:v:1 "scale=-2:480" -profile:v:1 main ^
-b:v:2 1500k -filter:v:2 "scale=-2:720" -profile:v:2 high ^
sample_dash.mp4

我是说 sample_dash.mp4 准备充分,因为它以适合破折号的格式编码 - H264/ACC,并且它包含多个 (3) 具有不同质量(基线、主要、高)的视频流。 ffmpeg dash muxer 会将这 3 个视频流转换为相关的替代视频质量 deash 段文件。方法如下:
ffmpeg -y -re -i sample_dash.mp4 ^
-map 0 ^
-use_timeline 1 -use_template 1 -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" ^
-f dash sample.mpd
-re flags 告诉 ffmpeg 以实时方式处理输入视频,这对于伪直播流非常有用。

关于ffmpeg - 如何使用 ffmpeg dash muxer 创建多比特率 dash 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256686/

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