[Asterisk-video] h263 and ffmpeg [WAS: app_mp4 problems]

Sergio Garcia sergio.garcia at fontventa.com
Wed Jul 18 10:44:50 CDT 2007



The problem with ffmpeg is that it's not a constant bit rate encoder, it's mainly a variable.
A former colleague told me that it was due to the internall loop of ffmpeg (I still don't understand
it very well). The result is that when it creates a I frame the output is ussualy too big, and you 
have a peak in bandwith. Which such a low bitrates as the one needed in h324m this result in the frame
taking too long to be sent (which causes for example a 1 sec pause in video). On other network scenarios
(xDSK) for example, it could mean that the I frame is not sent correctly. 
The P frames are then quite small, so the overall bandwith is keep, but for videoconferencing is a big
problems.

Others encoders has a different inner loop and different gob structures, and they don't refresh the whole
frame at a time (or something like that), so they cand adjust the bandwith much better.

Best regards
Sergio





---------- Original Message ----------------------------------
From: Klaus Darilion <klaus.mailinglists at pernau.at>
Reply-To: Development discussion of video media support in Asterisk<asterisk-video at lists.digium.com>
Date:  Wed, 18 Jul 2007 17:25:34 +0200

>ok - tomorrow.
>
>I have now made a 3gp file with ffmpeg (libamr_nb). Audio is good, video 
>is not bad, but not as smooth as helix, and after some time video looses 
>sync.
>
>Maybe if we can find out the helix settings (i-frames, p-frames ...) we 
>could tweak the conversion process with ffmpeg.
>
>klaus
>Sergio Garcia wrote:
>> Hi Klaus,
>> 
>> Could you send me the files to see what could be going wrong?
>> And personally, I use Helix Mobile Producer for encoding, Quick Time is horrible,
>> and ffmpeg has problems with cbr videos (and you have to enable amr manually).
>> You could also try the tmn h263 encoder, I haven't tried it myself, but ratmin sent
>> me an encoded video and the quality was quite good.
>> 
>> http://www.geocities.com/capecanaveral/Lab/2336/tmndec-3_2_0.tgz
>> 
>> Best regards
>> Sergio
>> 
>> 
>> ---------- Original Message ----------------------------------
>> From: Klaus Darilion <klaus.mailinglists at pernau.at>
>> Reply-To: Development discussion of video media support in Asterisk<asterisk-video at lists.digium.com>
>> Date:  Wed, 18 Jul 2007 16:07:45 +0200
>> 
>>>
>>> Sergio Garcia Murillo wrote:
>>>> Umm.. It should work fine (i.e. not crash) with all codecs, could you get a
>>>> bt of the crash?
>>>> I promise to take a look at all the dumps and logs as soon as I've got any
>>>> time.
>>> Hi Sergio!
>>>
>>> I record an 3gp (from Nokia 6630) file with mp4save.
>>>
>>> The file looks good:
>>> # mp4info record_nokia6630.3gp
>>> mp4info version 1.5.0.1
>>> record_nokia6630.3gp:
>>> Track   Type    Info
>>> 1       audio   AMR, 11.420 secs, 12 kbps, 8000 Hz
>>> 2       hint    Payload AMR for track 1
>>> 3       video   H.263, 3.677 secs, 127 kbps, 176x144 @ 21.484906 fps
>>> 4       hint    Payload H263-1998 for track 3
>>>
>>> After that I try to playback this file with mp4play() - again to the 
>>> Nokia 6630. Then Asterisk crashes:
>>>
>>>     -- Executing [1121 at PSTNin:1] h324m_gw("Zap/1-1", 
>>> "play-nokia at video") in new stack
>>>     -- Executing [play-nokia at video:1] 
>>> Answer("Local/play-nokia at video-2b79,2", "") in new stack
>>>     -- Executing [play-nokia at video:2] 
>>> mp4play("Local/play-nokia at video-2b79,2", 
>>> "/export/videos/record_nokia6630.3gp") in new stack
>>> mp4play /export/videos/record_nokia6630.3gp
>>> found hint track 2
>>> track 1 soun
>>> found hint track 4
>>> track 3 vide
>>> MP4ERROR: FindTrackId: Track index doesn't exist - track 2 type hint
>>> H245 TerminalCapabilitySet TransferRequest
>>> -WriteControlPDU [request]
>>> Encode PDU [95]
>>> Sending CMD [0,87]
>>> H245 Request MasterSlaveDetermination
>>> -WriteControlPDU [request]
>>> Encode PDU [20]
>>> Sending CMD [1,7]
>>> MP4ERROR: MP4Array::[]: index 4 of 4: Numerical result out of range
>>> Sending CMD [0] - 1 left
>>> Really destroying SIP dialog 
>>> '6a92bbab5ca9fd9d761739eb0977a906 at 83.136.32.165' Method: OPTIONS
>>> MP4ERROR: MP4Array::[]: index 4 of 4: Numerical result out of range
>>> Segmentation fault
>>>
>>>
>>>
>>> Then I removed the hint tracks from the recorded file and added new hint 
>>> tracks. Then Asterisk does not crash, but playback does still not work:
>>>
>>>     -- Executing [1123 at PSTNin:1] h324m_gw("Zap/1-1", 
>>> "play-nokia-new at video") in new stack
>>>     -- Executing [play-nokia-new at video:1] 
>>> Answer("Local/play-nokia-new at video-4056,2", "") in new stack
>>>     -- Executing [play-nokia-new at video:2] 
>>> mp4play("Local/play-nokia-new at video-4056,2", 
>>> "/export/videos/record_nokia6630_new.3gp") in new stack
>>> mp4play /export/videos/record_nokia6630_new.3gp
>>> H245 TerminalCapabilitySet TransferRequest
>>> found hint track 5
>>> track 1 soun
>>> -WriteControlPDU [request]
>>> found hint track 6
>>> track 3 vide
>>> Encode PDU [95]
>>> Sending CMD [0,87]
>>> MP4ERROR: FindTrackId: Track index doesn't exist - track 2 type hint
>>> H245 Request MasterSlaveDetermination
>>> -WriteControlPDU [request]
>>> Encode PDU [20]
>>> Sending CMD [1,7]
>>> Sending CMD [0] - 1 left
>>> MP4ERROR: MP4Track::ReadSampleFragment: offset and/or length are too large
>>> MP4ERROR: MP4Array::[]: index 1 of 1: Numerical result out of range
>>> MP4ERROR: MP4Array::[]: index 2 of 1: Numerical result out of range
>>>
>>>
>>> The only working 3gp file yet I have produced with helix mobile producer 
>>> trial version. I also tried Quicktime Pro - audio works but video is 
>>> very bad quality (on the mobile on even on the PC) - looks like 
>>> Quicktime's encoder is bad.
>>>
>>> Do you have any hints how to make a good 3gp file with ffmpeg and 
>>> mpeg4ip? How do I have to build ffpmeg (configure options, patches) and 
>>> mpeg4ip? What are the proper commands to transcode a video?
>>>
>>> thanks
>>> klaus
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>>>
>>> asterisk-video mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>   http://lists.digium.com/mailman/listinfo/asterisk-video
>>>
>>  
>> 
>> _______________________________________________
>> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>> 
>> asterisk-video mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-video
>
>_______________________________________________
>--Bandwidth and Colocation Provided by http://www.api-digital.com--
>
>asterisk-video mailing list
>To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-video
>
 



More information about the asterisk-video mailing list