2012年6月7日木曜日

flvのffmpegコンバートできない件対策

どうやら古いffmpegでしか発生しないみたいですが、

Application provided invalid, non monotonically 
increasing dts to muxer in stream 0: 数値 < 数値
というエラーがでて、動作しないことがあるらしい。
なにかというと、データ内部のパケットが順番にきちんと並んでいない場合に発生するエラーらしいです。


というわけで、さくっと対策してみた、
以前のhttpTakStreamingをつくったときにわかっていたことなんですが、rtmpで流れてくるデータはたまにaudioとvideoのデータの順番いれかわっていることがあります。

とりあえず、この順番の入れ替えを直せばきちんと動作するか試したかったのでaudioデータは順番にqueueにいったんいれ、videoデータをうけとった瞬間にvideoデータのタイムスタンプまでaudioデータをいれるという方法を実施し、整列させました。

21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - videoTimestamp:10390
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10402
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10449
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - queueSize:0
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - videoTimestamp:10490
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10495
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - queueSize:0
21:14:06 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - videoTimestamp:10521
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10542
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10588
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - queueSize:1
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - videoTimestamp:10590
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10634
21:14:07 [New I/O client worker #1-1] INFO  com.ttProject.flazr.StdoutWriter - audioTimestamp:10681

queueSizeが0でないところでは、データが入れ替わっていたところになります。
で、ためしたところ、ffmpegの動作ができました。

まぁ、冒頭にも書きましたが、新しいffmpegの場合きちんと解釈して動作してくれるのでわざわざこんなことする必要はないです。

ffmpegでコンバートしてて、冒頭のエラーをみかけたら、タイムスタンプの順番が狂ってる?と思えばいいかなと思います。

ではでは〜


0 件のコメント:

コメントを投稿