VLCでは再生できるけどエンコードに失敗する動画があってffmpegで音声だけaacに分離してwavに変換しようとしたが失敗した。 以前しばらく調べても方法がわからなかったけどclaudeに聞いたら教えてくれたのでメモっておく。

実行ファイルや対象ファイルは適宜環境に合わせて

"C:\Program Files\VideoLAN\VLC\vlc.exe" input.m4a --sout="#transcode{acodec=s16l,channels=2,samplerate=44100}:std{access=file,mux=wav,dst=output.wav}" vlc://quit

追記

音声だけ抜きだすと音ズレが発生してしまうので動画全体をVLCでエンコード→それをHandbrakeで再エンコで変換できた。何故かVLCエンコード→Aviutlで再エンコだと音ズレができる。

"C:\Program Files\VideoLAN\VLC\vlc.exe" input.mkv --sout="#transcode{vcodec=h264,venc=x264{crf=18},deinterlace,acodec=mp4a,ab=256,channels=2,samplerate=48000}:std{access=file,mux=mp4,dst=D:\dvd\tmp\output_vlc.mp4}" vlc://quit

謎なのはVLCのこのコマンドは数回に一回しか成功しない。失敗したときはエンコされずにすぐにウィンドウが閉じる。同一のコマンドを即座に履歴から呼び出すと成功したりする。なんで?

更に追記

音声だけだと失敗してたのはサンプルレートの設定を間違えてたのが原因っぽい