-
Notifications
You must be signed in to change notification settings - Fork 1
FFmpeg Tool Notes
FFmpeg 是一個跨平台的多媒體影音處理解決方案。我們能利用它錄製、轉換媒體格式,亦能使用 libavformat 與 libavcodec 函式庫實作自己的媒體播放程式。
- 如果您在尋找完整說明,可查閱 [FFmpeg 官方手冊] (http://www.ffmpeg.org/ffmpeg.html)
- 如果您在尋找使用技巧,可參考 [FFmpeg Tricks You Should Know About] (http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/)
- 如果您想學習函式庫的用法,可前往 [An ffmpeg and SDL Tutorial] (http://dranger.com/ffmpeg/) 觀看,此教學內容其實是 ffplay 的精簡版。
此文件的主要功能在於記錄如何在 Windows 下編譯 FFmpeg Tools,並示範如何 ffprobe 分析串流資料與提供分析範例。主要內容摘要如下:
- 使用 MSYS 與 MinGW 編譯 FFmpeg
- 影音資料分析工具 ffprobe
- 查詢 ffprobe 支援的協定
- 檢視影音封包內容與案例分析
如果您手邊沒有編譯環境,需要預先編譯版本,可以由此下載:prebuilt ffmpeg tools
要在 linux 下編譯 FFmpeg 是相當容易的。在 Windows 下,我們能利用 MSYS + MinGW 環境編譯出基本的 ffmpeg 與 ffprobe 指令。建議使用下列參數:
./configure --prefix=/opt/ffmpeg --disable-yasm \
--disable-doc --disable-bzlib \
--disable-ffserver --disable-avconv \
--disable-avdevice --disable-filters \
--disable-encoders --enable-memalign-hack \
--extra-cflags=-fno-common --disable-bsfs \
--disable-muxers --enable-w32threads
並使用 make install 進行編譯與安裝。安裝完成後,您可以在 /opt/ffmpeg 下找到執行檔:
$ cd /opt/ffmpeg/bin/
Administrator@mychat-032f5730 /opt/ffmpeg/bin
$ ls
ffmpeg.exe ffprobe.exe
以先前的 configuration 參數,我們產生出 ffmpeg.exe 與 ffprobe.exe 二個執行檔。您可以利用 ffmpeg.exe 對影音資料進行處理,而 ffprobe.exe 能用來查詢影音資料的描述訊息(metadata)與實際封包的描述訊息。
當執行 ffprobe.exe 不加任何參數時,你會看到下列訊息:
$ ffprobe.exe
ffprobe version 0.8.2.git, Copyright (c) 2007-2011 the FFmpeg developers
built on Sep 3 2011 11:03:46 with gcc 4.5.2
configuration: --prefix=/opt/ffmpeg --disable-yasm --disable-doc --disable-bzl
ib --disable-ffserver --disable-avconv --disable-avdevice --disable-filters --di
sable-encoders --enable-memalign-hack --extra-cflags=-fno-common --disable-bsfs
--disable-muxers --enable-w32threads
libavutil 51. 14. 0 / 51. 14. 0
libavcodec 53. 12. 0 / 53. 12. 0
libavformat 53. 10. 0 / 53. 10. 0
libavfilter 2. 37. 0 / 2. 37. 0
libswscale 2. 0. 0 / 2. 0. 0
Simple multimedia streams analyzer
usage: ffprobe [OPTIONS] [INPUT_FILE]
You have to specify one input file.
Use -h to get full help or, even better, run 'man ffprobe'.
訊息內包含編譯時的參數,與指令的格式。最重要的部分:他提議您使用 -h 指令查閱更完整的參數。 以分析媒體資料來說,我們有些常用的參數,將會在後續的段落介紹給您。
ffprobe 支援的協定就是 libavformat 內定義如何讀寫資料來源的實作。您可以使用 -protocols 參數查詢目前安裝版本能支援的協定:
$ ffprobe.exe -protocols
ffprobe version 0.8.2.git, Copyright (c) 2007-2011 the FFmpeg developers
built on Sep 3 2011 11:03:46 with gcc 4.5.2
configuration: --prefix=/opt/ffmpeg --disable-yasm --disable-doc --disable-bzl
ib --disable-ffserver --disable-avconv --disable-avdevice --disable-filters --di
sable-encoders --enable-memalign-hack --extra-cflags=-fno-common --disable-bsfs
--disable-muxers --enable-w32threads
libavutil 51. 14. 0 / 51. 14. 0
libavcodec 53. 12. 0 / 53. 12. 0
libavformat 53. 10. 0 / 53. 10. 0
libavfilter 2. 37. 0 / 2. 37. 0
libswscale 2. 0. 0 / 2. 0. 0
Supported file protocols:
I.. = Input supported
.O. = Output supported
..S = Seek supported
FLAGS NAME
-----
I.. applehttp
I.S concat
I.. crypto
IOS file
IO. gopher
IOS http
I.. mmsh
I.. mmst
.O. md5
IO. pipe
IO. rtmp
IO. rtp
IO. tcp
IO. udp
Administrator@mychat-032f5730 /opt/ffmpeg/bin
$
其中常用的為 mmsh 與 mmst 以及 http。另外 rtmp 由於 flash 常用其做為串流編碼的服務,也算是常見的協定。當您要給 FFmpeg 工具多媒體來源時,它會先檢查是不是靜態的檔案(也就是 file 協定,或不含 file:// 及任何 .*:// 的型式),當不是靜態檔案的情況,會試著去媒合一個適當的協定。多數情況是簡易的字串比對!而比對的對象就是使用 -protocols 列出的那些內容。 因此,當你收到一個 mms:// 起始的網址,是無法直接給 FFmpeg 工具使用(對使用 libavformat 開啟檔案的方式也一樣),您得換成適當的『字首』。它原本是:
mms://aaa.bbb.ccc/ddd.eee?fff=ggg.asf
您得改寫成:
mmsh://aaa.bbb.ccc/ddd.eee?fff=ggg.asf
或是
mmst://aaa.bbb.ccc/ddd.eee?fff=ggg.asf
或是
rtsp://aaa.bbb.ccc/ddd.eee?fff=ggg.asf
才能讓 FFmpeg 工具(與 libavformat)正確地處理它。眼尖的讀者可能發現,先前沒有出現 rtsp,為什麼 mms 也得改成它呢?這是因為 mms 隱含著 rtsp 協定。因此,您也可以嘗試 rtsp 串流伺服器是否能支援這種協定。
$ ffprobe.exe rtsp://yayin.canlitv.com/TV52
ffprobe version 0.8.2.git, Copyright (c) 2007-2011 the FFmpeg developers
built on Sep 3 2011 11:03:46 with gcc 4.5.2
configuration: --prefix=/opt/ffmpeg --disable-yasm --disable-doc --disable-bzl
ib --disable-ffserver --disable-avconv --disable-avdevice --disable-filters --di
sable-encoders --enable-memalign-hack --extra-cflags=-fno-common --disable-bsfs
--disable-muxers --enable-w32threads
libavutil 51. 14. 0 / 51. 14. 0
libavcodec 53. 12. 0 / 53. 12. 0
libavformat 53. 10. 0 / 53. 10. 0
libavfilter 2. 37. 0 / 2. 37. 0
libswscale 2. 0. 0 / 2. 0. 0
[rtsp @ 003d9f20] UDP timeout, retrying with TCP
[rtsp @ 003d9f20] method SETUP failed: 454 Session Not Found
[rtsp @ 003d9f20] Could not find codec parameters (Data: none)
[rtsp @ 003d9f20] Estimating duration from bitrate, this may be inaccurate
Input #0, rtsp, from 'rtsp://yayin.canlitv.com/TV52':
Metadata:
title : <No Title>
WMFSDKVersion : 9.00.00.4509
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 00:00:00.00, start: 5.000000, bitrate: 391 kb/s
Stream #0.0: Audio: wmav2 (a[1][0][0] / 0x0161), 48000 Hz, 2 channels, s16,
64 kb/s
Stream #0.1: Data: none
Stream #0.2: Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 320x240, 327 k
b/s, 1k tbr, 1k tbn, 1k tbc
Unsupported codec with id 0 for input stream 1
$ ffprobe.exe rtsp://yayin.canlitv.com/TV52
ffprobe version 0.8.2.git, Copyright (c) 2007-2011 the FFmpeg developers
built on Sep 3 2011 11:03:46 with gcc 4.5.2
configuration: --prefix=/opt/ffmpeg --disable-yasm --disable-doc --disable-bzl
ib --disable-ffserver --disable-avconv --disable-avdevice --disable-filters --di
sable-encoders --enable-memalign-hack --extra-cflags=-fno-common --disable-bsfs
--disable-muxers --enable-w32threads
libavutil 51. 14. 0 / 51. 14. 0
libavcodec 53. 12. 0 / 53. 12. 0
libavformat 53. 10. 0 / 53. 10. 0
libavfilter 2. 37. 0 / 2. 37. 0
libswscale 2. 0. 0 / 2. 0. 0
[rtsp @ 003d9f20] UDP timeout, retrying with TCP
[rtsp @ 003d9f20] method SETUP failed: 454 Session Not Found
[rtsp @ 003d9f20] Could not find codec parameters (Data: none)
[rtsp @ 003d9f20] Estimating duration from bitrate, this may be inaccurate
Input #0, rtsp, from 'rtsp://yayin.canlitv.com/TV52':
Metadata:
title : <No Title>
WMFSDKVersion : 9.00.00.4509
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 00:00:00.00, start: 5.000000, bitrate: 391 kb/s
Stream #0.0: Audio: wmav2 (a[1][0][0] / 0x0161), 48000 Hz, 2 channels, s16,
64 kb/s
Stream #0.1: Data: none
Stream #0.2: Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 320x240, 327 k
b/s, 1k tbr, 1k tbn, 1k tbc
Unsupported codec with id 0 for input stream 1
而作為分析的工具,您至少可以得到影音串流的索引值(stream_index):
Input #0, rtsp, from 'rtsp://yayin.canlitv.com/TV52':
Metadata:
title : <No Title>
WMFSDKVersion : 9.00.00.4509
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 00:00:00.00, start: 5.000000, bitrate: 391 kb/s
Stream #0.0: Audio: wmav2 (a[1][0][0] / 0x0161), 48000 Hz, 2 channels, s16,
64 kb/s
Stream #0.1: Data: none
Stream #0.2: Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 320x240, 327 k
b/s, 1k tbr, 1k tbn, 1k tbc
由此資料,我們可以讀出。有一個 Audio 串流,在索引 0 的位置,codec 為 wmav2。它的取樣頻率為 48000 Hz,共 2 聲道,而格式為 PCM singed 16 bits。另外,有一個 Video 串流在索引 2 的位置,codec 為 wmv3 並加註為 Main Profile。影像解析度為 320x240、bitrate 為 327 kb/s,資料格式為 yuv420p。
ffprobe 還有個好用的參數是 -show_packets。它會將被 demuxer 解離後的 AVPacket 結構內的資訊輸出至 stdout 上。我們能透過幾個例子來發現檢視封包所帶來的好處,這對於您使用 FFmpeg 製作串流播放、處理工具相當有幫助。
我們先由正常的例子開始觀察 -show_packets 的效果。在這裡我們採用 -show_packets 參數,並配合 head 指令避免它不停地印出訊息。要印多少行請依您能蒐集到足夠的資訊為主。
qty:~ qrtt1$ ffprobe -show_packets 'mmsh://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:43117?BBC-UID=444ec6a1ba7631ba53383dae61d9d54819d258e64080817404ff6496334ac9aa_n&SSO2-UID=' | head -n 25
ffprobe version 0.8.2, Copyright (c) 2007-2011 the FFmpeg developers
built on Aug 16 2011 23:33:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: --disable-doc --disable-ffserver --disable-muxers --disable-avdevice --disable-postproc --disable-avfilter --disable-bsfs --disable-filters --disable-devices --disable-encoders --disable-asm --disable-bzlib --disable-zlib --prefix=/opt/ffmpeg
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
[asf @ 0x10104e000] Estimating duration from bitrate, this may be inaccurate
Input #0, asf, from 'mmsh://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:43117?BBC-UID=444ec6a1ba7631ba53383dae61d9d54819d258e64080817404ff6496334ac9aa_n&SSO2-UID=':
Metadata:
title : البث التلفزيوني المباشر
artist : BBC Arabic
copyright : (C) 2010 British Broadcasting Corporation
comment : مواعيد البث من العاشرة صباحا إلى العاشرة مساء بتوقيت جريتنش
WMFSDKVersion : 10.00.00.4007
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: N/A, start: 1524244.962000, bitrate: 223 kb/s
Stream #0.0(ara): Audio: wmav2, 44100 Hz, 2 channels, s16, 48 kb/s
Stream #0.1(ara): Video: wmv3 (Main), yuv420p, 400x224, 175 kb/s, 25 tbr, 1k tbn, 1k tbc
[PACKET]
codec_type=audio
stream_index=0
pts=1524246024
pts_time=1524246.024000
dts=1524246024
dts_time=1524246.024000
duration=185
duration_time=0.185000
size=1115.000000
pos=7019
flags=K
[/PACKET]
[PACKET]
codec_type=audio
stream_index=0
pts=1524246151
pts_time=1524246.151000
dts=1524246151
dts_time=1524246.151000
duration=185
duration_time=0.185000
size=1115.000000
pos=12795
flags=K
當啟用顯示封包資訊的功能後,ffprobe 指令就不會在印完描述資訊就停下來,它會接著印出 AVPacket 內的訊息:
- codec_type:顯示此 AVPacket 是 audio 或 video
- stream_index:此 AVPacket 是由哪一個 steam 取出的
- pts:此 AVPacket 應播放的時間(pts_time 即為將 pts 轉換成秒的時間,它們的關係非簡單的 1/1000000,實際上得配合 time_base 參數一起換算)
- dts:此 AVPacket 解譯時記錄的時間(dts_time 的算法與 pts -> pts_time 相同)
- duration:為播放時,此 AVPacket 應出現的時間。
- size:此 AVPacket 內影音資料未解譯前的大小。
- pos:此 AVPacket 的位置。以靜態檔案比喻就是檔案的第 n 個 byte。
- flags:此 AVPacket 的屬性資料。
[PACKET]
codec_type=audio
stream_index=0
pts=1524246024
pts_time=1524246.024000
dts=1524246024
dts_time=1524246.024000
duration=185
duration_time=0.185000
size=1115.000000
pos=7019
flags=K
[/PACKET]
libavformat 內對於 mms 一類的實作,在 stream selection 部分並沒有真的做出來。目前(至少到2011/09/03為止),它在向串流伺服器送出的 stream selection 是選擇全部的串流。所以你會看到下列例子的情況。 我僅需要知道串流伺服器吐回了哪些 stream,所以我只接 stream_index 那行。過多的封包會影響效率,特別是在行動裝置上,或是您搭配的網路卡、無線網路也是依賴軟體的方式接收資料時,那就會佔用 CPU 資源,讓您用在解譯影音資料時無法佔據大部分的 CPU 時間。
假設我們的播放器為 ffplay。它目前選擇音影串流的規則會選到最後一組。也就是實際上會被播放出來的只有 stream_index 3 與 4。
qty:~ qrtt1$ ffprobe -show_packets 'rtsp://a630.l2038549484.c20385.n.lm.akamaistream.net/D/630/20385/v0001/reflector:49484' | grep stream_index| head -n 200
ffprobe version 0.8.2, Copyright (c) 2007-2011 the FFmpeg developers
built on Aug 16 2011 23:33:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: --disable-doc --disable-ffserver --disable-muxers --disable-avdevice
--disable-postproc --disable-avfilter --disable-bsfs --disable-filters --disable-devices
--disable-encoders --disable-asm --disable-bzlib --disable-zlib --prefix=/opt/ffmpeg
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
[rtsp @ 0x10104e000] method SETUP failed: 461 Unsupported Transport
[wmv3 @ 0x101064c00] Extra data: 8 bits left, value: 0
[wmv3 @ 0x101069400] Extra data: 8 bits left, value: 0
[rtsp @ 0x10104e000] max_analyze_duration 5000000 reached at 5184000
[rtsp @ 0x10104e000] Estimating duration from bitrate, this may be inaccurate
Input #0, rtsp, from 'rtsp://a630.l2038549484.c20385.n.lm.akamaistream.net/D/630/20385/v0001/reflector:49484':
Metadata:
title : <No Title>
artist : Fairfax County Government VA
copyright : 2011
WMFSDKVersion : 11.0.5721.5275
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: 00:00:00.00, start: 222870.463000, bitrate: 311 kb/s
Stream #0.0: Audio: wmav2, 32000 Hz, 2 channels, s16, 32 kb/s
Stream #0.1: Data: [0][0][0][0] / 0x0000
Stream #0.2: Video: wmv3 (Main), yuv420p, 320x240, 241 kb/s, 29.97 tbr, 1k tbn, 1k tbc
Stream #0.3: Audio: wmav2, 16000 Hz, 1 channels, s16, 10 kb/s
Stream #0.4: Video: wmv3 (Main), yuv420p, 160x120, 28 kb/s, 14.99 tbr, 1k tbn, 1k tbc
Unsupported codec with id 0 for input stream 1
stream_index=2
stream_index=4
stream_index=2
stream_index=2
stream_index=2
stream_index=2
stream_index=4
stream_index=2
stream_index=3
stream_index=0
stream_index=4
stream_index=4
stream_index=2
stream_index=2
stream_index=2
stream_index=2
stream_index=2
stream_index=4
stream_index=0
stream_index=2
stream_index=2
stream_index=4
stream_index=2
stream_index=2
先前提過的 mms 系列的實作會要求串流伺服器回傳所有的串流,但並不是所有的伺服器會回傳全部。這個例子恰好回傳最後一組影音串流,剛好為品質最差的那一組:
qty:~ qrtt1$ ffprobe -show_packets mmsh://media.uvcm.eu/maya4ok |grep stream_index|head -n 30
ffprobe version 0.8.2, Copyright (c) 2007-2011 the FFmpeg developers
built on Aug 16 2011 23:33:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: --disable-doc --disable-ffserver --disable-muxers --disable-avdevice --disable-postproc --disable-avfilter --disable-bsfs --disable-filters --disable-devices --disable-encoders --disable-asm --disable-bzlib --disable-zlib --prefix=/opt/ffmpeg
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
[wmv3 @ 0x10107de00] Extra data: 8 bits left, value: 0
[wmv3 @ 0x101080200] Extra data: 8 bits left, value: 0
[wmv3 @ 0x101082600] Extra data: 8 bits left, value: 0
[wmv3 @ 0x101084a00] Extra data: 8 bits left, value: 0
[wmv3 @ 0x101089200] Extra data: 8 bits left, value: 0
[asf @ 0x10104e000] max_analyze_duration 5000000 reached at 5120000
[asf @ 0x10104e000] Estimating duration from bitrate, this may be inaccurate
Input #0, asf, from 'mmsh://media.uvcm.eu/maya4ok':
Metadata:
WM/ParentalRating: Uploaded by: www.evangelist-online.net
Uploaded by : www.evangelist-online.net
WMFSDKVersion : 11.0.6002.18049
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
genre : Христианское ТВ "Библейский маяк"
title : "Jesus, ich liebe Dich"
artist : "Anja Schraal & Kinder"
copyright : Anja Schraal
comment : "Музыкальная коллекция"
Duration: N/A, start: 18.491000, bitrate: 1731 kb/s
Stream #0.0: Audio: wmav2, 44100 Hz, 2 channels, s16, 128 kb/s
Stream #0.1: Audio: wmav2, 48000 Hz, 2 channels, s16, 96 kb/s
Stream #0.2: Audio: wmav2, 44100 Hz, 2 channels, s16, 80 kb/s
Stream #0.3: Audio: wmav2, 44100 Hz, 2 channels, s16, 31 kb/s
Stream #0.4: Video: wmv3 (Main), yuv420p, 640x480, 864 kb/s, 1k tbr, 1k tbn, 1k tbc
Stream #0.5: Video: wmv3 (Main), yuv420p, 384x288, 240 kb/s, 1k tbr, 1k tbn, 1k tbc
Stream #0.6: Video: wmv3 (Main), yuv420p, 384x288, 158 kb/s, 1k tbr, 1k tbn, 1k tbc
Stream #0.7: Video: wmv3 (Main), yuv420p, 384x288, 84 kb/s, 1k tbr, 1k tbn, 1k tbc
Stream #0.8: Audio: wmav2, 8000 Hz, 2 channels, s16, 12 kb/s
Stream #0.9: Video: wmv3 (Main), yuv420p, 192x144, 36 kb/s, 12.50 tbr, 1k tbn, 1k tbc
stream_index=9
stream_index=8
stream_index=9
stream_index=9
stream_index=9
stream_index=9
stream_index=9
stream_index=8
stream_index=9
stream_index=9
stream_index=9
stream_index=9
stream_index=8
stream_index=9
stream_index=9
這個例子裡,你會看到影像串流不包含 pts,這會影響到播放器實作是否有處理這個問題。在不含 pts 的情況下,通常會採用 dts 取代。若沒處理,那很可能播出來的情況是只有聲音沒有影像。因為即使解出了 Video Frame 也不知該在什麼時候畫出來。
qty:~ qrtt1$ ffprobe -show_packets mmsh://72.13.81.34/16931 | head -n 30
ffprobe version 0.8.2, Copyright (c) 2007-2011 the FFmpeg developers
built on Aug 16 2011 23:33:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
configuration: --disable-doc --disable-ffserver --disable-muxers --disable-avdevice --disable-postproc --disable-avfilter --disable-bsfs --disable-filters --disable-devices --disable-encoders --disable-asm --disable-bzlib --disable-zlib --prefix=/opt/ffmpeg
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
[asf @ 0x10104e000] max_analyze_duration 5000000 reached at 5000000
[asf @ 0x10104e000] Estimating duration from bitrate, this may be inaccurate
Input #0, asf, from 'mmsh://72.13.81.34/16931':
Metadata:
WMFSDKVersion : 11.0.5721.5251
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
Duration: N/A, start: 286.213000, bitrate: 245 kb/s
Stream #0.0: Audio: wmav2, 16000 Hz, 1 channels, s16, 12 kb/s
Stream #0.1: Video: vc1 (Advanced), yuv420p, 400x300, 233 kb/s, 8 fps, 8 tbr, 1k tbn, 8 tbc
[PACKET]
codec_type=video
stream_index=1
pts=N/A
pts_time=N/A
dts=290356
dts_time=290.356000
duration=125
duration_time=0.125000
size=3178.000000
pos=5105
flags=K
[/PACKET]
[PACKET]
codec_type=video
stream_index=1
pts=N/A
pts_time=N/A
dts=290456
dts_time=290.456000
duration=125
duration_time=0.125000
size=2642.000000
pos=9437
flags=_
[/PACKET]