mov unfinished

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

mov unfinished

Overkill
I'm developing an embedded camera that records
video in .MOV format. I have two qt muxers,

ffmux_mov

qtmux

I'm using this pipeline

gst-launch my_v4lsrc num-buffers=300 ! \
  video/x-raw-yuv,format=\(fourcc\)I420,width=680,height=480,framerate=\(fraction\)30/1
! \
  my_h264encoder \
    name=video \
  alsasrc num-buffers=10 ! \
  audio/x-raw-int,rate=16000,channels=2,width=16,depth=16 ! \
  queue name=audio \
  ffmux_mov name=mux ! \
  filesink location=test_ffmux_mov.mov \
  video.src ! video/x-h264,width=640,height=480,framerate=\(fraction\)30/1
! mux.video_0 \
  audio.src ! mux.audio_0

The .mov produced is working flawlessly.
But because the media used for recording is an SD card,
the user can remove while the camera is still in recording.
I saw that the qtmux plugin has the feature to save some temporary
data in order to try to recover the .mov.
But if I use the qtmux plugin in my pipline (exactly the same,
just swap ffmux_mov with qtmux and use _00 on the pad name)
won't produce a working .mov at all. Or to be hoest the .mov is
playing with VLC and QT+Perian, but not in QT alone as Apple produces.

I'd like to know how to fix the unfinished .mov file or how to
use qtmux in order to have a working .mov.

Thak You

Overkill

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Stefan Sauer

Hi,

Am 24.06.2010 16:16, schrieb Overkill:

> I'm developing an embedded camera that records
> video in .MOV format. I have two qt muxers,
>
> ffmux_mov
>
> qtmux
>
> I'm using this pipeline
>
> gst-launch my_v4lsrc num-buffers=300 ! \
>   video/x-raw-yuv,format=\(fourcc\)I420,width=680,height=480,framerate=\(fraction\)30/1
> ! \
>   my_h264encoder \
>     name=video \
>   alsasrc num-buffers=10 ! \
>   audio/x-raw-int,rate=16000,channels=2,width=16,depth=16 ! \
>   queue name=audio \
>   ffmux_mov name=mux ! \
>   filesink location=test_ffmux_mov.mov \
>   video.src ! video/x-h264,width=640,height=480,framerate=\(fraction\)30/1
> ! mux.video_0 \
>   audio.src ! mux.audio_0
>
> The .mov produced is working flawlessly.
> But because the media used for recording is an SD card,
> the user can remove while the camera is still in recording.
> I saw that the qtmux plugin has the feature to save some temporary
> data in order to try to recover the .mov.
> But if I use the qtmux plugin in my pipline (exactly the same,
> just swap ffmux_mov with qtmux and use _00 on the pad name)
> won't produce a working .mov at all. Or to be hoest the .mov is
> playing with VLC and QT+Perian, but not in QT alone as Apple produces.
>
> I'd like to know how to fix the unfinished .mov file or how to
> use qtmux in order to have a working .mov.

Maybe file a bug with that info. Someone can compare the files produced by both
variants and cehck what is the difference. You could also run qtdump or
something simmilar and see if you can spot something obvious.

Stefan


>
> Thak You
>
> Overkill
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Stefan Sauer
In reply to this post by Overkill
Am 24.06.2010 16:16, schrieb Overkill:

> I'm developing an embedded camera that records
> video in .MOV format. I have two qt muxers,
>
> ffmux_mov
>
> qtmux
>
> I'm using this pipeline
>
> gst-launch my_v4lsrc num-buffers=300 ! \
>   video/x-raw-yuv,format=\(fourcc\)I420,width=680,height=480,framerate=\(fraction\)30/1
> ! \
>   my_h264encoder \
>     name=video \
>   alsasrc num-buffers=10 ! \
>   audio/x-raw-int,rate=16000,channels=2,width=16,depth=16 ! \
>   queue name=audio \
>   ffmux_mov name=mux ! \
>   filesink location=test_ffmux_mov.mov \
>   video.src ! video/x-h264,width=640,height=480,framerate=\(fraction\)30/1
> ! mux.video_0 \
>   audio.src ! mux.audio_0
>
> The .mov produced is working flawlessly.
> But because the media used for recording is an SD card,
> the user can remove while the camera is still in recording.
> I saw that the qtmux plugin has the feature to save some temporary
> data in order to try to recover the .mov.
> But if I use the qtmux plugin in my pipline (exactly the same,
> just swap ffmux_mov with qtmux and use _00 on the pad name)
> won't produce a working .mov at all. Or to be hoest the .mov is
> playing with VLC and QT+Perian, but not in QT alone as Apple produces.
>
> I'd like to know how to fix the unfinished .mov file or how to
> use qtmux in order to have a working .mov.

Please also see the thread "Mov file generated does not play on QT player" and
check that your h264encoder output the proper format (it might has an issue as
normaly you would not need a caps filter between encoder and muxer).

Stefan

>
> Thak You
>
> Overkill
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Sudarshan Bisht
I guess it may be the way qtmux writes the header info . If it writes the header info at the end of the file then there should be a proper way to close the file i.e. by sending EOS event . Because if closing of file is done without sending EOS event then qtmux may not write the header info to the file.
 
And ffmux_mov is writing the header info at the beginning of the file so that does not require the notification of the EOS event.
 
 


 
On Sat, Jun 26, 2010 at 1:02 AM, Stefan Kost <[hidden email]> wrote:
Am 24.06.2010 16:16, schrieb Overkill:
> I'm developing an embedded camera that records
> video in .MOV format. I have two qt muxers,
>
> ffmux_mov
>
> qtmux
>
> I'm using this pipeline
>
> gst-launch my_v4lsrc num-buffers=300 ! \
>   video/x-raw-yuv,format=\(fourcc\)I420,width=680,height=480,framerate=\(fraction\)30/1
> ! \
>   my_h264encoder \
>     name=video \
>   alsasrc num-buffers=10 ! \
>   audio/x-raw-int,rate=16000,channels=2,width=16,depth=16 ! \
>   queue name=audio \
>   ffmux_mov name=mux ! \
>   filesink location=test_ffmux_mov.mov \
>   video.src ! video/x-h264,width=640,height=480,framerate=\(fraction\)30/1
> ! mux.video_0 \
>   audio.src ! mux.audio_0
>
> The .mov produced is working flawlessly.
> But because the media used for recording is an SD card,
> the user can remove while the camera is still in recording.
> I saw that the qtmux plugin has the feature to save some temporary
> data in order to try to recover the .mov.
> But if I use the qtmux plugin in my pipline (exactly the same,
> just swap ffmux_mov with qtmux and use _00 on the pad name)
> won't produce a working .mov at all. Or to be hoest the .mov is
> playing with VLC and QT+Perian, but not in QT alone as Apple produces.
>
> I'd like to know how to fix the unfinished .mov file or how to
> use qtmux in order to have a working .mov.

Please also see the thread "Mov file generated does not play on QT player" and
check that your h264encoder output the proper format (it might has an issue as
normaly you would not need a caps filter between encoder and muxer).

Stefan

>
> Thak You
>
> Overkill
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



--
Regards,

Sudarshan Bisht

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Overkill
In reply to this post by Overkill
I made an .avi file wit my system then I extract the
media inside of it and made two .mov, one with
qtmux and one with ffmux_mov.
This is for have the same media content and only
the containter different.

You may find the two files here:

http://ivanonline.xoom.it/RB_06280941_ff.mov

http://ivanonline.xoom.it/RB_06280941_qt.mov

You may wget them :)

The one produced with ffmux is perfect.
The file with qtmux is not playable with QuickTime
and VLC is able to play it.

I try a binary compare but the differencies seems
too much for me.... Also using qtdump can't
tells me more. I'm not an expert.

I'd like to use qtmux because the feature to
recover an .mov if the file is unfinished.
I've tried this and the file is working under VLC.

But if the file produced by qtmux is not playble
in QuickTime, so by now I can't use it...

I need help in order to understand what's wrong
and try to fix it.

Thank you!!!

Overkill!!!

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Irfan Shaikh-2
RE: [gst-devel] mov unfinished

I made an .avi file wit my system then I extract the
media inside of it and made two .mov, one with
qtmux and one with ffmux_mov.
This is for have the same media content and only
the containter different.

You may find the two files here:

http://ivanonline.xoom.it/RB_06280941_ff.mov

http://ivanonline.xoom.it/RB_06280941_qt.mov

You may wget them :)

The one produced with ffmux is perfect.
The file with qtmux is not playable with QuickTime
and VLC is able to play it.

I try a binary compare but the differencies seems
too much for me.... Also using qtdump can't
tells me more. I'm not an expert.

I'd like to use qtmux because the feature to
recover an .mov if the file is unfinished.
I've tried this and the file is working under VLC.

But if the file produced by qtmux is not playble
in QuickTime, so by now I can't use it...

I need help in order to understand what's wrong
and try to fix it.

Thank you!!!

Overkill!!!

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Thiago Sousa Santos-2
In reply to this post by Overkill


On Mon, Jun 28, 2010 at 9:07 AM, Overkill <[hidden email]> wrote:
I made an .avi file wit my system then I extract the
media inside of it and made two .mov, one with
qtmux and one with ffmux_mov.
This is for have the same media content and only
the containter different.

What pipeline is used?
 

You may find the two files here:

http://ivanonline.xoom.it/RB_06280941_ff.mov

http://ivanonline.xoom.it/RB_06280941_qt.mov

You may wget them :)

The one produced with ffmux is perfect.
The file with qtmux is not playable with QuickTime
and VLC is able to play it.

I try a binary compare but the differencies seems
too much for me.... Also using qtdump can't
tells me more. I'm not an expert.

Taking a look at qtdump + hexdump I can see that the 2 files have different 'avcC' atoms (among other smaller differences). This makes me wonder why, maybe we can figure out from your pipelines.
 

I'd like to use qtmux because the feature to
recover an .mov if the file is unfinished.
I've tried this and the file is working under VLC.

But if the file produced by qtmux is not playble
in QuickTime, so by now I can't use it...

I need help in order to understand what's wrong
and try to fix it.

Thank you!!!

Overkill!!!

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



--
Thiago Sousa Santos

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Overkill
In reply to this post by Overkill
> What pipeline is used?

-------------------------------------------------
To record the .avi file

gst-launch -v my_embedded_v4lsrc ! \
  my_embedded_264enc width=720 height=400 \
    name=video \
  alsasrc ! \
  audio/x-raw-int,rate=16000,channels=2,width=16,depth=16,signed=true ! \
  queue name=audio \
  avimux name=mux ! \
  filesink location=test.avi \
  video.src ! mux.video_0 \
  audio.src ! mux.audio_0

-------------------------------------------------
To made the mov with ffmux_mov,
i made an avi_to_ff.sh
Call avi_to_ff.sh <avifile>

#!/bin/sh

of=`ls "$1" | sed s/.avi/_ff.mov/`

echo "playing $1"
echo "Making $of"

gst-launch -v filesrc blocksize=131250 location=$1 \
  ! avidemux name=dmx \
  ffmux_mov name=mux ! filesink location="$of" \
  dmx.video_00 ! queue ! mux.video_0 \
  dmx.audio_00 ! queue ! mux.audio_0


-------------------------------------------------
To made the mov with qtmux,
i made an avi_to_qt.sh
Call avi_to_qt.sh <avifile>

#!/bin/sh

of=`ls "$1" | sed s/.avi/_qt.mov/`

echo "playing $1"
echo "Making $of"

gst-launch -v filesrc blocksize=131250 location=$1 \
  ! avidemux name=dmx \
  qtmux name=mux ! filesink location="$of" \
  dmx.video_00 ! queue ! mux.video_00 \
  dmx.audio_00 ! queue ! mux.audio_00


I'm using an embedded hardware, that's why I use my_embedded v4lsrc and 264enc.
The simulation with PC using videotestsrc and x264enc is working fine.
So I suppose some (missed?) information out of my encoder that ffmux_mov can
rebuild while qtmov not. But it's only my humble opinion....

Thanks a lot

***** By The Overkill !!! *****

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Thiago Sousa Santos-2


On Mon, Jul 5, 2010 at 8:06 AM, Overkill <[hidden email]> wrote:
> What pipeline is used?

-------------------------------------------------
To record the .avi file

gst-launch -v my_embedded_v4lsrc ! \
 my_embedded_264enc width=720 height=400 \
   name=video \
 alsasrc ! \
 audio/x-raw-int,rate=16000,channels=2,width=16,depth=16,signed=true ! \
 queue name=audio \
 avimux name=mux ! \
 filesink location=test.avi \
 video.src ! mux.video_0 \
 audio.src ! mux.audio_0


You should be using the --eos-on-shutdown (or simply -e) here to allow the muxer to properly finish the file.
 
-------------------------------------------------
To made the mov with ffmux_mov,
i made an avi_to_ff.sh
Call avi_to_ff.sh <avifile>

#!/bin/sh

of=`ls "$1" | sed s/.avi/_ff.mov/`

echo "playing $1"
echo "Making $of"

gst-launch -v filesrc blocksize=131250 location=$1 \
 ! avidemux name=dmx \
 ffmux_mov name=mux ! filesink location="$of" \
 dmx.video_00 ! queue ! mux.video_0 \
 dmx.audio_00 ! queue ! mux.audio_0


-------------------------------------------------
To made the mov with qtmux,
i made an avi_to_qt.sh
Call avi_to_qt.sh <avifile>

#!/bin/sh

of=`ls "$1" | sed s/.avi/_qt.mov/`

echo "playing $1"
echo "Making $of"

gst-launch -v filesrc blocksize=131250 location=$1 \
 ! avidemux name=dmx \
 qtmux name=mux ! filesink location="$of" \
 dmx.video_00 ! queue ! mux.video_00 \
 dmx.audio_00 ! queue ! mux.audio_00


I'm using an embedded hardware, that's why I use my_embedded v4lsrc and 264enc.
The simulation with PC using videotestsrc and x264enc is working fine.
So I suppose some (missed?) information out of my encoder that ffmux_mov can
rebuild while qtmov not. But it's only my humble opinion....

You could check at the mp4 specs for the avcC atom syntax, that's where mp4mux puts the 'codec_data' field from the caps. And then compare what your encoder produces with what x264enc does.

Otherwise you can open a bug in bugzilla.gnome.org with the input from your hardware elements and describe this problem over there.

To get the input you can use gdppay element in something like:

gst-launch my_embedded_v4l2src num-buffers=50 ! my_embedded_264enc ! gdppay ! filesink location=input.gdp
 

Thanks a lot

***** By The Overkill !!! *****

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



--
Thiago Sousa Santos

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: mov unfinished

Overkill
In reply to this post by Overkill
>> To record the .avi file
>>
>> gst-launch -v my_embedded_v4lsrc ! \
>>  my_embedded_264enc width=720 height=400 \
>>    name=video \
>>  alsasrc ! \
>>  audio/x-raw-int,rate=16000,channels=2,width=16,depth=16,signed=true ! \
>>  queue name=audio \
>>  avimux name=mux ! \
>>  filesink location=test.avi \
>>  video.src ! mux.video_0 \
>>   audio.src ! mux.audio_0
>>
>>
> You should be using the --eos-on-shutdown (or simply -e) here to allow the
> muxer to properly finish the file.
>

Yes, off course I forgot it here, not when I use it.
I use also num-buffers property on both audio and video source,
otherwise no muxer will produce a working file :)


> You could check at the mp4 specs for the avcC atom syntax, that's where
> mp4mux puts the 'codec_data' field from the caps. And then compare what your
> encoder produces with what x264enc does.
>
> Otherwise you can open a bug in bugzilla.gnome.org with the input from your
> hardware elements and describe this problem over there.
>
> To get the input you can use gdppay element in something like:
>
> gst-launch my_embedded_v4l2src num-buffers=50 ! my_embedded_264enc ! gdppay
> ! filesink location=input.gdp

I think I will open the bug.
Thank you!

***** By The Overkill !!! *****

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel