How to get the MPEG4 encoded bitstream headers within a MPEG4 Decoder Filter
1.I opened the ( highway176x144_30fps.mp4) file in a GraphEdit.
I dumped the MPEG encoded contents in to a file using the following graph:
MP4 Source Filter -> Sample Grabber Filter ->Dump Filter ( highway176x144_30fps.bits)
if I passed the dump file to the MPEG4 decoder application,It gives an error.
( Because the Encoded content also have some Header information ... It is missing )
2.I used my Temporal decoder filter to open the same Mp4 file ( highway176x144_30fps.mp4)
MP4 Source Filter -> Temporal Decoder Filter -> Video Renderer
within my temporal Decoder, I checked the MPEG2VIDEOINFO header of an Tempora Decoder filter's Input Pin.
MPEG2VIDEOINFo header is having some values like as follows:
DWORD cbSequenceHeader; // Size of the Encoded contents Header
DWORD dwSequenceHeader[1]; // Contains header info.
we can typecast it as follows to get the buffer,
BYTE* pbData =(BYTE*) mpg2VideoInfo->dwSequenceHeader;
I dumped this Encoded data to a file.( highway176x144_30fps.mpeg4hdr)
3.I created the Sample application to merge these two files.
The new File ( highway_mpeg4.bits) must have the following :
0. Create a new file ( highway_mpeg4.bits)
i. Append the contents of highway176x144_30fps.mpeg4hdr file to the highway_mpeg4.bits
ii. Append the contents of highway176x144_30fps.bits file to the highway_mpeg4.bits
4.Next I did the following.
Using FFMpeg to decode the MPEG4 contents as follows :
ffmpeg -s 176x144 -vcodec mpeg4 -i d:\media\MpegInput\highway_mpeg4.bits -vcodec rawvideo D:\media\MpegInput\highway_mpeg4.yuv
ffmpeg successully generated the Output file "D:\media\MpegInput\highway_mpeg4.yuv".
I Opened this YUV file in YUV player. it is working fine.
I dumped the MPEG encoded contents in to a file using the following graph:
MP4 Source Filter -> Sample Grabber Filter ->Dump Filter ( highway176x144_30fps.bits)
if I passed the dump file to the MPEG4 decoder application,It gives an error.
( Because the Encoded content also have some Header information ... It is missing )
2.I used my Temporal decoder filter to open the same Mp4 file ( highway176x144_30fps.mp4)
MP4 Source Filter -> Temporal Decoder Filter -> Video Renderer
within my temporal Decoder, I checked the MPEG2VIDEOINFO header of an Tempora Decoder filter's Input Pin.
MPEG2VIDEOINFo header is having some values like as follows:
DWORD cbSequenceHeader; // Size of the Encoded contents Header
DWORD dwSequenceHeader[1]; // Contains header info.
we can typecast it as follows to get the buffer,
BYTE* pbData =(BYTE*) mpg2VideoInfo->dwSequenceHeader;
I dumped this Encoded data to a file.( highway176x144_30fps.mpeg4hdr)
3.I created the Sample application to merge these two files.
The new File ( highway_mpeg4.bits) must have the following :
0. Create a new file ( highway_mpeg4.bits)
i. Append the contents of highway176x144_30fps.mpeg4hdr file to the highway_mpeg4.bits
ii. Append the contents of highway176x144_30fps.bits file to the highway_mpeg4.bits
4.Next I did the following.
Using FFMpeg to decode the MPEG4 contents as follows :
ffmpeg -s 176x144 -vcodec mpeg4 -i d:\media\MpegInput\highway_mpeg4.bits -vcodec rawvideo D:\media\MpegInput\highway_mpeg4.yuv
ffmpeg successully generated the Output file "D:\media\MpegInput\highway_mpeg4.yuv".
I Opened this YUV file in YUV player. it is working fine.
Labels: Directshow, Directshow problems, MPEG4
0 Comments:
Post a Comment
<< Home