0

以下は、ffmpeg コマンドの出力です

出力に示されているように、マイク入力を/dev/snd/pcmC3D0cとして参照するために File descriptor in bad state エラーを受け取りました。ウェブカメラ マイクは card3 であり、そのSTREAM0ファイルは、マイクがフォーマットS16_LEのオーディオ フォーマットを持っていることを示しました。また、それがキャプチャ デバイスであり、その pcm id がpcmC3D0c であることも確認されました (C3 はカード番号で、D0 はデバイス番号です)。

. 次に、 /dev/snd/ディレクトリを調べて正しいデバイスであることを確認し、適切で完全な説明を確認しました。/dev/snd フォルダーは、マイクが/dev/snd/pcmC3D0c

であることを確認しました。次に、アクセス許可と所有権をチェックして、そのデバイスを使用できることを確認しました。したがって、使用する正しいデバイスを特定する限り、/dev/snd/pcmC3D0cが正しいデバイスであると確信しています。このエラーは OS に関係している可能性があると思いますが、これらのすべてのチェックの後でも、ファイル記述子の状態エラーの原因を特定できません。

さまざまな出力形式などをテストしましたが、違いはありませんでした。手がかりや提案はありますか?

# ./ffmpeg -y -f s16le -i /dev/snd/pcmC3D0c 1640.wmv

ffmpeg バージョン N-43170-gd84dd35 Copyright (c) 2000-2012 gcc 4.4.3 (GCC) 構成で 2012 年 8 月 24 日 09:16:05 にビルドされた FFmpeg 開発者: --enable-cross-compile --arch=arm - -cpu=cortex-a9 --target-os=linux --enable-runtime-cpudetect --prefix=/output --enable-pic --cross-prefix=/home/jasongipsyblues/Desktop/apps/android-ndk- r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --sysroot=/home/jasongipsyblues/Desktop/apps/android-ndk-r8b/platforms/android -14/arch-arm --enable-version3 --enable-gpl --enable-memalign-hack --disable-doc --enable-yasm --enable-libx264 --enable-zlib --extra-cflags=- I../x264 --extra-ldflags='-L../x264 -lc'

libavutil 51.66.100 / 51.66.100
libavcodec 54.48.100 / 54.48.100
Libavformat 54. 22.100 / 54. 22.100
Libavdevice 54. 2.100 / 54. 2.100 Libavfilter
3. 5.102 / 3.
5.102 Libswsale 2. 1.100 / 2.
1.100 Libswresample 0. 15.100 / 0. 15.100 / 0.15.100
Libpostproc 52. 0.100 / 52. 0.100

[S16LE @ 0xfd84f0] 無効なサンプルレート 0 がデフォルトの 44100 を使用して指定されました
[s16le @ 0xfd84f0] ビットレートから期間を見積もっています。これは不正確である可能性があります
入力ストリーム #0.0 の推定チャネルレイアウト: モノラル
入力 #0、s16le、'/dev/snd/pcmC3D0c から':
期間: 該当なし、ビットレート: 705 kb/s
ストリーム #0:0: オーディオ: pcm_s16le、44100 Hz、モノラル、s16、705 kb/s
出力 #0、asf、'1640.wmv' へ:
メタデータ: WM/EncodingSettings: Lavf54.22.100 ストリーム #0:0: オーディオ: wmav2 (a[1][0][0] / 0x0161)、44100 Hz、モノラル、s16、128 kb/s ストリーム マッピング: ストリーム #0 :0 -> #0:0 (pcm_s16le -> wmav2)
[q] を押して停止、[?] でヘルプ
/dev/snd/pcmC3D0c: File descriptor in bad state
size= 1kB time=00:00:00.00 bitrate= 0.0kbits/s
ビデオ:0kB オーディオ:0kB サブタイトル:0 グローバルヘッダー:0kB 多重化オーバーヘッド 5340.000000%

4

1 に答える 1

0

ライブオーディオを処理するためにOSパイプを導入する必要があるかもしれません... ffmpegには、パイプを使用するためのスクリプト化されたサンプルが十分に文書化されています。

ここを参照

シナリオに基づいて、ffmpeg に加えて VLC を検討することもできます。

于 2012-08-25T14:49:38.723 に答える