6

HLS ストリームで次の ffprobe コマンドを実行し、特定のストリーム ビデオのフレームをフラット形式で表示するパラメーターを指定し、「pkt」パターンで grep すると、次の情報が返されます。

$ ffprobe -i http://xxxxxxxxxxxxxxxx/PCMDY_SUB.m3u8 -show_frames -select_streams v:0 -print_format flat | grep pkt
...
frames.frame.229.pkt_pts=2438664735,
frames.frame.229.pkt_pts_time=27096.274833,
frames.frame.229.pkt_dts=2438664735,
frames.frame.229.pkt_dts_time=27096.274833,
frames.frame.229.pkt_duration=3600,
frames.frame.229.pkt_duration_time="0.040000",
frames.frame.229.pkt_pos=13348,
frames.frame.229.pkt_size=2510,

frames.frame.230.pkt_pts=2438668335,
frames.frame.230.pkt_pts_time=27096.314833,
frames.frame.230.pkt_dts=2438668335,
frames.frame.230.pkt_dts_time=27096.314833,  
frames.frame.230.pkt_duration=3600,
frames.frame.230.pkt_duration_time="0.040000",
frames.frame.230.pkt_pos=15980,
frames.frame.230.pkt_size=2389,
...

_timeパターンがある場合とない場合の情報の違いは何ですか?

pkt_duration はマイクロ秒単位で、pkt_duration_time は秒単位であると想定しました。それは本当です?

4

1 に答える 1

7

違いは、pkt_durationがマイクロ秒単位ではなく、タイム ベース スライス単位であることです。多くの場合、次のようになります。

1/framerate/1000

pkt_duration_timeは秒単位です。「-unit」オプションを ffprobe に渡すことで、単位を表示できます。

 ffprobe -i i.mp4 -show_frames -unit
 ....
pkt_pts=14014
pkt_pts_time=0.233567 s
pkt_dts=14014
pkt_dts_time=0.233567 s
pkt_duration=2002
pkt_duration_time=0.033367 s

タイムベースに関する詳細情報。

于 2015-02-15T06:24:37.873 に答える