在Android设备上运行ffmpeg并选择输入设备时出现“文件描述符处于错误状态”错误

时间:2012-08-25 01:09:15

标签: android file-io ffmpeg

以下是ffmpeg命令的输出:#。/ fmpeg -y -f s16le -i / dev / snd / pcmC3D0c 1640.wmv - 从Logitech网络摄像头创建音频文件一个Android设备。

如输出所示,我收到一个文件描述符处于错误状态错误,用于将麦克风输入称为 / dev / snd / pcmC3D0c 我通过查看 / proc / asound 的内容来确定设备(网络摄像头麦克风)的价值。网络摄像头麦克风是card3,其 STREAM0 文件表示麦克风具有格式 S16_LE 的音频格式

还确认它是一个捕获设备及其'pcm id是 pcmC3D0c(C3是卡号,D0是设备号。然后我通过检查 / dev / snd / 确认了正确的设备目录确认其正确和完整的描述./ dev / snd文件夹确认麦克风是 / dev / snd / pcmC3D0c
我然后检查了权限和所有权确定我可以使用该设备。因此,只要确定要使用的正确设备,我相信 / dev / snd / pcmC3D0c 是正确的设备。我相信这个错误可能有一些东西到使用操作系统,然而在所有这些检查之后,我仍然无法弄清楚是什么给出了错误的文件描述符状态错误。

请注意我测试了不同的输出格式等,但没有任何差异。任何线索或建议项?

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

  

ffmpeg版本N-43170-gd84dd35版权所有(c)2000-2012 FFmpeg开发人员   建立于2012年8月24日09:16:05与gcc 4.4.3(GCC)配置: - 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
    libswscale 2. 1.100 / 2. 1.100
    libswresample 0. 15.100 / 0. 15.100
    libpostproc 52. 0.100 / 52. 0.100

  [s16le @ 0xfd84f0]使用默认值44100指定的采样率0无效   [s16le @ 0xfd84f0]估算比特率的持续时间,这可能是不准确的   输入流#0.0的猜测通道布局:单声道   输入#0,s16le,来自'/ dev / snd / pcmC3D0c':
    持续时间:N / A,比特率: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:处于错误状态的文件描述符
  size = 1kB time = 00:00:00.00 bitrate = 0.0kbits / s
  视频:0kB音频:0kB字幕:0全局标题:0kB多路复用开销5340.000000%

1 个答案:

答案 0 :(得分:0)

您可能需要引入一个OS管道才能处理实时音频... ffmpeg有很好的脚本化示例来使用管道。

请参阅here

根据您的情况,除了ffmpeg之外,您还可以查看VLC。