Tag: ffmpeg

为什么在从我的网络应用转换video时ffmpeg永远不会完成?

我想在用户提交表单时转换video。 它似乎转换正常,但当我尝试用它做任何事情时,文件“正被另一个进程使用”。 看起来ffmpeg.exe永远不会退出。 我的代码在下面是否有任何我应该做的不同以允许进程释放文件? 如果我手动运行它退出正常。 internal class ConversionUtility : Utility { public void Convert(string videoFileName) { var video = new VideoFile(videoFileName); if (!video.infoGathered) GetVideoInfo(video); var Params = string.Format(“-y -i \”{0}\” -coder ac -me_method full -me_range 16 -subq 5 -sc_threshold 40 -vcodec libx264 -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -i_qfactor 0.71 -keyint_min 25 -b_strategy 1 -g 250 -r […]

使用FFmpeg增加/减少音量

我目前正在使用C#调用来调用FFmpeg API来处理video和音频。 我有以下代码从video中提取音频并将其写入文件。 while (ffmpeg.av_read_frame(formatContext, &packet) >= 0) { if (packet.stream_index == streamIndex) { while (packet.size > 0) { int frameDecoded; int frameDecodedResult = ffmpeg.avcodec_decode_audio4(codecContext, frame, &frameDecoded, packet); if (frameDecoded > 0 && frameDecodedResult >= 0) { //writeAudio.WriteFrame(frame); packet.data += totalBytesDecoded; packet.size -= totalBytesDecoded; } } frameIndex++; } Avcodec.av_free_packet(&packet); } 这一切都正常。 我目前正在使用FFmpeg.AutoGen项目进行API访问。 我希望能够在写入文件之前增加/减少音频的音量,但我似乎无法找到命令或任何帮助。 是否必须手动完成? 更新1: […]

从shell运行的ffmpeg运行正常,但在.NET内部调用时则不行

我试图在C#程序中使用ffmpeg(在Windows上使用Cygwin编译),使用Process类生成ffmpeg实例。 但是,我遇到了一个相当奇怪的错误,没有多大意义。 当我直接从shell运行ffmpeg时(无论是Cygwin的bash,PowerShell,cmd),ffmpeg可以正确地解码和重新编码文件而不会出现任何问题: PS C:\audio> ffmpeg -i .\sound1.wav -acodec libvorbis -f ogg abc.ogg ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers built on Apr 8 2013 15:10:40 with gcc 4.5.3 (GCC) configuration: –disable-encoder=vorbis –enable-libvorbis libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. […]

在C#.NET项目中使用(ffmpeg)可执行文件

我正在尝试在c#.NET中为ffmpeg编写一个自定义包装器。 我下载了多个版本,但似乎我将不得不使用带有.exe文件的版本。 ffmpeg.exe ffplay.exe ffprobe.exe 但是,我无法通过添加引用 – >浏览等来引用这些可执行文件。 所以我现在要做的就是将它们添加为文件。 然后就像使用命令行一样在它们上运行命令。 那可能吗? 或者也许有人有更好的主意? 提前感谢您的帮助。

C#执行外部程序并捕获(流)输出

我正在制作一个程序来处理一些video文件。 我正在使用ffmpeg可执行文件将多个文件合并到一个文件中。 此命令需要几分钟才能完成,因此,我需要一种方法来“监视”输出,并在GUI上显示进度条。 查看以下stackoverflow主题: 如何解析c#的命令行输出? Process.start:如何获得输出? 操作方法:在C#中执行命令行,获取STD OUT结果 我做了这个代码: Process ffmpeg = new Process { StartInfo = { FileName = @”d:\tmp\ffmpeg.exe”, Arguments = “-f concat -safe 0 -i __sync.txt -c copy output.mp4″, UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = @”d:\tmp” } } ffmpeg.EnableRaisingEvents = true; ffmpeg.OutputDataReceived += (s, e) => Debug.WriteLine(e.Data); […]

转换为YUV / YCbCr色彩空间 – 许多版本

YUV有许多不同的颜色转换,但它们都有不同的结果! 哪一个正式正确? 这是我的测试程序的输出。 我输入R = 128 G = 50 B = 50(最大值为255)。 该表显示转换后的YUV值和重新转换的RGB值(与原始值不匹配)。 ./ColourConversion.exe 128 50 50 YUVRGB Name =============================================================================== 0 0 0 128 50 50 a) Original RGB Values 79 116 162 128 50 49 b) Microsoft MSDN integer maths 78 116 162 126 49 47 c) ITU-R BT.601 73 120 162 127 49 […]

将图像写入Process.StandardInput.BaseStream的更快捷方式

我试图将大量桌面捕获的图像发送到编码器(FFmpeg)stdin。 以下代码示例有效。 CaptureScreen()函数在5-10毫秒内提供图像。 如果我将图像保存在MemoryStream中,几乎没有时间。 但我只能每隔45毫秒将1张图像保存到proc.StandardInput.BaseStream。 public void Start(string bitrate, string buffer, string fps, string rtmp, string resolution, string preset) { proc.StartInfo.FileName = myPath + “\\ffmpeg.exe”; proc.StartInfo.Arguments = “-f image2pipe -i pipe:.bmp -vcodec libx264 -preset ” + preset + ” -maxrate ” + bitrate + “k -bufsize ” + buffer + “k -bt 10 -r ” […]

如何设置mp3和ffmpeg编解码器库对cef的支持?

我想拥有支持mp3和ffmpeg编解码器的cef lib。 如何在其中使用这些编解码器function重新编译cef库。 我想学习,我应该在cef库或cefsharp中编辑哪里? 然后如何编译它来重用它.. 我使用的是cefsharp 47版。

在C#应用程序中显示tcpvideo流(来自FFPLAY / FFMPEG)

我尝试让我的Parrot AR Drone 2.0与windows机器配合使用。 我有一个简单的C#应用​​程序来控制它 – 但现在我想要我的应用程序内的video流。 如果我执行ffplay tcp://192.168.1.1:5555它会连接到video流并显示一个带video的窗口。 我如何在我的应用程序中获得此video? 比如,一个简单的“框架”或“图像”充满了这些内容? 我从来没有用C#做过那么多,所以任何帮助都会很棒。

通过Web API 2流式传输video内容

我正在研究实现以下目标的最佳方法: 我有一堆闭路电视录像文件(MP4文件,大小从4MB到50MB不等),我想通过门户网站提供这些文件。 我的第一个想法是通过Web API流式传输文件,所以我找到了以下链接: Asynchronously streaming video with ASP.NET Web API 在实现示例项目之后,我意识到该示例基于Web API 1,而不是Web API 2.1,这正是我正在使用的。 在做了一些研究之后,我得到了用WebAPI 2.1编译的代码。 然后我意识到,如果我想做流媒体我不能使用MP4文件,这背后有相当多的技术细节,所以这里是线程: 实时HTTP流式传输到HTML5video客户端的最佳方法 似乎这个工作我需要将我的MP4文件编码为像WebM这样的东西,但这需要花费太多时间。 Icecast( http://icecast.org/ ),这是一个流媒体服务器,但我还没有尝试过,再次不确定这是否是我需要做的。 现在我想到了,我实际上不需要直播,我只需要允许客户端通过他们的浏览器播放video文件,也许使用HTML5video元素? 问题是,我的应用程序也需要在IOS上工作,所以我认为这意味着我甚至无法将我的MP4编码为FLV并只使用闪存。 我真正需要的是将所有video剪辑作为缩略图放在网页上,如果客户点击一个,它就会开始尽快播放,而不必下载整个文件。 想想imdb.com上的“Watch Trailer”function。 只需播放video文件,这就是我想要的。 我不需要LIVE流媒体,这就是我认为WebM的用途? 再次,不确定。