[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