Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > MPEG-4 AVC / H.264

Reply
 
Thread Tools Search this Thread Display Modes
Old 8th July 2014, 10:23   #1  |  Link
tal.aloni
Registered User
 
Join Date: Sep 2008
Posts: 496
[GUIDE] Encoding 3D Frame Sequential MP4 for the PlayStation 3 and Sony Bravia W8

It's a little known fact that the Sony PlayStation 3 and the Sony Bravia W8 series can play 3D Frame Sequential video files from USB storage,
Example for such files (Created by Sony):
E320103DSizzle_Trailer-3D720.MP4
Uncharted3DrakesDeception_3DAnnouncementTrailer-3D.MP4

And another example created by me:
BigBuckBunny-720p-3D-AAC5.1.mp4

And another example I created specifically for the Sony W8:
BigBuckBunny-1080p-3D-DD5.1.mp4

This post is about creating such files.

Requirements (Sony W8):
1. Container: MP4 works best (brand: mp42 or MSNV, must have the audio/video intearleaved, the temporal offset between the first audio and video sample data of an interleave unit should be kept to a minimum), MKV works but may has some issues (muxer related?).
2. Video: H264, 1280x720 or 1920x1080 (High@L4.2 was tested successfully), must contain frame_packing_arrangement SEI messages to point which frame goes to which eye.
3. Audio: AAC-LC, AC3 or DTS. (2.0 or 5.1)

Requirements (PlayStation 3):
1. Container: Must be MP4 conforming to the MSNV brand specs (IEC/TS 62592) and must includes customized 3D descriptors.
2. Video: H264, 1280x720 (23.976/29.97/30 fps per eye), High@L4.0 (or below), must contain frame_packing_arrangement SEI messages to point which frame goes to which eye.
3. Audio: Must be AAC-LC (2.0 or 5.1) for MSNV compatibility.
4. The MP4 file must be placed inside a "VIDEO" directory within the root folder. (the disk must be formatted to FAT32)

Step 1 - Creating the 3D frame-sequential H264 video stream:
You must use x264 r2434 or later. (thanks goes to the x264 team!)
Command line example:
Code:
"%x264Path%" "%input%" --crf %crf% --level 4.0 --ref %ref% --b-pyramid normal --mixed-refs --no-fast-pskip --bframes 8 --b-adapt 2 --weightb --direct auto --deblock -3:-3 --subme 9 --trellis 2 --aq-strength 0.8 --partitions p8x8,b8x8,i4x4,i8x8 --8x8dct --vbv-bufsize 31250 --vbv-maxrate 25000 --me esa --merange 32 --rc-lookahead 100 --threads auto --sar 1:1 --fps 48000/1001 --frame-packing 5 --output "%output%" --aud --slices 4
Step 2 - Encoding the audio:
I've used the latest version of the free Nero AAC Encoder, you must choose the AAC-LC profile (You'll need to demux the AAC from the m4a container after the encode)
(You can use BeHappy if you need a GUI, make sure to select AAC-LC and update the NeroAacEncoder binary)

Step 3 - Muxing the video and audio:
Grab a copy of MP4Maker, a multiplexer I wrote specifically to suit the needs of the PlayStation 3 / Sony W8,

To create MSNV-compliant MP4 with the customized 3D descriptors necessary for the PlayStation 3D detection:
Code:
MP4Maker /mux /profile=MSNV3D /input=<h264-path> /input=<aac-path> /output=<mp4-path>
(output > 4GB will not be 100% MSNV compliant but will likely to work anyway, the PS3 is limited to that size anyway (FAT32))

or, if you're only interested in the Sony W8 support:
Code:
MP4Maker /mux /input=<h264-path> /input=<audio-path> /output=<mp4-path>
Happy encoding!

Last edited by tal.aloni; 6th August 2021 at 16:36. Reason: Updated URL
tal.aloni is offline   Reply With Quote
Old 8th July 2014, 13:37   #2  |  Link
Kurtnoise
Swallowed in the Sea
 
Kurtnoise's Avatar
 
Join Date: Oct 2002
Location: Aix-en-Provence, France
Posts: 5,196
Nice work, thank you !!!

But why reinvent the wheel concerning the muxer ? There are already some MP4 muxers which are able to create such files like MP4Box from GPAC Framework or L-SMASH one...
Kurtnoise is offline   Reply With Quote
Old 8th July 2014, 15:08   #3  |  Link
tal.aloni
Registered User
 
Join Date: Sep 2008
Posts: 496
You welcome,
Kurtnoise, not all MP4 files are created equal, and there are various MP4 brands and standards.

This has started as a reverse engineering effort (read about it here and here)
In the beginning I had an MP4 that the PS3 could detect as 3D and I tried to figure out why existing muxers (MP4Box, MP4Creator) would break 3D detection upon remux.

Eventually it turned out that the PS3 requires that the MP4 will follow the MSNV brand specs (IEC/TS 62592) in addition to some undocumented customizations, no existing open-source muxer supported any of that.

In addition, when working with both MP4Box and MP4Creator I encountered some unrelated bugs, (e.g. MP4Creator will misdetect an AAC with 5.1 channels as 2.0), try to feed an MP4 with a descriptor containing an incorrect number of audio channels to the PS3 and it will refuse to play it in 3D.

p.s. So I wrote my custom tool to modify various aspects of the MP4 file, and by the time I realized what the PS3 / W8 require, it was just a single step from transforming my tool into an MP4 multiplexer.
(in other words, at that point in time, it would have taken me much longer to discard my previous work and start adapting an existing muxer, not to mention fixing existing bugs)

Last edited by tal.aloni; 9th July 2014 at 07:26.
tal.aloni is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 22:29.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.