FFmpeg

cannot set channel count to 2 (Invalid argument) hw:0,0: Input/output error

投稿日:

下記のようなコマンドで Web カメラの映像と音声を MPEG2-TS(H.264/AAC-LC) にトランスコード.

ffmpeg -f video4linux2 -s 400x224 -r 30 -i /dev/video0 -f alsa -i hw:0,0 -acodec aac -strict experimental -ab 128k -ac 2 -ar 44100 -s 400x224 -vcodec libx264 -profile:v high -level 4.2 -preset ultrafast -b:v 400k -pix_fmt yuv420p -threads 1 -t 600 -f mpegts -y out.ts

Logicool C910 では正常にトランスコードが可能.

一方,Logicool C270, BUFFALO BSW13K08H では同じコマンドにも関わらず下記のエラー.

[alsa @ 0x0000000] cannot set channel count to 2 (Invalid argument)
hw:0,0: Input/output error

C910 のマイクはステレオ,C270 のマイクはモノラル.

エラーメッセージ通り,オーディオのチャンネル数を適切に設定すればよいかと思い,-ac 2 を -ac 1 にするもエラーは解消せず.

結論はというと,ac オプションの位置が悪かったため.

-f alsa -ac 1 のように,-f alsa の直後に記述するとエラーは解消.

それではなぜ C910 は ac オプションの位置が最初のままでも正常にトランスコードできていたのか?については謎.

オプション位置については,下記のページを読んでいてピンときた.

Microfon von Webcam nutzen
http://www.forum-raspberrypi.de/Thread-microfon-von-webcam-nutzen

-FFmpeg

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.