請教各位,我再WPF 程式中,用vlc 播放音頻檔案,播放的音頻最后會少1秒左右,。是為什么?
例如我有2個音頻AB,其中A音頻的內容是“我有一只小毛驢”,
B音頻的內容是“今天天氣好晴朗,處處好風光。”
當我播放A音頻時候,播放出來的內容是“我有一只小”,后面“毛驢”2個字就沒有出來。
當我播放B音頻的時候,播放出來的內容是“今天天氣好晴朗,處處好”,“風光”又沒有讀出來。
其他更長的音頻也是如此,反正是最后1秒左右的內容沒有讀出來,請問各位是為什么?
應該不是GC 的問題吧,如果是GC,那為什么每次音頻都是最后0.5秒左右的內容沒有,而不是我剛剛播放了,播放了幾秒就被GC了?
<Window x:Class="WpfMusicText.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfMusicText"
xmlns:wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Content="播放" Width="120" Height="30" Click="ButtonBase_OnClick"></Button>
<wpf:VlcControl x:Name="vlcPlayer" Grid.Row="1" />
</Grid>
</Window>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
string currentDirectory = @"C:\Program Files (x86)\VideoLAN\VLC";
var vlcLibDirectory = new DirectoryInfo(currentDirectory);
var options = new string[]
{
//添加日志
};
//初始化播放器
this.vlcPlayer.SourceProvider.CreatePlayer(vlcLibDirectory, options);
this.vlcPlayer.SourceProvider.MediaPlayer.Play(new Uri(@"D:\443215.mp3"));//本地檔案。
}
}
uj5u.com熱心網友回復:
有人嗎
uj5u.com熱心網友回復:
遇到這種問題首先先測驗一下:1.使用VLC自帶播放器播放音頻檔案 確認是否是代碼引起的
2.使用其他播放器播放音頻檔案 確認是否是VLC自己的問題
3.轉換成其他音頻格式進行1 2步驟 確認是否是音頻格式引起的
uj5u.com熱心網友回復:
用系統自帶的播放器,或者直接用vlc播放器播放該音頻,是正常播放的,但是用這個代碼播放,就會出現這個問題
uj5u.com熱心網友回復:
我剛剛試了,把MP3轉換成wav。播放就沒有問題。
uj5u.com熱心網友回復:
直接用VLC沒問題 而代碼有問題 有沒有可能是你使用VLC庫用的有問題 或者庫版本不對轉成wav可以播放 給你提供了一個解決辦法就是使用wav或者將其他格式音頻轉成wav
uj5u.com熱心網友回復:
幫頂 同問,而且少于2秒的音頻都播不出來。uj5u.com熱心網友回復:
vlc本身沒什么問題,但勸你放棄Vlc.DotNet.Wpf,它是一個很爛的專案,即便你解決了上面的問題,后面也還有一堆坑等著你.運行官方的demo,快速連續點擊播放/停止,用不了幾下就會卡死
搜索 Vlc.DotNet.Wpf stop Deadlock 會發現幾年前就有很多人提出過該問題,github上的issue里面也有,但很早就被設為已解決并關閉了.
改用 unosquare/ffmediaelement 吧
不過也別指望會好到哪里去,同樣是官方demo,同樣的方法,快速連續點擊播放/停止,用不了幾下就會出問題,不過沒Vlc.DotNet.Wpf那么致命
順帶提一句,github上關于WPF Video搜索到的前30頁我全部看過了.
另外還有幾個可以嘗試:
Mpv.NET-lib
Meta.Vlc.DEMO
uj5u.com熱心網友回復:
看錯了,還以為你是要播放視頻如果是想播放音頻的話 NAudio 是不錯的選擇
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/26266.html
標籤:C#
