Log in

View Full Version : HowTo create DVD-like Menus in MP4 - MP4Menu


Pages : 1 2 [3]

Kurtnoise
18th February 2006, 22:48
EDIT:Ups, made a mistake. You have to add numbers in the BIFS text to the DEF Image1 ... XDELETE Image1. You cant use the same DEF more than once. This way it should work if Osmo4 would support transparent png.
You mean something like that ?

AT 18000 {
INSERT AT Group2.children[0]
DEF Image1 Shape {
appearance Appearance {
texture ImageTexture {
url [od:50]
}
}
geometry Bitmap {}
}
}
AT 25900 {
XDELETE Image1
}

AT 26000 {
INSERT AT Group2.children[0]
DEF Image2 Shape {
appearance Appearance {
texture ImageTexture {
url [od:60]
}
}
geometry Bitmap {}
}
}
AT 30900 {
XDELETE Image2
}

Drachir
18th February 2006, 22:58
Yes, this way :). I am sure I could be done better - but it is working.

Kurtnoise
18th February 2006, 23:16
ok...did you try with IBM player ? It should work on Linux. It's java-based.

Drachir
18th February 2006, 23:42
It seems IBM don't support XDELETE. The old png don't get removed.
http://img110.imageshack.us/img110/9877/ibmsubpng5kn.th.jpg (http://img110.imageshack.us/my.php?image=ibmsubpng5kn.jpg)

Drachir
19th February 2006, 09:30
If you use something like this it will work with the IBM player too.

InitialObjectDescriptor {
objectDescriptorID 1
sceneProfileLevelIndication 255
graphicsProfileLevelIndication 255
ODProfileLevelIndication 255
esDescr [
ES_Descriptor {
ES_ID 1
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 2
streamType 3
decSpecificInfo BIFSv2Config {
isCommandStream true
pixelMetric true
pixelWidth 608
pixelHeight 448
}
}
}
ES_Descriptor {
ES_ID 2
OCR_ES_ID 1
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 1
streamType 1
}
}
]
}
DEF Group1 OrderedGroup {
children [
# Sound2D {
# source DEF Audio AudioSource {
# url [od:20]
# }
# }
Shape {
appearance Appearance {
texture DEF Video MovieTexture {
url [od:10]
}
}
geometry Bitmap {}
}
DEF Group2 OrderedGroup {
children [
Shape {
appearance Appearance {
texture DEF Image ImageTexture {
url []
}
}
geometry Bitmap {}
}
]
}
]
}
AT 0 {
UPDATE OD [
ObjectDescriptor {
objectDescriptorID 10
esDescr [
ES_Descriptor {
ES_ID 3
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt.mp4#3"
streamFormat "MP4"
}
}
]
}
# ObjectDescriptor {
# objectDescriptorID 20
# esDescr [
# ES_Descriptor {
# ES_ID 4
# OCR_ES_ID 1
# muxInfo MuxInfo {
# fileName "audio.aac"
# }
# }
# ]
# }
ObjectDescriptor {
objectDescriptorID 30
esDescr [
ES_Descriptor {
ES_ID 5
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track4g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 40
esDescr [
ES_Descriptor {
ES_ID 6
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track5g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 50
esDescr [
ES_Descriptor {
ES_ID 7
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track6g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 60
esDescr [
ES_Descriptor {
ES_ID 8
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track7g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 70
esDescr [
ES_Descriptor {
ES_ID 9
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track8g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 80
esDescr [
ES_Descriptor {
ES_ID 10
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track9g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 90
esDescr [
ES_Descriptor {
ES_ID 11
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track10g.png"
}
}
]
}
ObjectDescriptor {
objectDescriptorID 100
esDescr [
ES_Descriptor {
ES_ID 12
OCR_ES_ID 1
muxInfo MuxInfo {
fileName "Sample_xmt_track11g.png"
}
}
]
}
# ObjectDescriptor {
# objectDescriptorID 110
# esDescr [
# ES_Descriptor {
# ES_ID 13
# OCR_ES_ID 1
# muxInfo MuxInfo {
# fileName "Sample_xmt_track12g.png"
# }
# }
# ]
# }
]
}

AT 5000 {
REPLACE Image.url BY [od:30]
}
AT 9000 {
REPLACE Image.url BY []
}

AT 11000 {
REPLACE Image.url BY [od:40]
}
AT 15000 {
REPLACE Image.url BY []
}

AT 18000 {
REPLACE Image.url BY [od:50]
}
AT 23000 {
REPLACE Image.url BY []
}

AT 26000 {
REPLACE Image.url BY [od:60]
}
AT 30000 {
REPLACE Image.url BY []
}

AT 31000 {
REPLACE Image.url BY [od:70]
}
AT 33500 {
REPLACE Image.url BY []
}

AT 34000 {
REPLACE Image.url BY [od:80]
}
AT 38000 {
REPLACE Image.url BY []
}

AT 38500 {
REPLACE Image.url BY [od:90]
}
AT 46000 {
REPLACE Image.url BY []
}

AT 46500 {
REPLACE Image.url BY [od:100]
}
AT 50000 {
REPLACE Image.url BY []
}



EDIT: IBM don't like the empty url. No time between the displayed png. I am not sure if it is right to use a empty url. But it work with Osmo4.
EDIT2: ISO/IEC 14772 - ImageTextureWhen the url field contains no values ([]), texturing is disabled So it should be usable.

bond
19th February 2006, 12:27
which compatibility reasons ? compatibility with 99.9% of the mp4 players

but hey, bifs is nice, thats why i wrote my scripts after all :)

Kurtnoise
19th February 2006, 16:30
here is a new sample (http://kurtnoise.free.fr/Sample_2.mp4) (with non transparent pictures) which works with Osmo4.

Question : can we add a position syntax for texture DEF Image ImageTexture ? I tried but mp4box returns an error...

Drachir
19th February 2006, 17:58
here is a new sample (http://kurtnoise.free.fr/Sample_2.mp4) (with non transparent pictures) which works with Osmo4.


If you use Gimp to create the transparent PNG, the decoder used by Osmo4 can handle it.


Question : can we add a position syntax for texture DEF Image ImageTexture ? I tried but mp4box returns an error...

Try something like this:


DEF Group2 OrderedGroup {
children [
Transform2D {
translation 0 -190
children [
Shape {
appearance Appearance {
texture DEF Image ImageTexture {}

}
geometry Bitmap {}

}
]
}
]
}

bond
20th February 2006, 13:09
kurtnoise, are you doing this png storage for being able to remux vobsubs without ocr into mp4?
if so, it might be better to push jeanlf to add vobsub muxing support to mp4box

not that i want you to stop what you are doing, but i dont really get the sense of it :D

Kurtnoise
20th February 2006, 13:34
kurtnoise, are you doing this png storage for being able to remux vobsubs without ocr into mp4?

:p not exactly but I would like yeah...Basically, I'm learning how to work bt/xmt files with mp4.

Drachir
20th February 2006, 14:20
:p not exactly but I would like yeah...Basically, I'm learning how to work bt/xmt files with mp4.

I would take a look into the GPAC Regression Test Suite (http://gpac.sourceforge.net/downloads/gpac_regression_tests-0.2.3.tar.gz). There are some sample.

PrincepSenatus
22nd February 2006, 01:27
A little off topic, but mp4 menus can be see only by using OSMO GPAC player or using that IBM Player, if i am not mistaken.

If this is the case, it's too fewer option. Why not make a filter, like VSFilter ( for subs ) but for mp4 menus, so we could use any kind of player ( like mpc or wmp ) and use the mp4 menus?

:thanks:

bond
22nd February 2006, 19:16
there are more systems players than those two

eg via enviviotv you can play menus in windows media player, quicktime and realplayer (check my "profile 2" of mp4menu)

SeeMoreDigital
22nd February 2006, 20:01
As a matter of interest.....

Would it be possible to configure "chapters" to point to a specified video track number?

bond
22nd February 2006, 20:08
you mean playing different video streams behind each other, accessable by something like "chapters"

if so, yes

SeeMoreDigital
22nd February 2006, 20:38
you mean playing different video streams behind each other, accessable by something like "chapters"

if so, yesThis would be great for creating music video compilations!

Would be able to name the individual video streams/chapters and have them appear (and selectable) via Media Player Classic's "Jump to..." option?


Cheers

bond
22nd February 2006, 21:25
you would need a systems player to handle systems content. propably you can setup such a file and play it in mpc via enviviotv

SeeMoreDigital
22nd February 2006, 21:42
Bummer... never mind!

pyrates
3rd September 2006, 04:51
is there going to be an updated version of this anytime soon? It's been like 3 years already :)

bond
3rd September 2006, 18:59
is there going to be an updated version of this anytime soon? It's been like 3 years already :)no. i will not update it unless someone wants to eg write a gui based on it

this doesnt mean that noone else can update it ;)

SeeMoreDigital
3rd September 2006, 19:36
Much as I love the idea of being able to navigate menu structures placed within the MP4 container I can't help feeling the idea wont take off until we have software players that support the implementation :(

pyrates
4th September 2006, 02:13
no. i will not update it unless someone wants to eg write a gui based on it

this doesnt mean that noone else can update it ;)

Well I would try it if someone did ;) I'm also not a programmer unfortunately. Are there any players that support the mp4 menus though?

Drachir
4th September 2006, 07:40
Are there any players that support the mp4 menus though?

There is the software player Osmo4 from http://gpac.sourceforge.net/ .

pyrates
4th September 2006, 09:05
There is the software player Osmo4 from http://gpac.sourceforge.net/ .

Unfortunately that player there is no binary version available. You gotta compile it from source. Which means end users won't probably get it then. And that just hurts the mp4menu program.

Drachir
4th September 2006, 09:23
Unfortunately that player there is no binary version available. You gotta compile it from source. Which means end users won't probably get it then. And that just hurts the mp4menu program.

True, but you will have the same problem with XviD,x264 or FFDshow binary.

You can find a Windows binary(GPAC Framework) here: http://ffdshow.faireal.net/mirror/gpac/

bond
4th September 2006, 18:35
enviviotv is a plugin useable in every directshow player (mpc, wmp, bsplayer, zoomplayer...), realplayer and quicktime as discussed already in this thread

pyrates
4th September 2006, 21:04
Too bad it isn't free. Can't seem to find a download for it anywhere.

nickolasemp
26th November 2006, 13:07
Has anyone seen the new tool from Kurtnoise? It's a very good GUI. Haven't tested it yet. I have just downloaded it. Since I have not bought a new DVD, I can't convert anything right now. It's right here (http://kurtnoise.free.fr/index.php?dir=misc/&file=MP4MenuGui-0.1.1.4.7z).

Merci beaucoup Kurtnoise! T'es vraiment ingιnieux..!

Edit: I have just seen that it doesn't work. It stucks somewhere (sth about track 4).

pyrates
27th November 2006, 00:17
Has anyone seen the new tool from Kurtnoise? It's a very good GUI. Haven't tested it yet. I have just downloaded it. Since I have not bought a new DVD, I can't convert anything right now. It's right here (http://kurtnoise.free.fr/index.php?dir=misc/&file=MP4MenuGui-0.1.1.4.7z).

Merci beaucoup Kurtnoise! T'es vraiment ingιnieux..!

Edit: I have just seen that it doesn't work. It stucks somewhere (sth about track 4).

Here's the thread on it:

link (http://forum.doom9.org/showthread.php?t=117574)

iamhelp
13th July 2007, 07:38
Sorry "_"
Could you help me about file Mp4 sub?
How to creat bt file?
And bt file can show with "rtsp" play on webpage,right?

bond
13th July 2007, 18:57
And bt file can show with "rtsp" play on webpage,right?no

do you still want to use mp4sub?

Drachir
15th July 2007, 11:09
Sorry "_"
Could you help me about file Mp4 sub?
How to creat bt file?
And bt file can show with "rtsp" play on webpage,right?

You can crate a mp4 file from the BIFS Text(*.bt) and hint(-hint -ocr) this file with MP4Box. Now a streamingserver like DSS is able to stream the BIFS track. If it is only a simple scene description like MP4Sub there should be no problem in streaming with DSS.

You can find here some information how to use osmozilla or GPAX:
http://gpac.sourceforge.net/doc_embed.php

What do you want to do?
If you only need a audio/video file with subtittle, crate a 3gp file with 3GPP Timed Text / MPEG-4 Streaming Text, and hint this file for streaming with DSS( http://developer.apple.com/opensource/server/streaming/index.html )

You can use osmozilla/GPAX embedded into a website to play this stream. Didn't tested QuickTime until now, but local playback of 3gp files with 3GPP Timed Text / MPEG-4 Streaming Text is working with QuickTme.

VLC/vlc-mozillaplugin don't support the streaming(rtp) of 3GPP Timed Text / MPEG-4 Streaming Text,AFAIK.

Inventive Software
9th April 2008, 23:25
Sorry to gravedig, but where in the MPEG-4 parts is the menu system defined? I'm looking to automate menu conversion from DVD's IFO and VOB files to MP4 and what I think is BIFS. The only thing I could see scuppering it is there's a lot of motion video in most DVDs. :)

Drachir
10th April 2008, 11:28
There isn't any part which only deffines something like the DVD menu system.
In MPEG-4 there is a system to handle media objects, the the Object Descriptor Framework(MPEG-4 "Systems" ISO/IEC 14496-1).
BIFS(Binary Format For Scene)(MPEG-4 "Scene Description and Application Engine" ISO/IEC 14496-11) defines how the media objects have to be presented, and if wanted how to interact with this objects.
Based on this you are able to create a DVD like menu.

To implant chapters you could use the segmentDescriptor to divide a media object into parts.
Take a look how this is done by MP4MenuGUI:
http://forum.doom9.org/showthread.php?t=117574
Or take a look in the BIFS text script from Bond:
http://sourceforge.net/projects/mp4menu

Also from interest could be the GPAC Regression Test suite:
http://gpac.sourceforge.net/auth_suite.php