我試圖使用Xuggler庫,其中有兩個數據流進行轉碼的FLV文件在Java中:
流0:視頻,H264 AVC1
流1:音頻,AAC,MP4AXuggler閱讀某些FLV文件
現在,輸入容器上的getNumStreams()
調用返回2個正確的流。
我的問題出現了,因爲兩個流的類型都是CODEC_TYPE_UNKNOWN
而不是CODEC_TYPE_VIDEO
/AUDIO。
因此我的代碼在這裏:
stream.getStreamCoder().getCodecType().equals(ICodec.Type.CODEC_TYPE_AUDIO)
不真正匹配特定的數據流。
我試圖手動分配一個流到流2通過罰款但是當我查詢IStreamCoder
編解碼器,它是空的。 CodecID
的IStreamCoder
是正確的CODEC_ID_AAC
,編解碼器類型是CODEC_TYPE_UNKNOWN
,正如我上面提到的那樣。
現在我的問題是,爲什麼這些流標記爲未知,而不是正確的音頻/視頻?這段代碼完美地適用於大多數其他格式,如mp4容器。我的總體目標是提取音頻流進行轉碼。
請告訴你是否需要一個示例代碼段來更好地回答這個問題,因爲我不得不剪掉一些我必須產生的東西。
編輯:我認爲這不是一個Xuggler的問題,因爲我試圖在轉換時使用VLC和VLC崩潰來轉換問題FLV,而我嘗試了一個已知的工作mp4文件轉換爲MP3,並通過罰款