我想从DVD和电影文件中加载和保存音频数据(对于给定的音轨ID),而不必播放整部电影-很快。 使用C#的libvlc API调用可以吗?
我在VLC用法方面还很陌生,但是我知道如何使用libvlc_audio_set_callbacks,因此通过使用回调,我可以将其保存到WAV文件中。 我也知道如何通过vlc.exe命令行保存音频。 这两个问题是回调仅在正在播放时才起作用(太慢),并且在vlc命令的情况下这是有问题的,因为正如我所见,没有保证可以得到我想要的音轨。它会随机输出不同的音轨(但要始终小心地选择另一个音轨,而不是我想要的:-S。)
我将此用于命令行:
vlc.exe -I dummy dvdsimple:///G:\#1:2-1:2 --audio-track=3 --no-sout-spu --no-sout-video --sout-audio --ttl=-1 --sout "#transcode{acodec=s16l,channels=2}:std{access=file,mux=wav,dst=DVD_Lng3.wav}" vlc://quit
我也用以下方法进行了测试:
--audio-track-id=48515 //this is the ID from track-descriptions
--audio-language=hun
--audio-language=hu
结果是英语曲目(在大多数情况下),有时是其他... 如果我只运行一次命令行,它会给我德语,然后再次重新运行,并给我英语...所以它是随机的。
我正在C#中工作,我也可以使用命令行参数调用vlc.exe,但我不信任音频轨道ID。 对于libvlc,我不知道如何在不播放音频的情况下快速保存音频数据。
如果您对这两个主题中的任何一个有任何想法(或我错了),请告诉我。 我不想让我的编码工作,只需要一些想法就可以了。