問題タブ [riff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 読み書き WAV/RIFFタグ
結果のファイルにメタデータでタグ付けできるようにしたい単純なオーディオ録音ユーティリティを作成しています。MP3 ファイルに ID3 タグを付けるライブラリを見つけるのは簡単ですが、私は WAV やおそらく FLAC のようなロスレス コーデックに興味があります。
私が理解しているように、WAVE ファイルは実際には RIFF ファイル タイプのサブセットであり、波形の「チャンク」とメタデータの「チャンク」の両方を含むことができます。
これらのRIFFタグをWAVEファイルとの間で読み書きする方法を理解するのに役立つライブラリ、仕様、またはサンプルプロジェクトの方向性を誰か教えてもらえますか?
また、FLAC に同様のタグが存在するかどうか、およびメタデータを FLAC ファイルに書き込むための適切なリソースがあるかどうかを知っている人はいますか?
c# - WAV (RIFF) ファイルをバイトレベルで操作するのに助けが必要
オーディオ ファイル (*.wav) を録音し、自動的にタグ付けして名前を付けるアプリケーションを C# で作成しています。Wave ファイルは、波形データ チャンクに加えてメタ データ チャンクを含むことができる RIFF ファイル (AVI など) です。だから今、私はRIFFメタデータを記録されたwaveファイルに読み書きする方法を理解しようとしています.
私はファイルの記録に NAudio を使用しており、RIFF タグを読み書きする方法について、フォーラムやSOで質問しました。多くの良い回答を受け取りましたが、RIFF チャンクの読み取りと書き込みを希望するほど簡単に行えるソリューションはありませんでした。
しかし、もっと重要なことは、バイト レベルでファイルを扱った経験がほとんどないことです。これは、学ぶ良い機会になると思います。だから今、私はRIFFファイルを読み込んで、ファイルからメタデータを読み書きできる独自のクラスを書きたいと思っています。
私は C# でストリームを使用しましたが、常にストリーム全体を一度に使用します。そのため、ファイルをバイトごとに検討する必要があることに少し戸惑っています。具体的には、ファイルの途中でバイトを削除または挿入するにはどうすればよいですか? 以下のコードに示すように、FileStream を介してファイルをバイト配列 (byte[]) に読み取ろうとしました。
そして、Visual Studio デバッガーを通して、最初の 4 バイトがファイルの RIFF ヘッダーであることを確認できました。
しかし、配列は、値の挿入や削除などのサイズを変更する操作を実行するときに対処するのが面倒です。だから私は、このように byte[] を List にできると思っていました。
これにより、ファイルのバイト単位の操作が非常に簡単になりますが、System.IO名前空間にクラスのようなものが欠けているのではないかと心配しています。私は正しい軌道に乗っていますか、それともこれを行うためのより良い方法はありますか? また、私はパフォーマンスにあまり関心がなく、ポインターやthis guyのような安全でないコード ブロックを処理したくないことも言及しておく必要があります。
RIFF/WAV ファイル形式に関する良い記事が参考になる場合は、こちらをご覧ください。
video - 別のストリームをやみくもにコピーしながら、AVI ビデオ ストリームを圧縮する
少し奇妙なフォーマットのビデオファイルがたくさんあります。通常のビデオ ストリームと、(GPS 同期ハードウェア クロックからの) ビデオ フレームの正確なタイム スタンプを格納するために使用されるテキスト ストリームもあります。からの出力例を次に示しますffmpeg
。
動画は非圧縮なので圧縮したい。私はffmpeg
その部分にうまく使用しています。問題は、データ ストリーム #0.1 を完全に変更せずに出力ファイルにマップすることです。いろいろ試してみましたが、それを実現する方法が見つかりませんffmpeg
。オーディオ、ビデオ、および字幕ストリームのみを処理する必要があり、テキストは有効な字幕形式ではありません。ビデオを作った人は引退したばかりなので、入力形式を変更することはできません。何か案は?
c# - OGGオーディオファイルをRIFFコンテナにパックするには?
ogg オーディオ ファイルと、一連のバイトとして保存されるいくつかの情報があります。このオーディオと情報を RIFF などの単一のコンテナーにパックする必要があります。.NET で記述できるソリューションを探しています。
c - WAVサンプルデータから周波数を抽出するには?
シンプルな PCM WAV ファイルを読み取るアプリケーションを c で開発しています。私の質問は、サンプルの頻度を抽出できるように、データ チャンクからサンプルをどのように解釈する必要があるかということです。
WAV の例を考えると、元のデータはどのように周波数を表すことができるでしょうか。たとえば、このデータ チャンク、24 17 1e f3、ステレオの場合、16 ビット、左チャンネルのサンプルは 0x1724 = 5924d で、5924Hz を意味します。署名されたサンプルや、人間が聞くことができない周波数の場合、どうすればよいでしょうか?
.net - .ani ファイルのロード方法を示すソース コードはありますか?
.ani ファイルの内部を取得できる .NET ライブラリまたはソース コードはどこかにありますか? ほとんどのローダーでは、カーソル オブジェクトを他のインターフェイスに渡すことができますが、アイコンやタイミングなどについてカーソル オブジェクトにクエリを実行する必要があります。
(必要に応じて、この仕様に基づいて独自のリーダーを作成できます: http://www.gdgsoft.com/anituner/help/aniformat.htm。)
ios - iOS の RIFF コンテナーから AAC オーディオを読み取る
3 つのチャンクを持つ RIFF コンテナーであるファイルがあります。RIFF チャンクには「WAVE」識別子があります。最初のチャンクは「fmt」、2 番目は「data」、最後は「eink」(自分のチャンク) です。そのファイルは、directshow を使用する C# コードによって生成されます。オーディオは AAC でエンコードされます。そのため、iOS 5.* では、「データ」チャンクに保存されているオーディオを再生したくありません。「データ」チャンク全体を読み取って、それらのバイトを のメソッドで
使用しようとしました。しかし、それは別の方法で動作するようです。
思った以上に、そのバイトで独自のファイルを作成して再生することはできましたが、他に正しい方法はありますか? 調べる方法を教えてください。どこで読む?または他の方法。[initWithData:error:][1]
AVAudioPlayer
m4a
java - RIFFファイルを読み取るときのNegativeArraySizeException
私は現在JavaマルチメディアIOプロジェクトに取り組んでおり、RIFFInputStreamをテストしていましたが、テスト中にNegativeArraySizeExceptionが発生しました。以下は、デバッグコンソールからの出力です。
この例外を最初に受け取ったとき、RIFFビューアをダウンロードしましたが、ビューアには次のチャンクが表示されていました。
したがって、何が起こっているのかは、RIFFListコンストラクターコードがmovi
リストの作成に問題を抱えているように見えます。私が知りたいのは、なぜストリームから負の数を受け取っているのですか?
ありがとう、リアム。
windows - 生ストリームから正しい wav ファイルを生成できない
生のオーディオ データ ストリームをそのWAVEFORMATEXTENSIBLE構造体と共にキャプチャしました。 WAVEFORMATEXTENSIBLEは次の図に示されています。
wavファイルの基準に従って、rawビットをwavファイルに書き込んでみました。私がすることは:
「リフ」と書きます。
DWORD を書き込みます。(ファイルサイズ - sizeof("RIFF") - sizeof(DWORD))。
=== WaveFormat チャンク ===
「WAVEfmt」と書く
DWORD を書き込みます。(WAVEFORMATEXTENSIBLE 構造体のサイズ)
WAVEFORMATEXTENSIBLE 構造体を記述します。
=== ファクトチャンク ===
「事実」を書く
DWORD を書き込みます。( 4 )
DWORD を書き込みます。(ストリーム内のサンプル数。 sizeof(rawdata)*8/wBitsPerSample である必要があります)。
=== データチャンク ===
「データ」と書く
DWORD (生データのサイズ) を書き込む
生データを書き込みます。
上記の手順で wav ファイルを取得した後、wav ファイルをメディア プレーヤーで再生しました。音はありません。Audacity で再生すると歪んだ音が聞こえます。それが正しいオーディオであることがわかりますが、音はノイズで歪む。
生データはこちら
生成したwavファイルはこちら
同じ方法を使用してIEEE-floatデータをwavファイルに変換すると、問題なく動作するため、非常に混乱します。