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 件のコメント:
コメントを投稿