Daily Grind

システム開発関連の忘備録です

WiresharkでH.264のRTPパケットからキーフレームを見つける方法

H.264としてデコード

 
H.264のRTPパケットを、H.264としてデコードさせるには、WireSharkのメニューから、「Edit > Preference」を開き、ProtocolのH264に対して、Dynamic payload typesに、98とか番号を入れる。


f:id:claywheels:20171025153509p:plain

キーフレームのフィルタ

 INFOに「start:IDR-slice」のところが、キーフレーム。

 nal unit typeが5なら、IDRフレームみたい。(フィルタだと「h264.nal_unit_type == 5」)
 
H.264 RTPペイロードフォーマット
http://www.ttc.or.jp/jp/document_list/free/TR/TR-IETF-RFC3984v1.pdf


 (画像では「h264.slice_type eq 7」フィルタしてますが、これがキーフレームのフィルタというわけではないので、注意)

f:id:claywheels:20171025153927p:plain

※IDRフレームについて

 IDRフレームは、H.264/AVC になって従来のMPEGのIフレームの機能を拡張したもので、Iフレームの1種。
 従来のMPEGでは、IフレームがGOPの境界となっていましたが、H.264/AVCではIDRフレームがGOPの境界となるため、これをキーフレームと呼んでいる。

空きメモリ確認

bash-3.2# sync; echo 3 > /proc/sys/vm/drop_caches; vmstat -a

バッファの内容をディスクに書き込み、キャッシュをクリアしてvmstat

以下のようにfreeメモリ値が表示される。

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 0  1      0  57580 159152 111568    0    0   349     5 1015 1741  9  3 85  3  0

テープ操作コマンド一覧

テープ操作コマンド一覧

コマンド 説明
mt -f /dev/nst0 eod 最後まで読み込む
mt -f /dev/nst0 rewind 最初まで巻き戻す
mt -f /dev/nst0 status 状態を確認
mt -f /dev/nst0 bsf 1 指定した数値だけ巻き戻し
mt -f /dev/nst0 fsf 1 指定した数値だけ進む
mt -f /dev/nst0 weof 1 指定した数値だけEOFを書き込む
mt -f /dev/nst0 erace テープを削除する
tar cvf /dev/nst0 dammy.tgz ファイルを書き込む
tar tvf /dev/nst0 書き込まれているデータを表示する
tar xvf /dev/nst0 書き込まれているデータを取り出す
mt -f /dev/nst0 offline テープの取り出し
mt -f /dev/nst0 status;tar tvf /dev/nst0;mt -f /dev/nst0 fsf 現在位置を表示して、中身を表示して次に移動する


テープヘッダー位置について

+―――+―――――+―――+―――――+―――+―――――+―――+―――――+―――+
|BOT|DATA1|EOF|DATA1|EOF|DATA2|EOF|INFO2|EOF|
+―――+―――――+―――+―――――+―――+―――――+―――+―――――+―――+

rewind :BOTまで移動
fsf :次のEOFまで移動
tar :次のEOFの前に移動(データ部のEOFであって、テープとしてはEOFまでいかない)

参考サイト
http://se-memo.cocolog-nifty.com/blog/2008/08/post_6497.html
http://futuremix.org/2004/11/linux-tar-backup
http://d.hatena.ne.jp/iww/20110616/1308192206

Linuxで帯域制限

以下のコマンドを入力すると、eth0の帯域が200mbpsに制限されます。

tc qdisc add dev eth0 root handle 1:0 tbf rate 200mbit burst 25kb limit 250kb

すでにコマンドが入力され、設定されている場合は以下のエラーが表示されます。

RTNETLINK answers: File exists

設定内容の確認は以下のコマンドです。

tc -s qdisc

設定を解除する場合は以下のコマンドです。

tc qdisc del dev eth0 root


【参考サイト】
http://www.hiihah.info/index.php?Linux%E3%81%A7tc%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%B8%AF%E5%9F%9F%E5%88%B6%E5%BE%A1

遅延とか設定できる模様
http://blog.bitmeister.jp/?p=3930