Skip to content
qrtt1 edited this page Sep 4, 2011 · 2 revisions

FFmpeg 是一個跨平台的多媒體影音處理解決方案。我們能利用它錄製、轉換媒體格式,亦能使用 libavformat 與 libavcodec 函式庫實作自己的媒體播放程式。

此文件的主要功能在於記錄如何在 Windows 下編譯 FFmpeg Tools,並示範如何 ffprobe 分析串流資料與提供分析範例。主要內容摘要如下:

  • 使用 MSYS 與 MinGW 編譯 FFmpeg
  • 影音資料分析工具 ffprobe
  • 查詢 ffprobe 支援的協定
  • 檢視影音封包內容與案例分析

如果您手邊沒有編譯環境,需要預先編譯版本,可以由此下載:prebuilt ffmpeg tools

編譯 FFmpeg (MSYS + MinGW)

要在 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

當執行 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 支援的協定

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 結果識讀

$ 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 製作串流播放、處理工具相當有幫助。

AVPacket 資料識讀

我們先由正常的例子開始觀察 -show_packets 的效果。在這裡我們採用 -show_packets 參數,並配合 head 指令避免它不停地印出訊息。要印多少行請依您能蒐集到足夠的資訊為主。

qty:~ qrtt1$ ffprobe -show_packets 'mmsh://livewmstream-ws.bbc.co.uk.edgestreams.net/reflector:43117?BBC-UID=444ec6a1ba7631ba53383dae61d9d54819d258e64080817404ff6496334ac9aa_n&amp;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&amp;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]

CASE STUDY:過多串流封包

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

CASE STUDY:傳回品質不佳的 stream

先前提過的 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

CASE STUDY:消失的 pts

這個例子裡,你會看到影像串流不包含 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]