所以我正在尝试设置自适应流媒体,我认为问题已经解决了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
从官方文档中试试这个(这不是你需要的脚本,但你明白了):
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
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
我连续录制保存为由录制时间戳命名的单段破折号文件的视频: MP4Box-dash 10000-profile onDemand-single file-single segment-segment-segment-name filename_uufilename。mp4 用户可以指定自定义时间窗口。我希望能够合并时间框架中包含的所有mpd文件,或者从头开始生成一个mpd文件,包括指定持续时间内所有
我刚刚开始使用MPEG-DASH(从客户端),遵循c057623_ISO_IEC_23009-1_2012规范。 有人知道是否有公共库或开源来验证我收到的MPD文件吗? 我在处理xml方面没有问题。 任何帮助都将不胜感激。
我一直试图实现一个像丛一样的视频播放器,它可以按需转换任意视频文件,并在网页上用MPEG-Dash播放它。我能够使用引用实现来实现客户端播放器,因此它将动态地从服务器请求片段(在mpd文件中使用)。 但是我在实时生成这些块时遇到了一些问题。Ffmpeg允许我设置和来定义所需片段的边界,但是它们不能在播放机中正常播放,因为它们是“完整”视频文件,而不是破折号片段。 那么,我如何调整我的ffmpeg命
我知道使用,我们可以创建MPEG-DASH就绪文件,包括段和. mpd清单文件。例如,我正在尝试这个有效的命令: 但我不想分割视频,所以我们有一个更简单的版本,整个视频有多个版本,没有块。MPEG-DASH允许吗?如果是这样的话,我如何使用在不创建块的情况下完成它?
我想用多比特率创建破折号流,并为它服务。我还想使用dash.js播放器的质量选择器。如图所示:
我想用不同的比特率和分辨率对MPEG-DASH的实时流进行编码,以便实时播放。 到目前为止,我发现的一切要么只使用源分辨率(灵活,nginx rtmp模块),要么似乎只用于VOD流媒体(DASHEncoder)。 是否可以将DASHEncoder与实时输入(rtmp流)一起使用,我将如何做到这一点?如果没有,是否可以将nginx-rtmp ffmpeg用于我想做的事情?