我可以从媒体获取音频数据以提供给定的[audio-track-id]而不播放它(使用libvlc)吗?

时间:2019-05-17 14:17:56

标签: c# libvlc

我想从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,我不知道如何在不播放音频的情况下快速保存音频数据。

如果您对这两个主题中的任何一个有任何想法(或我错了),请告诉我。 我不想让我的编码工作,只需要一些想法就可以了。

  • 我是否在命令行中使用了错误的参数?
  • 或者libvlc中是否有一种方法可以加快播放速度(使用回调),但不能确保wave数据加速?

0 个答案:

没有答案