使用FFMPEG为MPEG-DASH自适应流生成MPD文件。

时间:2017-05-25 15:27:25

标签: php ffmpeg hls mpeg-dash ffmpeg-php

所以我试图设置自适应流媒体,我认为80-90%的问题已经完成。现在我摄取我的源视频,将其转码为5个分辨率,每个分辨率有3个比特率(低,中,高),然后我将所有这些视频分成5个第二个块,这样用户总能获得最佳观看效果。现在我处于需要生成/创建MPD清单文件的位置,我很难搞清楚如何。几乎每个人都说使用MP4Box,但他们的许可证对我的项目来说限制太多。

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

-note $变量是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

2 个答案:

答案 0 :(得分:0)



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




答案 1 :(得分:0)

the official docs(不完全是您需要的脚本,但您知道了)中尝试一下:

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