[FFmpeg-devel] webm streaming

NokNok Developer developer at noknok.net
Thu Jun 14 03:25:28 CEST 2012


On 5/23/2011 5:35 PM, jianwen chen wrote:
> On Wed, May 18, 2011 at 4:49 PM, jianwen chen
> <jianwen.chen.video at gmail.com>wrote:
>
>> On Sat, May 14, 2011 at 11:43 PM, jianwen chen<
>> jianwen.chen.video at gmail.com>  wrote:
>>
>>> On Fri, May 13, 2011 at 12:01 AM, Dirk Griffioen<dirk at code-shop.com>wrote:
>>>
>>>>> Great, on the website, it mentions "A live Matroska stream is different
>>>> than
>>>>> a file, because it may have no known end (only when the client
>>>> disconnects).
>>>>> For that the Segment *must* use the "unknow" size (all 1s in the size).
>>>> The
>>>>> other option would be to concatenate Segments with known sizes one
>>>> after the
>>>>> other. This solution allows a change of codec/resolution between each
>>>>> segment which can be useful in some cases (switch between 4:3 and 16:9
>>>> in
>>>>> some TV programs for example).  "
>>>>>
>>>>> I have test concatenate segments with know size together, but it dose
>>>> not
>>>>> work. Maybe the approach I try to concatenate the segments is not
>>>> correct.
>>>>> Is there anybody can help?
>>>>>
>>>> I dont have time at the moment, but I would suggest to look at the
>>>> gstreamer patch
>>>>
>>>> there is also: http://realmike.org/
>>>>
>>>> which describes how to do it with a little python help (see the
>>>> matroska_live_filter.py script), this also might give valueable clue
>>>>
>>>
>>>   Thanks, Dirk,  I will read it. I hope I could figure it out and then I
>>> can contribute to this requirement in FFmpge.
>>>
>> I have read the code and the webpages, according to the code and the
>> Matroska specification, we know a live stream is designated by setting the
>> “Segment” size to “unknown”.  I set the size to a very large value and
>> setting the duration of the video to 100 hours as the python script does.
>> And I also delete the “SeekHead” elements ) and “Cues” elements in 2 mkv
>> files.
>>
>> cat  1split-004-largesize-
>> changeduration-removeseekhead-recues.webm
>> 2split-001-large-chaduration-rmseek-rmcue.webm>  aaa.webm
>>
>> But the file aaa.webm can only be played for the 1st segment.
>>
>> What I want to do is concatenate the 2 segments together as a file and the
>> file can be played one segment by one segment.
>> Is there anything wrong above result in this?
>>
>> The detailed info is followed:
>> File1
>> # mkvinfo 1split-004-largesize-changeduration-removeseekhead-recues.webm
>> + EBML head
>> |+ EBML version: 1
>> |+ EBML read version: 1
>> |+ EBML maximum ID length: 4
>> |+ EBML maximum size length: 8
>> |+ Doc type: webm
>> |+ Doc type version: 2
>> |+ Doc type read version: 2
>> + Segment, size unknown
>> |+ EbmlVoid (size: 4045)
>> |+ Segment information
>> | + Timecode scale: 1000000
>> | + Muxing application: libebml v1.0.0 + libmatroska v1.0.0
>> | + Writing application: mkvmerge v4.0.0 ('The Stars were mine') built on
>> Jun 17 2010 18:47:20
>> | + Duration: 2766143.488s (768:22:23.488)
>> | + Date: Wed May 11 06:02:42 2011 UTC
>> | + Segment UID: 0xfb 0x46 0x6a 0x88 0x4f 0xab 0xd3 0x94 0xa1 0xfd 0xf6
>> 0xa7 0xba 0x5d 0x60 0x35
>> |+ Segment tracks
>> | + A track
>> |  + Track number: 1
>> |  + Track UID: 1
>> |  + Track type: video
>> |  + Default flag: 0
>> |  + MinCache: 1
>> |  + Codec ID: V_VP8
>> |  + Default duration: 41.708ms (23.976 fps for a video track)
>> |  + Language: und
>> |  + Video track
>> |   + Pixel width: 640
>> |   + Pixel height: 360
>> |   + Display width: 640
>> |   + Display height: 360
>> | + A track
>> |  + Track number: 2
>> |  + Track UID: 2
>> |  + Track type: audio
>> |  + Default flag: 0
>> |  + Codec ID: A_VORBIS
>> |  + CodecPrivate, length 4189
>> |  + Language: und
>> |  + Audio track
>> |   + Sampling frequency: 44100
>> |   + Channels: 2
>> |+ EbmlVoid (size: 1081)
>> |+ Cluster
>>
>> File2
>> $ mkvinfo 2split-001-large-chaduration-rmseek-rmcue.webm
>> + EBML head
>> |+ EBML version: 1
>> |+ EBML read version: 1
>> |+ EBML maximum ID length: 4
>> |+ EBML maximum size length: 8
>> |+ Doc type: webm
>> |+ Doc type version: 2
>> |+ Doc type read version: 2
>> + Segment, size unknown
>> |+ EbmlVoid (size: 4045)
>> |+ Segment information
>> | + Timecode scale: 1000000
>> | + Muxing application: libebml v1.0.0 + libmatroska v1.0.0
>> | + Writing application: mkvmerge v4.0.0 ('The Stars were mine') built on
>> Jun 17 2010 18:47:20
>> | + Duration: 8585740.288s (2384:55:40.288)
>> | + Date: Wed May 11 06:09:38 2011 UTC
>> | + Segment UID: 0x12 0xea 0xf1 0x7f 0xb0 0x17 0x15 0x97 0xfb 0x67 0xd7
>> 0x7b 0x91 0x28 0x2d 0xa3
>> |+ Segment tracks
>> | + A track
>> |  + Track number: 1
>> |  + Track UID: 1
>> |  + Track type: video
>> |  + Default flag: 0
>> |  + MinCache: 1
>> |  + Codec ID: V_VP8
>> |  + Default duration: 41.708ms (23.976 fps for a video track)
>> |  + Language: und
>> |  + Video track
>> |   + Pixel width: 640
>> |   + Pixel height: 360
>> |   + Display width: 640
>> |   + Display height: 360
>> | + A track
>> |  + Track number: 2
>> |  + Track UID: 2
>> |  + Track type: audio
>> |  + Default flag: 0
>> |  + Codec ID: A_VORBIS
>> |  + CodecPrivate, length 4189
>> |  + Language: und
>> |  + Audio track
>> |   + Sampling frequency: 44100
>> |   + Channels: 2
>> |+ EbmlVoid (size: 1081)
>> |+ Cluster
>>
>>
>> By the way, I find, if I just
>>   cat 1file 2 file>  test.webm
>> without any modification of the original mkv files, the test webm file can
>> be played well by vlc, but can not played correctly by Mplayer.
>>
>>
> Finally, I figure it out. I will write a detailed instruction about how to
> generate the webm streaming file, such as how to enable webm file http
> streaming.
> Thanks for all the kind help.
> By the way, how about provide a patch to enable this feature to ffmpeg?
>
>
> Jianwen
>

Anything ever come of this?  Im definitely interested in a solution to 
do this.....

Shawn


More information about the ffmpeg-devel mailing list