[FFmpeg-devel] [PATCH] Fix mpegtsenc's choking on first H264 start code
Fri Sep 10 17:20:35 CEST 2010
Alexandre Ferrieux wrote:
> It turns out that when muxing an H264 bitstream, mpegts_write_packet has a
> very crude check on AnnexB start codes. Specifically, it wants a 4-byte
> 00000001, disallowing the 3-byte 000001 which is also valid and occurs on
> the first NALU. As a consequence, ffmpeg is currently unable to mux H264
> into TS:
> ffmpeg -f h264 -i a.264 -vcodec copy -f mpegts -y a.ts
> [mpegts @ 0xa11cb80]h264 bitstream malformated, no startcode found,
> use -vbsf h264_mp4toannexb
> The attached patch restores correct behavior, by also allowing the 3-byte
> start code, making the above command line work.
I don't believe your patch complies with the requirements of the H.264
spec. Annex B.1.2 *requires* the 4-byte start code for an SPS NAL and
for the first NAL in a bitstream.
You could maybe make the muxer more flexible about the input it accepts
(Baptiste will decide that), but even then the muxer output must contain
the extra 0x00 to generate a compliant bitstream.
More information about the ffmpeg-devel