I then manually parsed the flv file, I found the AAC header packet is missing. In the other word,

faacEncGetDecoderSpecificInfo(hEncoder, &extra, &extra_size);

the "extra_size" octets in "extra" are missing.

It is usually the first audio packet sent through RTMP audio channel, but due to some unknown reason, it is lost. That's why Flash Player cannot play it: it failed to recognize the information required to decode it.

It is quite hard to reproduce the problem. wowza is set up on my localhost, so I don't think it is network-latency-related.

Is it possible for wowza to provide a valid AAC header when it does not exist?

Is it possible to re-stream a stream with H.264 video and "ffmpeg aac in latm" audio codec (as mplayer recognized) in Wowza? If yes, could you please say how?

I tried It by using "AAC" codec in transcoder file and default audio packetizer and also several scenarios that have been explained in Wowza documentations, but i couldn't get any audio in my (for example rtmp) output stream and also VLC is unable to play the whole stream (I mean no audio and no video displayed!).

I use FMLE to push rtmp stream to wowza. It seems that sometimes the first audio packet (header) is missing, but *never* has been the video header packet. It is very hard to reproduce, so I think maybe I have to find a workaround.

For a recorded live stream, does wowza fetch the audio header from the recorded file or just use a header in memory?

I kind of understand the issue. What encoder are you using? In general if using an RTSP/RTP encoder then we extract this information from the SDP data that is exchanged. I have not heard of others with this issue. Not sure why you are seeing it. I would need to reproduce it to have a chance of understanding it.