我想知道是否有办法在Xamarin中裁剪视频。我似乎找不到任何例子。我试图查看现有的函数和类,但什么也找不到。
基本上制作方视频,比如Vine和Instagram的视频。我认为这是通过裁剪视频的其余部分来实现的,而不仅仅是放大。
我从一个来源找到了部分代码,我试图添加所有者,但我找不到。解决方案的关键部分是我添加的用于裁剪的,在AVVideoSettingsCompress中是“VideoCleanAperture”。
videoUrl = ((AVFoundation.AVUrlAsset)avAsset).Url;
NSError assetReaderError;
var assetReader = AVAssetReader.FromAsset(avAsset, out assetReaderError);
var assetTrack = avAsset.Tracks.First();
//Height = (System.nint?)avAsset.NaturalSize.Height,
//Width = (System.nint?)avAsset.NaturalSize.Width,
var inputSettings = new AVVideoSettingsUncompressed()
{
Height = (System.nint?)avAsset.NaturalSize.Height,
Width = (System.nint?)avAsset.NaturalSize.Width,
};
var assetReaderOutput = new AVAssetReaderTrackOutput(assetTrack, settings: inputSettings);
assetReaderOutput.AlwaysCopiesSampleData = false;
string tempFile = Path.Combine(Path.GetTempPath(), "CroppedVideo.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,
VideoCleanAperture = new AVVideoCleanApertureSettings(
new NSDictionary(
AVVideo.CleanApertureWidthKey, new NSNumber(300),
AVVideo.CleanApertureHeightKey, new NSNumber(300),
AVVideo.CleanApertureVerticalOffsetKey, new NSNumber(10),
AVVideo.CleanApertureHorizontalOffsetKey, new NSNumber(10)
)
)
},
ScalingMode = AVVideoScalingMode.ResizeAspectFill
};
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;
}
}
});
}
我正在使用https://github.com/writingminds/ffmpeg-android-java命令裁剪视频: 其中“in”是inputfile,“out”是outputfile。
直到几天前,我的应用程序运行良好,直到我在输出中收到一条消息,建议我添加以下行: 对于Xamarin组件存储,该组件称为Xamarin。谷歌。网间网操作系统。MobileAds已不存在,但您必须安装Firebase AdMob for iOS。 问题是,该示例仅适用于natve iOS项目。我有一个Xamarin表单项目,在主项目中有一个通用视图 并在项目中针对每个平台进行了实施。对于iOS,是:
如何在xamariniOS中使用AVPlayerLayer和AVPlayerViewController播放视频?
我想在我的移动应用程序中使用谷歌oauth授权。我之前已经在测试控制台应用中实现了此功能。但是,在我在 Xamarin Android中重新定位我的代码后,出现了一些问题。法典: 这是脏代码,但在控制台应用中执行得很好。当我尝试在 Xamarin 中启动方法时,我捕获异常: 无法启动带有“”的浏览器https://accounts.google.com/o/oauth2/v2/auth?acces
问题:是否有一个单独的FFMPEG裁剪过滤器可以用于所有视频,包括(但不限于):856x480、640x480和1280x720? 我们有一个视频处理系统(使用DirectShow),所有输入到这个系统的视频必须是16:9使用MJPEG编解码器。我们使用下面的ffmpeg命令将源视频转换为MJPEG,缩放像素使其为正方形,然后裁剪到16:9的纵横比。这对大多数输入视频都很管用,输出正是我们想要的。
问题内容: 我想将视频裁剪为正方形,但是我做不到。 我将此代码转换为swift,但在导出视频后仅出现黑屏 我想念什么? 问题答案: 您最终将缺少exporter块,无法对创建的对象执行导出操作: