ffmpeg 波形音频和 avi 视频格式合并

Posted

技术标签:

【中文标题】ffmpeg 波形音频和 avi 视频格式合并【英文标题】:ffmpeg wave audio and avi video format merge 【发布时间】:2016-09-07 17:07:36 【问题描述】:

当我在 cmd 中使用它合并成功时,这里是示例代码,

ffmpeg -i "D:\Developments\Video Capture\My video capture\WindowsFormsApplication1\bin\Debug\Video\uuu.wav" -i "D:\Developments\Video Capture\My video capture\WindowsFormsApplication1\bin\ Debug\Video\1.avi" -acodec copy -vcodec copy "D:\Developments\Video Capture\My video capture\WindowsFormsApplication1\bin\Debug\Video\output.avi"

但这是我在 c# 应用程序表单中使用的示例代码,

   string Path_FFMPEG = Application.StartupPath + "\\ffmpeg.exe";
        string Wavefile = Application.StartupPath + "\\Video\\uuu.wav";
        string video1 = Application.StartupPath + "\\Video\\1.avi";
        string file = Application.StartupPath + "\\Video\\text.txt";
        string strResult = Application.StartupPath + "\\Video\\output.avi";
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        try
        

            proc.StartInfo.FileName = Path_FFMPEG;
            proc.StartInfo.Arguments = string.Format("ffmpeg -i 0 -i 1 -acodec copy -vcodec copy 2", Wavefile, video1, strResult); 
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;

            proc.Start();

            string StdOutVideo = proc.StandardOutput.ReadToEnd();
            string StdErrVideo = proc.StandardError.ReadToEnd();
        
        catch  
        finally
        
            proc.WaitForExit();
            proc.Close();
        

这是输出错误....

FFmpeg 版本 SVN-r23607,版权所有 (c) 2000-2010 FFmpeg 开发者 建于 2010 年 6 月 15 日 04:09:35,使用 gcc 4.4.2 配置: --target-os=mingw32 --enable-runtime-cpudetect --enable-avisynth --enable-gpl --enable-version3 --enable-bzlib --enable-libgsm --enable-libfaad --enable- pthreads --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid --enable-libschroedinger --enable-libx264 --extra-libs='-lx264 -lpthread' --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-librtmp --extra-libs='-lrtmp -lpolarssl -lws2_32 -lwinmm' --arch=x86 --cross-prefix=i686-mingw32- - -cc='ccache i686-mingw32-gcc' --enable-memalign-hack libavutil 50.19。 0 / 50.19。 0 libavcodec 52.76。 0 / 52.76。 0 libav 格式 52.68。 0 / 52.68。 0 libavdevice 52. 2. 0 / 52. 2. 0 库过滤器 1.20。 0 / 1.20。 0 libswscale 0.11。 0 / 0.11。 0 无法为“ffmpeg”找到合适的输出格式

请帮我解决这个问题..

【问题讨论】:

SVN-r23607 是古老且不受支持的。你为什么用这么旧的版本?您错过了 6 年的开发、错误修复、功能和安全修复。 【参考方案1】:

你已经通过proc.StartInfo.FileName调用ffmpeg

所以换成

proc.StartInfo.Arguments = string.Format("-i 0 -i 1 -acodec copy -vcodec copy 2", Wavefile, video1, strResult);

【讨论】:

我已经根据你提到的进行了更改,但是更改后又出现了另一个错误,所有目录都是正确的。 FFmpeg 版本 SVN-r23607,版权所有 (c) 2000-2010 FFmpeg 开发人员 libavutil 50.19。 0 / 50.19。 0 libavcodec 52.76。 0 / 52.76。 0 库格式 52.68。 0 / 52.68。 0 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1.20. 0 / 1.20。 0 libswscale 0.11。 0 / 0.11。 0 D:\Developments\Video: 没有这样的文件或目录。 您需要更改启动路径或字符串中的路径引用,以便生成的路径为 `D:\Developments\Video Capture\My video capture\WindowsFormsApplication1\bin\Debug\Video` 我使用此代码延迟我的音频和视频文件 .ffmpeg -i "C:\Users\aa\Desktop\video\sfdf.avi" -itsoffset 0.150 -i "C:\Users \aa\Desktop\video\sfdf.wav" -vcodec copy -acodec copy -map 0:0 -map 1:1 "C:\Users\aa\Desktop\video\out.avi" 。当我运行它时显示这个错误信息(Could not find input stream #1.1)如何解决这个错误。 应该是-map 1:0 而不是-map 1:1 我试图同时捕获音频和视频并合并到单个 avi 文件中。我录制了音频和视频文件,但是在合并这两个文件后,合并文件有延迟。音频发生在视频之前。如何解决这个问题。输入 #1,wav,来自 'C:\Users\aa\Desktop\video\asd.wav':持续时间:00:00:05.50,比特率:705 kb/s 流 #1.0:音频:pcm_s16le,44100 Hz,1通道,s16,705 kb/s 输出 #0,avi,到 'C:\Users\aa\Desktop\video\out.avi':元数据:ISFT:Lavf52.68.0 流 #0.1:音频:pcm_s16le,44100 Hz, 1 个通道,705 kb/s

以上是关于ffmpeg 波形音频和 avi 视频格式合并的主要内容,如果未能解决你的问题,请参考以下文章

实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)

实战详细讲解ffmpeg命令的使用(来自一线的经验,视频合并&avi转MP4&补空白音频收藏下来一定用的到)

ffmpeg转码flv到avi《转》

ffmpeg合并音频和视频

音视频处理之FFmpeg封装格式20180510

ffmpeg实现视频I帧提取