国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

視頻格式轉(zhuǎn)換(avi、wmv、flv、mkv、rmvb、rm、3gp轉(zhuǎn)MP4、MP3)邊學(xué)邊開發(fā)

這篇具有很好參考價(jià)值的文章主要介紹了視頻格式轉(zhuǎn)換(avi、wmv、flv、mkv、rmvb、rm、3gp轉(zhuǎn)MP4、MP3)邊學(xué)邊開發(fā)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近想把視頻中的音樂提取成mp3,找了好多軟件,都不順手,所以自己動(dòng)手寫了這么一個(gè)小軟件。主要使用的是:ffmpeg.exe,轉(zhuǎn)換時(shí)候帶進(jìn)度條,可以轉(zhuǎn)換一個(gè)文件,也可以批量轉(zhuǎn)換文件。

一、先看一下軟件如何使用

視頻格式轉(zhuǎn)換,自己開發(fā)的小工具,wpf,microsoft,c#
軟件共有三部分:
1、選擇轉(zhuǎn)換的文件,文件格式可以是avi、wmv、flv、mkv、rmvb、rm、3gp;
2、輸出路徑和輸出格式選擇,輸出格式為MP3,MP4兩種。
3.轉(zhuǎn)換按鈕和進(jìn)度條顯示,1和2不設(shè)置完成后點(diǎn)擊開始轉(zhuǎn)換即可進(jìn)行視頻轉(zhuǎn)換。

二、演示操作流程

演示以下操作流程。

視頻轉(zhuǎn)換工具

三、主要源代碼

開發(fā)環(huán)境Windows10,Microsoft Visual Studio Ultimate 2012,WPF項(xiàng)目。

界面代碼
<Window x:Name="mainForm" x:Class="ConverVideo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="視頻轉(zhuǎn)換工具" Height="309.2" Width="832.21" Loaded="MainForm_Loaded" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" Background="#FF535353" Foreground="#FF336666" WindowStyle="None" BorderBrush="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}}" Icon="logo.ico">
    <Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="403*"/>
            <ColumnDefinition Width="38*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="271*"/>
            <RowDefinition Height="50*"/>
        </Grid.RowDefinitions>
        <GroupBox x:Name="SelectFileGB" Header="選擇轉(zhuǎn)換文件" HorizontalAlignment="Left" Margin="10,34,0,0" VerticalAlignment="Top" Height="107" Width="677" BorderBrush="#FFBCBCBC" OpacityMask="#FF336666" Foreground="#FFBCBCBC">
            <Button x:Name="SelectFileBT" Content="請選擇" HorizontalAlignment="Left" Height="70" VerticalAlignment="Top" Width="99" Margin="6,10,0,0" Click="SelectFileBT_Click" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" FontFamily="Arial Black" FontSize="20"/>
        </GroupBox>
        
        <Label x:Name="SelectFileInofLB" Content="&#x000A;&#x000A;&#x000A;" HorizontalAlignment="Left" Margin="123,58,0,0" VerticalAlignment="Top" Width="25" Height="70" RenderTransformOrigin="0,0" Foreground="#FFBCBCBC"/>
        <ScrollViewer Margin="147,44,77,123.8" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
            <Label x:Name="ll" Content="" Foreground="#FFBCBCBC"/>
        </ScrollViewer>
        <GroupBox x:Name="SelectOutPathGB" Header="輸出情況" HorizontalAlignment="Left" Margin="10,156,0,0" VerticalAlignment="Top" Width="677" Height="100" Foreground="#FFBCBCBC"></GroupBox>
        <Button x:Name="SelectOutPathBT" Content="選擇輸出目錄" HorizontalAlignment="Left" Margin="24,180,0,0" VerticalAlignment="Top" Width="96" Click="SelectOutPathBT_Click" Height="58" FontSize="14" FontFamily="Arial Black"/>

        <Label x:Name="OuptFlePathLB" Content="輸出路徑:" HorizontalAlignment="Left" Margin="127,180,0,0" VerticalAlignment="Top" Width="548" Foreground="#FFBCBCBC"/>
        <Label Content="輸出類型:" HorizontalAlignment="Left" Margin="127,212,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.434,0.892" Foreground="#FFBCBCBC"/>
        <ComboBox x:Name="FileExtentnameGB" HorizontalAlignment="Left" Margin="193,212,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem>MP4</ComboBoxItem>
            <ComboBoxItem IsSelected="True">MP3</ComboBoxItem>
        </ComboBox>
        <Grid Margin="10,9.2,75,12.8" Grid.Row="1">
            <ProgressBar Minimum="0" Maximum="100" Value="0" Name="pbStatus" />
            <TextBlock Text="{Binding ElementName=pbStatus, Path=Value, StringFormat={}{0:0}%}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FF046908" />
        </Grid>
        <Button x:Name="ConverBT" Content="開始轉(zhuǎn)換" HorizontalAlignment="Left" Margin="695,234,0,0" VerticalAlignment="Top" Width="125" Height="65" Click="ConverBT_Click" Grid.RowSpan="2" Grid.ColumnSpan="2" Foreground="#FFE73716" FontSize="20"/>
        <Label Content="視頻轉(zhuǎn)換" HorizontalAlignment="Left" VerticalAlignment="Top" MouseDown="Label_MouseDown_2" Grid.ColumnSpan="2" Height="31" Background="#FF393939" Foreground="White" Width="830" Padding="30,7,5,5" FontWeight="Bold" FontFamily="Nirmala UI"/>
        <Button x:Name="CloseBT" Content="X" Grid.Column="1" HorizontalAlignment="Left" Margin="47,6,0,0" VerticalAlignment="Top" Width="20" Foreground="#FFFB0505" Background="#33DDDDDD" Height="18" Click="CloseBT_Click"/>
        <Image HorizontalAlignment="Left" Height="23" Margin="4,2,0,0" VerticalAlignment="Top" Width="23" Source="logo.ico" RenderTransformOrigin="-1.322,0.596"/>
        <Image Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="119" Margin="701,43,0,0" VerticalAlignment="Top" Width="119" Source="impic/zsm.png"/>
        <Label Content="生活不易,打賞隨意" HorizontalAlignment="Left" Margin="702,160,0,0" VerticalAlignment="Top" Grid.ColumnSpan="2" Width="119" Foreground="#FFF4F3F2"/>

    </Grid>
</Window>
后臺(tái)代碼,c#編寫
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;

namespace ConverVideo
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        private OpenFileDialog openFileDialog;
        private int OneFiletotaldata = 0,OneFilecurrentdata=0;
        private delegate void MyDelegate(int value);
        private Dictionary<string, string> FilesList_Current = new Dictionary<string, string>();
        private Dictionary<string, string> FilesList_Total = new Dictionary<string, string>();
        private int AllFrame_Current = 0, AllFrame_Total = 0;
        public MainWindow()
        {            
            InitializeComponent();
           
        }

        private void SelectFileBT_Click(object sender, RoutedEventArgs e)
        {
            openFileDialog = new OpenFileDialog();
            openFileDialog.Title = "選擇文件";
            openFileDialog.Filter = "視頻文件(*.avi,*.wmv,*.flv,*.mkv,*.rmvb,*.rm,*.3gp)|*.avi;*.wmv;*.flv;*.mkv;*.rmvb;*.rm;*.3gp4";
            openFileDialog.Multiselect = true;
            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ll.Content = "";
                //SelectOldFileTXT.Text = openFileDialog1.FileName;
                for (int i = 0; i < openFileDialog.FileNames.Length; i++)
                {
                    ll.Content += openFileDialog.FileNames[i] + "\n";
                }
            }
        }

        private void SelectOutPathBT_Click(object sender, RoutedEventArgs e)
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
            if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                OuptFlePathLB.Content = "輸出路徑:"+folderBrowserDialog.SelectedPath;
            }
        }

        private void MainForm_Loaded(object sender, RoutedEventArgs e)
        {
            OuptFlePathLB.Content += AppDomain.CurrentDomain.BaseDirectory;
        }

        private void ConverBT_Click(object sender, RoutedEventArgs e)
        {
            if (openFileDialog==null)
            {
                System.Windows.MessageBox.Show("請選擇要轉(zhuǎn)換的文件");
                return;
            }
            ConverBT.IsEnabled = false;
            pbStatus.Value = 0;
            FilesList_Current.Clear();
            FilesList_Total.Clear();
            for (int i = 0; i < openFileDialog.FileNames.Length; i++)
            {
                FilesList_Current.Add("my" + i.ToString(), "0");
                FilesList_Total.Add("my" + i.ToString(), "0");
                OneFiletotaldata = 0;
                OneFilecurrentdata = 0;
                string oldfile = openFileDialog.FileNames[i];
                string outfilename = OuptFlePathLB.Content.ToString().Replace("輸出路徑:", "") + System.IO.Path.GetFileNameWithoutExtension(oldfile) + "." + FileExtentnameGB.SelectedValue.ToString().Split(':')[1].Trim();                    
                //ExcuteProcess("ffmpeg.exe", "-progress pro.log -y -i " + oldfile + " " + outfilename + " ",i, Output);
                ExcuteProcess("ffmpeg.exe", "-y -i \"" + oldfile + "\" \"" + outfilename + "\" ", i, Output);
            }
        }


        static void ExcuteProcess(string exe, string arg,int index, DataReceivedEventHandler output)
        {
            using (var p = new Process())
            {
                p.StartInfo.FileName =  AppDomain.CurrentDomain.BaseDirectory + exe;
                p.StartInfo.Arguments = arg;
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.OutputDataReceived += output;
                p.ErrorDataReceived += output;
                p.StartInfo.Verb = "my"+index;
                p.Start();                    //啟動(dòng)線程
                p.BeginOutputReadLine();
                p.BeginErrorReadLine();
               // p.WaitForExit();            //等待進(jìn)程結(jié)束                
            }
        }

        private void Output(object ob, DataReceivedEventArgs dinfo)
        {
            if (dinfo.Data == null)
            {
                return;
            }
            var p = (System.Diagnostics.Process)ob;
           // WriteLog(dinfo.Data);
            if (dinfo.Data.IndexOf("Duration:") >= 0)
            {
                MatchCollection mt = Regex.Matches(dinfo.Data, "([0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{2})");
                if (mt.Count > 0)
                {
                    string tempdata = mt[0].ToString().Replace(":", "").Replace(".", "");
                    OneFiletotaldata = Convert.ToInt32(tempdata);
                    FilesList_Total[p.StartInfo.Verb] = Convert.ToInt32(tempdata).ToString();
                }
            }
            if (dinfo.Data.IndexOf("size=") >= 0)
            {
               
                MatchCollection mt = Regex.Matches(dinfo.Data, "([0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{2})");
                if (mt.Count > 0)
                {
                    string tempdata = mt[0].ToString().Replace(":", "").Replace(".", "");
                    OneFilecurrentdata = Convert.ToInt32(tempdata);
                    FilesList_Current[p.StartInfo.Verb] = Convert.ToInt32(tempdata).ToString();
                }
            }
            AllFrame_Total=0;
            AllFrame_Current = 0;
            foreach (KeyValuePair<string,string> kv in FilesList_Total)
	        {
                AllFrame_Total += Convert.ToInt32(kv.Value);
	        }
            foreach (KeyValuePair<string, string> kv in FilesList_Current)
            {
                AllFrame_Current += Convert.ToInt32(kv.Value);
            }

            if (AllFrame_Total > 0 && AllFrame_Current > 0)
            {
                decimal ttemp = Math.Round(((decimal)AllFrame_Current / AllFrame_Total), 2);
                Dispatcher.BeginInvoke(new Action<int>((a) =>
                        {
                            this.pbStatus.Value = a;
                            if (a>=100)
                            {
                               this.ConverBT.IsEnabled = true;
                            }
                        })
                    , Convert.ToInt32(ttemp * 100));
            }
        }

        static void WriteLog(string logstr)
        {
            string filename = "info3.txt";
            string path = AppDomain.CurrentDomain.BaseDirectory + "log";
            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);
            TextWriter tw = new StreamWriter(Path.Combine(path, filename), true); //true在文件末尾添加數(shù)據(jù)

            tw.WriteLine(DateTime.Now.ToString() + ":" + logstr);
            tw.Close();
        }

        private void Label_MouseDown_2(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                DragMove();
            }
        }

        private void CloseBT_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}

源碼下載:點(diǎn)擊下載文章來源地址http://www.zghlxwxcb.cn/news/detail-587198.html

到了這里,關(guān)于視頻格式轉(zhuǎn)換(avi、wmv、flv、mkv、rmvb、rm、3gp轉(zhuǎn)MP4、MP3)邊學(xué)邊開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 怎么把a(bǔ)vi文件轉(zhuǎn)換成mp4視頻格式,4個(gè)高能方法

    怎么把a(bǔ)vi文件轉(zhuǎn)換成mp4視頻格式,4個(gè)高能方法

    ? ? ? ?怎么把a(bǔ)vi文件轉(zhuǎn)換成mp4視頻格式? 當(dāng)您下載到avi格式的視頻文件時(shí),您可能會(huì)選擇將其轉(zhuǎn)換為MP4格式的文件。 avi是一種由微軟開發(fā)的多媒體容器格式,盡管現(xiàn)在已經(jīng)被認(rèn)為是老舊的技術(shù),但由于其簡單易懂的開發(fā)API和Windows的通用性,仍被廣泛使用。雖然avi格式視頻

    2024年02月06日
    瀏覽(103)
  • avi怎么轉(zhuǎn)換成視頻?

    avi怎么轉(zhuǎn)換成視頻?

    nbsp; nbsp; avi怎么轉(zhuǎn)換成視頻?在我們?nèi)粘J褂玫囊曨l格式中,AVI是一種常見且經(jīng)常被使用的音頻視頻交叉格式之一。它的優(yōu)點(diǎn)之一是占用的存儲(chǔ)空間相對較小,但也明顯存在著畫質(zhì)損失的缺點(diǎn)。雖然AVI格式的視頻在某種程度上也很常見,但與最常見的MP4格式視頻相比,無論如

    2024年02月08日
    瀏覽(16)
  • 20230403在WIN10下通過ffmpeg調(diào)用NVIDIA的硬件加速wmv視頻轉(zhuǎn)碼為MP4格式

    20230403在WIN10下通過ffmpeg調(diào)用NVIDIA的硬件加速wmv視頻轉(zhuǎn)碼為MP4格式

    20230403在WIN10下通過ffmpeg調(diào)用NVIDIA的硬件加速wmv視頻轉(zhuǎn)碼為MP4格式 2023/4/3 15:50 最近向?qū)W習(xí)日語,找到日語發(fā)音的視頻中,大多數(shù)是MP4格式,少量是WMV格式,PR2023貌似不能識(shí)別WMV格式。 于是:萬能的ffmpeg上場了! ? 手動(dòng)指定編解碼器 通過 ffmpeg -codecs | findstr \\\"vc1\\\" 查看 vc1 的編解

    2023年04月22日
    瀏覽(22)
  • 解決video標(biāo)簽無法播放avi格式的視頻

    錯(cuò)誤代碼 正確代碼 在video標(biāo)簽中不要加src屬性,必須在video標(biāo)簽內(nèi)加source標(biāo)簽,兼容不同瀏覽器解碼支持。

    2024年02月13日
    瀏覽(29)
  • 視頻轉(zhuǎn)碼實(shí)例:把MP4轉(zhuǎn)為MKV視頻,一鍵批量轉(zhuǎn)換的操作方法

    視頻轉(zhuǎn)碼實(shí)例:把MP4轉(zhuǎn)為MKV視頻,一鍵批量轉(zhuǎn)換的操作方法

    在數(shù)字媒體時(shí)代,視頻格式的多樣性是不可避免的。經(jīng)常把MP4格式的視頻轉(zhuǎn)換為MKV格式。MKV格式有較高的音頻和視頻質(zhì)量,能在其他設(shè)備或軟件上播放視頻。以下是云炫AI智剪如何把MP4視頻轉(zhuǎn)為MKV格式的一鍵批量轉(zhuǎn)換操作方法。 已轉(zhuǎn)碼的mkv視頻效果縮略圖展示。 ? Mp4視頻批量

    2024年01月18日
    瀏覽(33)
  • 【Vue】播放flv格式視頻(flv.js視頻播放器)

    【Vue】播放flv格式視頻(flv.js視頻播放器)

    ?圖片來源:HTTP-FLV直播初探?? github地址:GitHub - bilibili/flv.js: HTML5 FLV Player npm install flv.js --save 封裝一個(gè)組件flvVideo hasAudio設(shè)置為true就不展示。。。不知道為啥~ home.vue 參考:Vue 中使用flv.js視頻播放器

    2024年02月14日
    瀏覽(33)
  • 如何使用ffmpeg將BDMV(m2ts)轉(zhuǎn)換成MKV、MP4等其他格式的文件

    如何使用ffmpeg將BDMV(m2ts)轉(zhuǎn)換成MKV、MP4等其他格式的文件

    BDMV 是藍(lán)光碟使用的格式。這種格式?jīng)]有辦法使用播放軟件播放,必須要用硬盤播放器,也就是專門的設(shè)備。但是最經(jīng)典的 ffmpeg 可以將其轉(zhuǎn)換成其他格式,并且保持相同的碼率和清晰度,這樣就可以很方便的查看了。 本文使用 macOS 進(jìn)行演示,但是會(huì)介紹如何一些其他平臺(tái)的

    2024年02月10日
    瀏覽(33)
  • Java類jar 實(shí)現(xiàn) 轉(zhuǎn)視頻格式 fvl轉(zhuǎn)mp4,avi示例

    依賴: 視頻格式轉(zhuǎn)換示例:

    2024年02月11日
    瀏覽(20)
  • flv怎么轉(zhuǎn)換成mp4格式?準(zhǔn)備3個(gè)方法給大家

    flv怎么轉(zhuǎn)換成mp4格式?準(zhǔn)備3個(gè)方法給大家

    nbsp; nbsp; flv怎么轉(zhuǎn)換成mp4格式?FLV是一種流行的視頻文件格式,最初由Adobe公司開發(fā),用于在Web上播放和傳輸視頻內(nèi)容。FLV格式以其較小的文件大小和較高的壓縮比而聞名,并廣泛應(yīng)用于在線視頻分享平臺(tái)、流媒體服務(wù)和網(wǎng)絡(luò)廣告等領(lǐng)域。能夠提供較高質(zhì)量的視頻和音頻體驗(yàn)

    2024年02月07日
    瀏覽(16)
  • 視頻轉(zhuǎn)碼:掌握mp4視頻格式轉(zhuǎn)FLV視頻的技巧,視頻批量剪輯方法

    視頻轉(zhuǎn)碼:掌握mp4視頻格式轉(zhuǎn)FLV視頻的技巧,視頻批量剪輯方法

    在多媒體時(shí)代,視頻格式的轉(zhuǎn)換成為一種常見的需求。把MP4格式轉(zhuǎn)換為FLV格式,F(xiàn)LV格式的視頻文件通常具有較小的文件大小,同時(shí)保持了較好的視頻質(zhì)量。批量剪輯視頻的方法能大大提高工作效率。下面來看云炫AI智剪如何進(jìn)行MP4到FLV的轉(zhuǎn)碼,如何批量剪輯視頻的方法。 轉(zhuǎn)碼

    2024年01月19日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包