Forum

Errors when using ABR DASH

Corey 2015-08-29 02:49:54 UTC in Nimble Streamer

I received an error as below, and the video would freeze. I have no idea how to fix this issue.
[tmux] E: catched DashTransmuxingException while processing file='xxx/video.mp4' chunk_name='v_0_858624.m4s' msg='wrong segment index'

I setup nimble in my Macbook and use FFMPEG to generate 3 different resolution videos ( 1280*720, 1138*640, 640*360) by commands as below.
ffmpeg -y -i Original.mp4 -c:a libvo_aacenc -ac 2 -ab 128k -c:v libx264 -r 30 -g 30 -b:v 1500k -maxrate 1500k -bufsize 1000k -vf "scale=-1:720" _720p.mp4
ffmpeg -y -i Original.mp4 -c:a libvo_aacenc -ac 2 -ab 128k -c:v libx264 -r 30 -g 30 -b:v 1000k -maxrate 1000k -bufsize 800k -vf "scale=-1:640" _640p.mp4
ffmpeg -y -i Original.mp4 -c:a libvo_aacenc -ac 2 -ab 128k -c:v libx264 -r 30 -g 30 -b:v 400k -maxrate 400k -bufsize 400k -vf "scale=-1:360" _360p.mp4

SMIL
<?xml version="1.0" encoding="UTF-8"?>
<smil title="">
<body>
<switch>
<video src="xFaire_720p.mp4" systemLanguage="eng">
<param name="videoBitrate" value="1500000" valuetype="data"></param>
<param name="audioBitrate" value="44100" valuetype="data"></param>
</video>
<video src="xFaire_640p.mp4" systemLanguage="eng">
<param name="videoBitrate" value="1000000" valuetype="data"></param>
<param name="audioBitrate" value="44100" valuetype="data"></param>
</video>
<video src="xFaire_360p.mp4" systemLanguage="eng">
<param name="videoBitrate" value="400000" valuetype="data"></param>
<param name="audioBitrate" value="44100" valuetype="data"></param>
</video>
</switch>
</body>
</smil>

Corey 2015-08-29 03:03:04 UTC 

looks like the issue can be solved by disabling to use b-frame

Yury Udovichenko 2015-08-29 04:29:45 UTC 

Hi,

Thanks for sharing the solution.

Alex Pokotilo 2015-08-30 08:28:35 UTC 

ABR force you to have key frames in the same time for all your renditions so all streams should be key-frame aligned.
With ffmpeg you should use keyint and min-keyint params to force keyframe insertion every N frames. For example with 25 fps you can force to insert keyframe every 1 second settings keyint=25 and
min-keyint=25
see http://superuser.com/questions/908280/what-is-the-correct-way-to-fix-keyframes-in-ffmpeg-for-dash
http://stackoverflow.com/questions/14117757/how-to-control-key-frame-generation-of-ffmpeg

Corey 2015-09-03 08:29:32 UTC 

Thanks Alex for the solution. As mentioned in the reference link, -g argument might be deprecated. Instead, we can use keyint and min-keyint to control keyframe insertion just like Alex said. And so far it works well.
Forget about disabling to use b-frame I said before.

Alex Pokotilo 2015-09-03 08:31:53 UTC 

Thanks for reporting

Post a reply


Post a new question

Categories:

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the Privacy Policy. If you want to know more or withdraw your consent to all or some of the cookies, please refer to the Privacy Policy.
By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to the use of cookies.