Wowza Community

MPEG DASH encoding with ffmpeg - artefacts on seek

Since a couple of days i try to get the “perfect” settings for my chain-encoder i am actually writing. It gonna be used to transcode user generated content into a VOD streaming Site.

So far everything works. RTMP, HLS and DASH. I just have one problem left: If i seek in DASH mode (regardless of the used Player) i get artefacts till it reaches the next Keyframe.

Regardless what settings i tried so far - it is still the same.

first i get ffprobe informations to determine the correct framerate - in this case lets assume 25

#crf attempt

ffmpeg -r 25/1 -i “/data/cephfs/input.mkv” -y -acodec libfaac -ab 128k -ac 2 -crf 23 -vcodec libx264 -x264opts ‘keyint=25:min-keyint=25:scenecut=-1’ -preset veryslow -flags +cgop -movflags faststart -threads 16 -r 25/1 -bufsize 1000k -f mp4 -keyint_min 25 -g 25 -sc_threshold 0 ‘/data/cephfs/output.mp4’

another attempt: (multipass)

ffmpeg -r 25/1 -i “/data/cephfs/input.mkv” -y -an -b:v 1250k -minrate 500k -maxrate 2000k -pass 1 -vcodec libx264 -x264opts ‘keyint=25:min-keyint=25:scenecut=-1’ -preset veryslow -tune zerolatency -flags +cgop -movflags faststart -threads 16 -r 25/1 -f mp4 -keyint_min 25 -g 25 -sc_threshold 0 -passlogfile /data/cephfs/log_file /dev/null

pass2:

ffmpeg -r 25/1 -i “/data/cephfs/input.mkv” -y -an -b:v 1250k -minrate 500k -maxrate 2000k -pass 2 -vcodec libx264 -x264opts ‘keyint=25:min-keyint=25:scenecut=-1’ -preset veryslow -tune zerolatency -flags +cgop -movflags faststart -threads 16 -r 25/1 -bufsize 2000k -f mp4 -keyint_min 25 -g 25 -sc_threshold 0 -passlogfile /data/cephfs/log_file ‘/data/cephfs/v360p.mp4’

those files works fine with any other streaming method

any suggestions ?

is it just me thinking, that the support here is not so good? also the email replies take ages. and i payed a lot for licenses ! somehow i start to regret buying perpetual

can anybody give me a ffmpeg command which produces a mp4 working with wowza DASH? or is the DASH support still buggy?

Pass1

/usr/local/bin/ffmpeg -i “/data/cephfs/upload.avi” -i ‘/data/cephfs/audio.m4a’ -map 0:0 -map 1:0 -c:a copy -y -threads 16 -keyint_min 24 -sc_threshold 0 -vcodec libx264 -profile:v high -level 4.2 -preset ultrafast -r 24 -b:v 1197k -g 24 -x264opts ‘keyint=24:min-keyint=24:scenecut=0:no-scenecut:vbv-maxrate=2394:vbv-bufsize=4788’ -movflags ‘frag_keyframe+empty_moov’ -f mp4 -pass 1 -passlogfile /data/cephfs/log_file /dev/null

Pass 2

/usr/local/bin/ffmpeg -i “/data/cephfs/upload.avi” -i ‘/data/cephfs/audio.m4a’ -map 0:0 -map 1:0 -c:a copy -y -threads 16 -keyint_min 24 -sc_threshold 0 -vcodec libx264 -profile:v high -level 4.2 -preset ultrafast -r 24 -b:v 1197k -g 24 -x264opts ‘keyint=24:min-keyint=24:scenecut=0:no-scenecut:vbv-maxrate=2394:vbv-bufsize=4788’ -movflags ‘frag_keyframe+empty_moov’ -f mp4 -pass 2 -passlogfile 264opts ‘keyint=24:min-keyint=24:scenecut=0:no-scenecut:vbv-maxrate=2394:vbv-bufsize=4788’ -movflags ‘frag_keyframe+empty_moov’ -f mp4 -pass 1 -passlogfile ‘/data/cephfs/out.mp4’

with this settings at least the bitdash player can seek a little - but also works not flawlessly

Hi,

Did you raise a ticket for this issue with support?

If not I suggest emailing support@wowza.com and refer to this post url.

Also mention what player you are using specifically.

MPEG-DASH is more strict than the other protocols. The alignment has to be

accurate, and those particular files might not necessarily be. However, I did try

playing the bigbuckbunny.smil and I could both play and seek without seeing artifacts

using the Shaka player built into the Manager.

Daren

i tried the mp4 files you mention in your tutorial: https://www.wowza.com/docs/how-to-do-adaptive-bitrate-streaming

came out - those files also not work with DASH correctly:

my smil:

<?xml version="1.0" encoding="UTF-8"?>

<video src=“bigbuckbunny_450.mp4” width=“320” system-bitrate=“483341” title=">

<video src=“bigbuckbunny_750.mp4” width=“476” system-bitrate=“783141” title=">

i don’t understand why you choose 44100 as bitrate for the audio, which clearly seems to be KHZ -anyhow those bitrate values come from script and taken from ffprobe

it is not even playing… when i now wget the manifest you can see:

https://xxxxxxxxxxxxxxxxxxxxxxxxxx/smil:vid.smil/manifest_w1420876468.mpd

so the segment timeline … shouldn’t we not see here some different values?

im desperately try to solve this - can anyone share some light into this ?