- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在Xamarin(iOS)中“压缩”视频(用于上传)。
我发现了有关AVAssetWriter类的信息,我可以设置分辨率,比特率等。
您将如何使用它?还有哪几类?
您可能已经注意到,对于应用程序开发来说,它是非常新的。
最佳答案
这是一个使用AVAssetReader将AVAssetWriter馈送给的示例,以重新采样和/或转码视频。
在此示例中,我正在拍摄包含在应用程序捆绑包(BundleResource)中的名为“Pool.mp4”的视频,并以1Mbps的大小将300x300的大小作为“NewVideo.mp4”保存到“tmp”目录中(缩小原始文件大小增加约50%...)
注意:不会检查返回值或错误代码,这些将留给实现者。
var asset = AVAsset.FromUrl(NSUrl.FromFilename("Pool.mp4"));
NSError assetReaderError;
var assetReader = AVAssetReader.FromAsset(asset, out assetReaderError);
var assetTrack = asset.Tracks.First();
var inputSettings = new AVVideoSettingsUncompressed()
{
Height = 300,
Width = 300,
};
var assetReaderOutput = new AVAssetReaderTrackOutput(assetTrack, settings: inputSettings);
assetReaderOutput.AlwaysCopiesSampleData = false;
string tempFile = Path.Combine(Path.GetTempPath(), "NewVideo.mp4");
if (File.Exists(tempFile)) File.Delete(tempFile);
var url = NSUrl.FromFilename(tempFile);
NSError assetWriterError;
var assetWriter = new AVAssetWriter(url, AVFileType.Mpeg4, out assetWriterError);
var outputSettings = new AVVideoSettingsCompressed()
{
Height = 300,
Width = 300,
Codec = AVVideoCodec.H264,
CodecSettings = new AVVideoCodecSettings
{
AverageBitRate = 1000000
}
};
var assetWriterInput = new AVAssetWriterInput(mediaType: AVMediaType.Video, outputSettings: outputSettings);
assetWriterInput.ExpectsMediaDataInRealTime = false;
assetWriter.AddInput(assetWriterInput);
assetWriter.StartWriting();
assetReader.AddOutput(assetReaderOutput);
assetReader.StartReading();
assetWriter.StartSessionAtSourceTime(CoreMedia.CMTime.Zero);
var mediaInputQueue = new DispatchQueue("mediaInputQueue");
assetWriterInput.RequestMediaData(mediaInputQueue, () =>
{
while (assetWriterInput.ReadyForMoreMediaData)
{
var nextBuffer = assetReaderOutput.CopyNextSampleBuffer();
if (nextBuffer != null)
{
assetWriterInput.AppendSampleBuffer(nextBuffer);
}
else
{
assetWriterInput.MarkAsFinished();
assetWriter.FinishWritingAsync();
assetReader.CancelReading();
assetReader.Dispose();
assetReaderOutput.Dispose();
assetWriter.Dispose();
assetWriterInput.Dispose();
break;
}
}
});
关于ios - Xamarin降低影片大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38262302/
我们有一个使用 Flex 和 CS3 构建的 Flash 网站。该网站的大部分内容都是使用 Flex 完成的。我们的页面上有多个 Flash 影片,显然页面加载速度非常慢。现在我们正在研究提高页面速度
Adobe 的这个页面说要添加一个“wmode”参数并将其值设置为“透明”:http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_1
我想从内存流或字节数组而不是磁盘上的文件加载 SWF 对象。 AxShockwaveFlash 类提供了加载 SWF 的方法和属性,以字符串形式提供其磁盘路径,但我还没有看到另一种方法。有一个 Inl
我一直在寻找这个。我需要构建一个独立的实用程序,该实用程序应该: 将图像序列转换为 .mov 格式 获取用户的输入并将其显示在 mov 中。 我计划使用 Java 来完成此操作,因为这是一种跨平台语言
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭去年。 Improve this
我可以通过 axShockwaveFlash 对象将 swf 文件加载到我的 C# 程序中,但我必须通过单击用户按钮来关闭它。我尝试了以下所有可能性的代码,但都没有奏效。 axShockwaveFla
我正在使用 Xcode 创建 Objective-C、cocoa、mac 应用程序。我有一个 QuickTime Movie View,其中上传了一部影片。当我按运行时,它不起作用,窗口不显示,我的电
我正在使用 ColdFusion,需要从服务器上存储的 Flash 影片生成缩略图。我听说过 ffMpeg 但不知道如何使用它。 (一旦你把它放在你的服务器上,下一步是什么?) 最佳答案 您可以使用c
我有一个 Flex 影片,其中包含一个文本输入框和一个(可选)下拉列表。该设计要求此下拉列表位于电影的下边缘下方,与下方的 HTML 重叠。 我可以将 wmode 设置为透明,并且可以让下拉菜单与 H
我正在尝试将一段音频从一部 QuickTime 电影复制到另一部,但没有成功;音频似乎没有被复制。 C++基本代码: // Copy from another QT movie, *src, to t
我正在尝试创建一个特定于站点的浏览器应用程序。我创建了一个新的 Cocoa 应用程序,将 WebView 添加到我的窗口,然后加载页面。该页面包含一个Flash影片,可以通过键盘控制。我想连接一些菜单
我花了一些时间才弄清楚如何将 QuickTime 播放器嵌入到 C# 应用程序中。当我对我的成功感到非常高兴时,规范更改为我们的播放器具有自定义控件(而不是来自 Apple QuickTime Con
我有一个 Flash 影片(简单的视频播放器),嵌套在 DIV 中,它本身嵌套在 jQueryUI-Draggable DIV 中。因此flash-object 的 CSS 框的东西被重建。然后你就
我正在制作一个动态横幅系统,可以处理 img 横幅,以及使用对象/嵌入完成的 Flash 横幅。整个网站大量使用了 jQuery,包括处理“点击”事件。 当涉及到跟踪图像本身的点击时,这显然不是问题(
我正在尝试将 QuickTime 影片 View 对象添加到我的应用程序中,但在界面生成器的对象库中找不到它。我将 QTKit 框架添加到我的项目中,并使用 XCode 5 和 10.8 作为目标。我
我试图让我的 iPhone 应用程序除了 HTTP 之外还可以使用 HTTPS,但使用 UIWebView 或 MPMoviePlayerController 来查看 Quicktime MOV 文件
我是一名优秀的程序员,十分优秀!