我在这个问题上停留了几天,找不到一个完美的工作示例。
这是我目前的方法:
步骤1。
ffmpeg -re -i sample.mp4 -threads 0 -y \
-map 0:1 -vn -acodec aac -strict -2 -ar 48000 -ac 2 \
-f segment -segment_time 4 -segment_format mpegts Dash\audio_%d.ts \
-map 0:0 -vcodec libx264 -vprofile baseline -preset veryfast \
-s 640x360 -vb 512k -bufsize 1024k -maxrate 512k -level 31 -keyint_min 25 -g 25 \
-sc_threshold 0 -an -bsf h264_mp4toannexb -flags -global_header \
-f segment -segment_time 4 -segment_format mpegts Dash\video_%d.ts
第2步。
mp4box -add Dash\audio_%d.ts Output\audio_%d.ts.mp4
mp4box -add Dash\video_%d.ts Output\video_%d.ts.mp4
步骤 3。
mp4box -dash-ctx Output\dash-live.txt -dash 4000 \
-rap -ast-offset 12 -no-frags-default -bs-switching no \
-min-buffer 4000 -url-template -time-shift 1800 \
-segment-name live_$RepresentationID$_ -out Output\live \
-dynamic -mpd-refresh 2 -subsegs-per-sidx -1 Output\audio_%d.ts.mp4:id=audio Output\video_%d.ts.mp4:id=video
我播放了使用 Dash.js 生成的 live.mpd,播放器在实际播放之前暂停了很长时间,每次获取新的 m4s 文件时都会卡顿。
我的命令有什么问题吗?或者,如果能提供任何其他好的例子,那就太好了。