如何使用ffmpeg dash muxer创建多比特率破折号内容

问题描述 投票:3回答:2

ffmpeg documentation说我们可以使用dash muxer只用一个命令创建短划线段和清单文件,例如:

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完成。

ffmpeg mpeg-dash
2个回答
3
投票

好的,这就是我解决问题的方法。以下命令对于实现伪实时短划线内容非常有用(当您希望将现有视频文件视为实时视频时),但同样的方法也可用于按需视频。首先,我们将输入视频文件(sample.divx)转换为另一个,为短划线流视频文件做好准备 - 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以实时方式处理输入视频,这对伪实时流是有用的。


0
投票

在这个answerdocumentation的帮助下,以下是在单一命令中执行此操作的方法:

ffmpeg -i $inputFile \
  -map 0:v:0 -map 0:a\?:0 -map 0:v:0 -map 0:a\?:0 -map 0:v:0 -map 0:a\?:0 -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 350k  -c:v:0 libx264 -filter:v:0 "scale=320:-1"  \
  -b:v:1 1000k -c:v:1 libx264 -filter:v:1 "scale=640:-1"  \
  -b:v:2 3000k -c:v:2 libx264 -filter:v:2 "scale=1280:-1" \
  -b:v:3 245k  -c:v:3 libvpx-vp9 -filter:v:3 "scale=320:-1"  \
  -b:v:4 700k  -c:v:4 libvpx-vp9 -filter:v:4 "scale=640:-1"  \
  -b:v:5 2100k -c:v:5 libvpx-vp9 -filter:v:5 "scale=1280:-1"  \
  -use_timeline 1 -use_template 1 -window_size 6 -adaptation_sets "id=0,streams=v  id=1,streams=a" \
  -hls_playlist true -f dash output/output.mpd
© www.soinside.com 2019 - 2024. All rights reserved.