この場合、私は実際にmovファイルからフレームを解析したいと考えています。エンコードされたh264フレームを取得します。私はffmpegを使ってそうすることができましたが、私がffmpeg -i test* test.mov
を使って再び映画を作ろうとすると、test00: Invalid data found when processing input
が得られ、フレームの構造に間違いがあります。 、XXは、それがI-であるかどうかと言うれる.movファイルを.h264ファイルに変換する
00 00 00 01 XXデータ-------------
:私はそれを理解するように、フレームには、次のような外観を持っている必要がありますPフレームまたはBフレーム。 (タイプ(XX)= 5?)、P(タイプ(XX)= 7?)またはB(タイプ(XX)= 8?)フレームである場合、type(XX) = 0x0F && XX
は言う。私はこれらの数字については分かりませんが、私はそれを探していましたが、良い情報源は見つかりませんでした。 NALUは異なるフレームのために何番目の番号をつけなければならないのですか?
4B =サイズ、1B = XX、その後データ:私はMOVファイルにav_read_frameを使用する場合
はとにかく、私はこのように見えるフレームを取得します。 (少なくともこれは私が私が得ると思うものです)
私がフレームを格納するファイルは、いつものサイズです。ヘキサエディタで見るとそうでなければもちろんです。 2つのフレームについてはXXが常に65(すなわち、タイプ(XX)= 5)であり、その後61(すなわち、タイプ(XX)= 1)であり、1フレームについては65である。
これらのフレームは次のようなものだと思います。ただし、異なるフレームタイプのタイプ番号についての私の前提は誤っている可能性が高いです。 (ISO/IEC 14496-10を除いて、これについての読書の提案はありませんが、私はそれを本当に理解していません)。
私はサイズを削除し、XXバイトの前に00 00 00 01とデータを追加しようとしましたが、成功しませんでした。どのように私はフレームを有効なH264エンコードされたフレームに変更することができるかについてのヒント?
+1。また、 '-vbsf h264_mp4toannexb'オプションが実際の附属書Bストリームを抽出するために必要となるかもしれないと思います。 – misha
Alexと@mishaに感謝します。私はこの解決策を認識していますが、アイフォーン上でフレームの実際の抽出を行っているので、私はプロンプトでそれを行うことはできません、私はコードでこれを行うための方法が必要です。どのような提案をどこから始めるのですか?これを行う理由は、フレームをさらに処理するために、h264フレームをWebサーバー経由で外部フレームワークにストリームする必要があるためです。 –
ffmpegソースから始めます。それはあなたが見るためにすべてそこにあります。 – misha