2012-08-06 68 views
2

我使用VLC通過LAN上的UDP在MPEG TS容器中傳輸H264視頻文件。我用Wireshark在客戶端捕獲數據包,在這裏您可以找到pcap文件:http://www.sendspace.com/file/w0sf36識別並修改H264 I,P,B幀

是否真的需要使用MPEG PES來識別I,P或B幀?如果是這樣,我該怎麼做?這是一個MPEG PES數據包的數據:http://pastebin.com/NayLBx5w。它從字節0x00 0x00 0x00 0x01開始。我應該使用哪些字節來達到我的目標?

以PCAP文件,你可以看到,MPEG PES包只需要2%的所有流和其他報文比較簡單UDP。使用MPEG PES數據包足夠嗎? UDP數據包在這種情況下攜帶什麼信息?

編輯:這是我在Windows中使用ffprobe獲得的典型輸出。

[PACKET] 
codec_type=audio 
stream_index=1 
pts=54010800 
pts_time=600.120000 
dts=54010800 
dts_time=600.120000 
duration=2160 
duration_time=0.024000 
convergence_duration=N/A 
convergence_duration_time=N/A 
size=96 
pos=1460384 
flags=K 
[/PACKET] 
[PACKET] 
codec_type=video 
stream_index=0 
pts=54012012 
pts_time=600.133467 
dts=54006006 
dts_time=600.066733 
duration=3003 
duration_time=0.033367 
convergence_duration=N/A 
convergence_duration_time=N/A 
size=207953 
pos=1098672 
flags=_ 
[/PACKET] 
[PACKET] 
codec_type=video 
stream_index=0 
pts=54009009 
pts_time=600.100100 
dts=54009009 
dts_time=600.100100 
duration=3003 
duration_time=0.033367 
convergence_duration=N/A 
convergence_duration_time=N/A 
size=145530 
pos=1311676 
flags=_ 
[/PACKET] 
[PACKET] 
codec_type=audio 
stream_index=1 
pts=54012960 
pts_time=600.144000 
dts=54012960 
dts_time=600.144000 
duration=2160 
duration_time=0.024000 
convergence_duration=N/A 
convergence_duration_time=N/A 
size=96 
pos=1507948 
flags=K 
[/PACKET] 
[PACKET] 
codec_type=video 
stream_index=0 
pts=54018018 
pts_time=600.200200 
dts=54012012 
dts_time=600.133467 
duration=3003 
duration_time=0.033367 
convergence_duration=N/A 
convergence_duration_time=N/A 
size=46173 
pos=1460572 
flags=_ 
[/PACKET] 

回答

1

只要你有一個文件的形式與您的內容使用

ffprobe -show_packets <your_file> 

得到的信息流中的每個數據包的詳細信息。它可以是任何有效的視頻文件。

這是來自我有一個文件不完整的輸出。

[FRAME] 
media_type=video 
key_frame=0 
pkt_pts=2 
pkt_pts_time=0.100000 
pkt_dts=2 
pkt_dts_time=0.100000 
pkt_duration=1 
pkt_duration_time=0.050000 
pkt_pos=301347 
width=320 
height=240 
pix_fmt=yuv420p 
sample_aspect_ratio=N/A 
pict_type=P 
coded_picture_number=2 
display_picture_number=0 
interlaced_frame=0 
top_field_first=0 
repeat_pict=0 
reference=0 
[/FRAME] 
[FRAME] 
media_type=audio 
key_frame=1 
pkt_pts=0 
pkt_pts_time=0.000000 
pkt_dts=0 
pkt_dts_time=0.000000 
pkt_duration=1024 
pkt_duration_time=0.021333 
pkt_pos=306587 
sample_fmt=s16 
nb_samples=1024 
[/FRAME] 

你可以寫一個非常簡單的perl腳本或類似的東西來告訴你每一幀的確切細節。