I encode an HD video (Beauty.yuv) by JM with IBBBPBBBPBBBP... pattern.
then to convert output.264 to out.mp4 by MP4Box do this:
MP4Box -profile high -hint -mtu 1024 -fps 30 -add output.264 out.mp4
then I make .st file:
./mp4trace -f -s 192.168.0.2 12346 out.mp4 > st_a01.st
but my st file look like:
1 I 142647 140 0.075
2 P 82493 81 0.202
3 P 24373 24 0.204
4 P 29224 29 0.204
5 P 23495 23 0.204
6 P 76393 75 0.331
7 P 22832 23 0.331
8 P 25367 25 0.336
9 P 22635 23 0.336
10 P 120039 118 0.469
11 P 24255 24 0.469
12 P 26783 27 0.469
13 P 23338 23 0.469
14 P 96223 94 0.596
15 P 22626 23 0.602
16 P 25306 25 0.602
17 P 26856 27 0.602
18 P 99348 98 0.729
19 P 25576 25 0.735
20 P 32550 32 0.736
21 P 28752 29 0.736
22 P 110795 109 0.869
23 P 23601 24 0.869
24 P 25118 25 0.869
25 P 24258 24 0.869
26 P 87966 86 0.991
27 P 21435 21 1.002
there is no B-frame or B-slice in packets ! why that happen ? what is wrong here ?
thanks for your attention
It's possible that MP4Box is encoding your H264 video by using the Baseline profile.
Check it with a tool like MediaInfo. Only Main and High profiles support B-frames (aka B-slices).
http://www.streaminglearningcenter.com/content_images/1/Adobe%20H264_Figure%201.jpg (image from : StreamingLearningCenter.com's article)
If you execute
MP4Box -info out.mp4
, you'll get some general information on the file.If you execute
MP4Box -info 1 out.mp4
, you'll get some more specific information about the track 1 of the file.If you execute
MP4Box -diso out.mp4
, you'll get a detailed XML (including the timings) of your MP4 file structure.Maybe another precision about "I/P/B-frames". Since H264 (2003), there are only I/P/B slices, which makes your verification a little harder (since you need to check slices and not frames).
Also MP4Box is only a muxer, it won't modify the semantics of your encoded content.