4

所以我正在尝试设置自适应流媒体,我认为已经完成了 80-90% 的问题。现在我摄取我的源视频,将其转码为 5 种分辨率,每种分辨率具有 3 种比特率(低、中、高),然后我将所有这些视频分成 5 秒的块,以便用户始终能够获得最佳观看效果。现在我需要生成/创建我的 MPD 清单文件,我很难弄清楚如何。几乎每个人都只是说要使用 MP4Box,但他们的许可证对我的项目来说太严格了。

当我分割我的视频时,是否有使用 FFMPEG 生成 MPD 文件的方法?或者可能生成一个 HLS,然后我可以将其转换为 MPD 清单?任何信息都会很棒,这是我当前的 FFMPEG 命令(工作)

请注意,$变量是设置输入文件、比特率和比例的 bash 脚本的输入。

/usr/bin/ffmpeg \
  -re \
  -i $1 \
  -an \
  -c:v libx264 \
  -b:v $7 \
  -b:a 196k \
  -strict -2 \
  -movflags faststart \
  -pix_fmt yuv420p \
  -vf "scale='$4:trunc(ow/a/2)*2'" \
  -flags -global_header \
  -map 0 \
  -f segment \
  -segment_time 5 \
  -segment_list test.m3u8 \
  -segment_format mpegts \
  $2%05d.mp4
4

3 回答 3

2
ffmpeg \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_360.hdr \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_171.hdr \
  -c copy \
  -map 0 -map 1 \
  -f webm_dash_manifest -live 1 \
    -adaptation_sets "id=0,streams=0 id=1,streams=1" \
    -chunk_start_index 1 \
    -chunk_duration_ms 2000 \
    -time_shift_buffer_depth 7200 \
    -minimum_update_period 7200 \
  /var/www/webm_live/glass_live_manifest.mpd
于 2017-06-12T08:11:45.140 回答
0

从官方文档中试试这个(它不完全是你需要的脚本,但你明白了):

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
于 2020-10-09T14:00:48.870 回答
-2

测试代码:

ffmpeg -i video.mp4 -vcodec copy -acodec copy output.mpd
于 2022-03-02T18:58:58.980 回答