2017-04-14 23 views
2

MPEG、MPEG-TSおよびMPEG-PSファイルおよびライブストリーム(ネットワーク/ UDP/RTPストリーム)からフレーム(ビデオおよびメタデータ)を取り出そうとしています。 。私はJCODECを使ってこれを行うことを検討していましたが、FrameGrab/FrameGrab8Bitクラスを使い始めることから始め、それらのフォーマットが「一時的にサポートされていません」というエラーが発生しました。私は古いコードを使うことができるかどうかを確かめるためにいくつかのコミットを調べましたが、2103年から2015年にかけて、これらのファイルが両方とも "一時的にサポートされていません"というように見えます。JCODECはMPEG-TSまたはMPEG-PSをサポートしています

私はその後

public static FrameGrab8Bit createFrameGrab8Bit(SeekableByteChannel in) throws IOException, JCodecException { 
... 
SeekableDemuxerTrack videoTrack = null; 
... 
case MPEG_PS: 
    MPSDemuxer psd = new MPSDemuxer(in); 
    List tracks = psd.getVideoTracks(); 
    videoTrack = (SeekableDemuxerTrack)tracks.get(0); 
    break; 
case MPEG_TS: 
    in.setPosition(0); 
    MTSDemuxer tsd = new MTSDemuxer(in); 
    ReadableByteChannel program = tsd.getProgram(481); 
    MPSDemuxer ptsd = new MPSDemuxer(program); 
    List<MPEGDemuxerTrack> tstracks = ptsd.getVideoTracks(); 
    MPEGDemuxerTrack muxtrack = tstracks.get(0); 
    videoTrack = (SeekableDemuxerTrack)tstracks.get(0); 
    break; 
... 

...以下のコードに入れてバックFrameGrab8Bitクラスに物事を接続しようとしたが、私はparsePacket機能でMTSDemuxer.javaクラスのパケットヘッダアサーションが失敗に走りました:コードはアサートを通過できたが、その後(tstracks.get(0)がSeekablに変換することはできませんvideoTrack = (SeekableDemuxerTrack)tstracks.get(0)で失敗:

public static MTSPacket parsePacket(ByteBuffer buffer) { 
    int marker = buffer.get() & 0xff; 
    int marker = by & 0xff; 
    Assert.assertEquals(0x47, marker); 
... 

私はシーク可能なバイトチャネル(in.setPosition(0) IE)の位置をリセットしたときにことがわかりましたeDemuxerTrack)

私は自分の時間をウエストしていますか?これらのフォーマットはライブラリのどこかでサポートされていますが、私はそれらを見つけることができませんか?

また、コード内を移動してクイックテストアプリケーションを作成した後、デマルチプレクサから出るビデオフレームはすべて、ビデオフレームです。ビデオフレームに関連付けられたメタデータフレームを取得する方法はありませんか?参考のため

、私はからテストファイルを使用しています。将来的には誰もこの質問を有する場合http://samples.ffmpeg.org/MPEG2/mpegts-klv/

答えて

0

。プロジェクトのGitHubページの開発者からこの質問に回答がありました。応答:

MPEG TSは、MP4の範囲ではサポートされていません。実際にTSストリームを探し出すことはできません(ストリームストリーム全体をインデックス化しない限り)。

また、この機能を実装する方法についても尋ねました。私はそれは物事がFrameGrab8Bitクラスと互換になるようにSeekableDemuxerTrackのオフに構築することがMTSDemuxerクラスを再加工することによって行うことができることを考えて、次の応答を得た:

ありますようだから、それは見ていませんSeekableDemuxerTrackの上にTS demuxerを実装するのは非常に意味があります。 TS demuxerにはあまり注意を払っていないので、どんな入力も大歓迎です。

私はこれを(SeekableDemuxerTrackインターフェイスのMTSDemuxerクラスをビルドする)ファイルにはうまくいくと思います。しかし、その考えを完全に払拭することなく、私は確かに言えませんでした(このソリューションは、ライブMPEG-TS/PS接続ではうまくいかないことは間違いありません)。

関連する問題