Sounds similar to an issue I used to have. The solution was changing the setting of CODEC_FLAG_GLOBAL_HEADER to *before* the h264 encoder (x264) was opened. Extradata is set up during the opening. Hope that helps.

Andy

On 3/13/2012 10:31 AM, Li Zhang wrote:
Hi,


Now the video can be played by adding the sps and pps information stored in the 
avctx->extradata to the beginning of video frame. Why the TS container do not 
do that for me? Is there anyone know what the problem is?


Best regards,

Li

________________________________________
From: [email protected] [[email protected]] On Behalf 
Of Li Zhang [[email protected]]
Sent: Tuesday, March 13, 2012 10:27 AM
To: This list is about using libavcodec, libavformat, libavutil, libavdevice    
and libavfilter.
Subject: Re: [Libav-user] Please help me about transcoding to   TS      stream: 
H.264 bitstream malformed, no startcode found,  use the h264_mp4toannexb 
bitstream filter (-bsf h264_mp4toannexb)

Hi,

I have check the final .ts file I got, there is no PPS and SPS for IDR frame. I 
have configure that the CODEC__FLAG_GLOBAL_HEADER. The gop_size is 250. The 
first video frame is I frame. But there is no PPS and SPS information. However, 
when I put the video and audio into mp4 container, the video and audio all can 
be played.  Is there anyone can tell me what happened?

Best regards,

Li Zhang

________________________________________
From: [email protected] [[email protected]] On Behalf 
Of Li Zhang [[email protected]]
Sent: Saturday, March 10, 2012 9:37 AM
To: This list is about using libavcodec, libavformat, libavutil, libavdevice    
and libavfilter.
Subject: Re: [Libav-user] Please help me about transcoding to TS        stream: 
H.264 bitstream malformed, no startcode found,  use the h264_mp4toannexb 
bitstream filter (-bsf h264_mp4toannexb)

Hi Kalileo,

Thank you very much for your quick reply.

Sorry for my unclear description last email. What I have done is start from 
mpeg2 TS stream, and then decoding, encoding them to H.264+AAC without 
container. Next I have put H.264+AAC data frame into AVI, MKV, MP4 container 
successfully. However, my final target is putting H.264+AAC data frame into TS 
container. And it failed. So what I passed to IMHO h264_mp4toannexb is not 
mpegts stream but H.264+AAC frame.

So I want to make sure you understand my situation correctly.

So according to my understanding, after the H.264 encoding, I should add the 
h264 Annex B header to every H264 video frame manually. Am I right?

Hope there is some experts can give us confirmation about that. Or there is any 
other suggestion please tell me, thanks.



Best regards,

Li Zhang

________________________________________
From: [email protected] [[email protected]] On Behalf 
Of Kalileo [[email protected]]
Sent: Friday, March 09, 2012 5:27 PM
To: This list is about using libavcodec, libavformat, libavutil,        
libavdevice and libavfilter.
Subject: Re: [Libav-user] Please help me about transcoding to TS stream:        
H.264 bitstream malformed, no startcode found,  use the h264_mp4toannexb 
bitstream filter (-bsf h264_mp4toannexb)

On Mar 9, 2012, at 22:20 , Li Zhang wrote:


Hi everyone,


I am a new user to ffmpeg API. I want to transcode mpeg2 video stream to 
H.264+AAC and then put them into TS container again.

I have implemented transcoding from mpeg2 TS to AVI, MKV, MP4 local files. Now 
the problem is when I used the same code put those H.264+AAC data packet into 
TS container, the video can not be played and only the audio can be played. 
Actually, there was video packet data in the .ts file which was derived from 
trandcoding.

And I got the information from ffmpeg that "H.264 bitstream malformed, no startcode 
found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb)". So I 
initiated the h264_mp4toannexb bitstreamfilter and use av_bitstream_filter_filter to 
process the packet before write them to output file. However, av_bitstream_filter_filter 
returns 0 and the final output file still the same situation and the warning information 
still happen.

There is another warning information about DTS, it only happen every 29 frames. 
That is so strange.  Please help me.  I used the latest version of ffmpeg.
When I used the Elecard Stream Analyzer to check my transcoded file, I found 
the file missed SPS and SEI information for the video stream. There is only SPS 
and SEI information for audio stream.  I do not know why the TS container can 
not produce these information for me.

Hi Li,

IMHO h264_mp4toannexb does not work if you convert from mpegts stream to mpegts 
stream, because as far as I have understood it h264_mp4toannexb expects mp4 as 
source and not mpegts. you need to do manually what h264_mp4toannexb would do, 
that is adding the h264 Annex B header in front of every h264 frame.

I'm sure the experts here can confirm or correct me, and explain better what to 
do.


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to