[Live-devel] Full HD Contents. trickplay question (with VLC)

Peng howtofly at gmail.com
Mon Jul 1 16:58:20 PDT 2013


Hi, Markus.
>
> I see that the frame rate is set to 29.97 ( 60000 / 1001 / 2) but I don't see any other timing information.
By timing information, I mean all the information affecting playout 
timing (including VUI, HDR and SEI), not just frame rate. To change 
frame rate, it will be safe to remove all of them, unless you are a 
CODEC implementer.

0x00000192 H264 AUD

0x00000198 H264 Sequence Parameter Set
profile_idc = 100 (PROFILE_IDC_High)
constraint_set0_flag = 0
constraint_set1_flag = 0
constraint_set2_flag = 0
constraint_set3_flag = 0
reserved_zero_4bits = 0
level_idc = 40
...
vui_parameters_present_flag = 1
vui_parameters():
...
num_units_in_tick = 1001
time_scale = 60000
fixed_frame_rate_flag = 1
nal_hrd_parameters_present_flag = 1
hrd_parameters():
cpb_cnt_minus1 = 0
bit_rate_scale = 2
cpb_size_scale = 4
bit_rate_value_minus1[0] = 20956,   cpb_size_value_minus1[0] = 20956,   
cbr_flag[0] = 1
initial_cpb_removal_delay_length_minus1 = 26
cpb_removal_delay_length_minus1 = 30
dpb_output_delay_length_minus1 = 0
time_offset_length = 24
vcl_hrd_parameters_present_flag = 0
low_delay_hrd_flag = 0
pic_struct_present_flag  = 1
bitstream_restriction_flag = 1
motion_vectors_over_pic_boundaries_flag = 1
max_bytes_per_pic_denom = 4
max_bits_per_mb_denom = 1
log2_max_mv_length_horizontal = 10
log2_max_mv_length_vertical = 9
num_reorder_frames = 0
max_dec_frame_buffering = 4

0x000001C4 H264 Picture Parameter Set
...

0x000001CC H264 SEI
BUFFERING_PERIOD
seq_paramater_set_id = 0
nal_initial_cpb_removal_delay[0] = 88780, 
nal_initial_cpb_removal_delay_offset[0] = 1220
PIC_TIMING
cpb_removal_delay = 30, dpb_output_delay = 0
pic_struct = 3 (top field, bottom field), num_clock_ts = 2
>
> Did you get the file to work?
>
Yes, almostly.

1) Use the following FFmpeg command line to remux the TS stream (without 
transcoding) into QuickTime file format preserving timing info and 
discarding audio:
ffmpeg -debug_ts -i '/home/peng/Desktop/ChunMyung1-30.ts' -f mov -vcodec 
copy -an '/home/peng/Desktop/ChunMyung1-30.mov'

Check the debugging output by -debug_ts, make sure that the PTS and DTS 
are preserved.

By remuxing, you get rid of the annoying complexity of the intrinsic 
time axis of TS stream. Then play this file with VLC, you see the same 
30 seconds black screen. Press ctrl+j, click the Statistics tab and play 
it again. Note that in the 30-second period, no block is actually 
decoded. It is also easy to check the first picture appeared is just the 
first frame in stream. Why?

2) Use MP4Box in GPAC package to analyze the structure of this mov file, 
you get a xml named ChunMyung1-30_info.xml:
MP4Box -diso '/home/peng/Desktop/ChunMyung1-30.mov'

Open this xml with firefox (or whatever) and check 'edst' box (EditBox). 
You will find only one entry with no empty entry preceding it, which 
simply means the first sample should be played immediately after the 
playback starts.

Now it is clear that the 30-seconds black screen has nothing to do with 
media container.

3) Transcoding ChunMyung1-30.ts into Motion JPEG in QuickTime container. 
Play out this file, you will find black screen disappear and the first 
sample appear immediately.

Since H.264 stream consisting of I frames without timing information is 
essentially the same Motion JPEG stream. I expect the suggested method 
to work.

-- 
Peng



More information about the live-devel mailing list