Encoding profile for PS4

0

Hi All,

Looking to see if anyone has been successful in generating a job/presets that will playback on PS4 successfully. This would be for DASH outputs. The playstation developer documentation provides very high level requirements and have been testing some of the OTT presets and not having luck. Source vido is MP4 with stereo and optionally dd51 tracks available.

Thanks for any input.

MikeE1
asked 3 years ago254 views
4 Answers
0

Hey Mike,

Matthew from the AWS Team here. Hoping my colleagues and I can help on this.

How are you trying to play the file? Over the internet or local usb?

What type of error or playback issue do you experience?

Cheers,
Matthew

AWS
answered 3 years ago
0

Hi Mike,

Not sure if you've got any further info to hand.

Meanwhile, I'll provide any info I have on this post.

https://manuals.playstation.net/document/gb/ps4/music/mp_format_m.html

The key takeaway for USB is: When using a USB storage device, your video files need to be in a folder for your PS4™ system to recognise them.

For streaming, have you been able to confirm that the content plays on any other Dash player?

AWS
answered 3 years ago
0

Hello,

Just to add my colleague also has some useful notes when testing with video playback on PS4.

What I learned so far from my testing with NexPlayer is that the PS4 doesn’t like the <SegmentTemplate> element to be present in both AdaptationSet and Representation elements at the same time. Here are few examples:

The Dash manifest produced by EMT will either be skipped (so the player will jump to end of playback right away) or with certain modifications it also crashed the player. Here is an example of such manifest:

“write segment timeline in representation” was sufficient to make the output works properly in all my tests. This by default is disabled on AWS Elemental MediaConvert.


<Period duration="PT10S" id="_PT0S_0" start="PT0S">
<BaseURL>https://url.cloudfront.net/tm/url/url/</BaseURL>
<AdaptationSet bitstreamSwitching="false" frameRate="30/1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<SegmentTemplate timescale="90000">
<SegmentTimeline>
<S d="180000" r="4" t="0"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation bandwidth="296000" codecs="avc1.64000d" height="240" id="7" width="416">
<SegmentTemplate initialization="asset_240_0_1_init.mp4" media="asset_240_0_1_$Time$.mp4">
<SegmentTimeline>
<S d="180000" r="4" t="0"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>

We manually modified the manifest to remove the <SegmentTemplate> from either location and it worked in both cases:


<Period duration="PT10S" id="_PT0S_0" start="PT0S">
<BaseURL>https://url.cloudfront.net/url/url/url/</BaseURL>
<AdaptationSet bitstreamSwitching="false" frameRate="30/1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<SegmentTemplate timescale="90000" initialization="asset_$RepresentationID$_init.mp4" media="asset_$RepresentationID$_$Time$.mp4">
<SegmentTimeline>
<S d="180000" r="4" t="0"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation bandwidth="296000" codecs="avc1.64000d" height="240" id="240_0_1" width="416"></Representation>
<Representation bandwidth="480000" codecs="avc1.64001e" height="360" id="360_0_2" width="640"></Representation>
<Representation bandwidth="640000" codecs="avc1.64001e" height="360" id="360_0_3" width="640"></Representation>
<Representation bandwidth="896000" codecs="avc1.64001e" height="360" id="360_0_4" width="640"></Representation>
<Representation bandwidth="1280000" codecs="avc1.64001e" height="360" id="360_1_5" width="640"></Representation>
<Representation bandwidth="1536000" codecs="avc1.64001f" height="540" id="540_1_6" width="960"></Representation>
<Representation bandwidth="1856000" codecs="avc1.64001f" height="540" id="540_1_7" width="960"></Representation>
</AdaptationSet>

Or:


<Period duration="PT10S" id="_PT0S_0" start="PT0S">
<BaseURL>https://url.cloudfront.net/url/url/url/</BaseURL>
<AdaptationSet bitstreamSwitching="false" frameRate="30/1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<Representation bandwidth="296000" codecs="avc1.64000d" height="240" id="7" width="416">
<SegmentTemplate timescale="90000" initialization="asset_240_0_1_init.mp4" media="asset_240_0_1_$Time$.mp4">
<SegmentTimeline>
<S d="180000" r="4" t="0"/>
</SegmentTimeline>
</SegmentTemplate>
</Representation>
<Representation b

Hoping some of the information here is useful to you or anybody else trying to achieve similar!

Edited by: MatthewH-AWS on Jun 9, 2021 2:09 AM

AWS
answered 3 years ago
0

Sorry for the delay.

We did find that the segment template was causing the issue and generated a lambda function to strip it off and create a custom copy for PS4. We also got a response from Sony indicating that they should be releasing a new SDK Framework upgrade that will fix the issue (adding support for SegmentTemplate and a few other things). WebMAF 2.8.0 "Add support for Indexed Addressing (SegmentBase) format in multi-period DASH content"

MikeE1
answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions