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

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to