我正在创建一个 Windows Phone 应用程序 (XAML/C#),用于将音频和视频上传到服务器。在 Windows Phone 8.0 上使用 VideoCaptureDevice 效果很好,但它只允许设备支持的分辨率(在诺基亚 625 上最小为 640 x 480)。为了缩小尺寸,我已将应用程序升级到 Windows Phone 8.1 Silverlight(开发人员预览版)以使用 Windows.Media.Capture.MediaCapture 库。这适用于通用 Qvga 格式:
MediaEncodingProfile profile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Qvga);
适用于诺基亚 625 和 520,分辨率降至 320 x 240,但 4 分钟视频的文件大小仍然约为 24MB。如果我设置这样的自定义分辨率:
MediaEncodingProfile profile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Auto);
profile.Video.Width = 480;
profile.Video.Height = 320;
我得到的文件大小要小得多(4 分钟 == ~6MB,这很奇怪),但它在 625 上已损坏。
我想尝试使用其他文件类型,例如 .wmv,但是:
MediaEncodingProfile profile = MediaEncodingProfile.CreateWmv(Windows.Media.MediaProperties.VideoEncodingQuality.Auto);
给出 System.Exception“未找到合适的转换来编码或解码内容。”
我还需要对音频执行此操作,即:
MediaEncodingProfile profile = MediaEncodingProfile.CreateMp3(Windows.Media.MediaProperties.AudioEncodingQuality.Auto);
但我得到同样的错误。
我想我在这里问了很多问题,但我真正要问的是:
- 在 Windows Phone 8.1 Silverlight 中减小视频大小的最佳方法是什么?
- 谁能帮助我为 .wmv 和/或 .mp3 录音应用合适的转换?
- 有谁知道为什么手动设置视频分辨率会导致不稳定?
我还尝试手动设置音频属性,看看是否会缩小尺寸:
MediaEncodingProfile profile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Qvga);
profile.Audio.Subtype = "PCM";
profile.Audio.ChannelCount = 2;
profile.Audio.BitsPerSample = 8;
profile.Audio.SampleRate = 22050;
但这也会导致文件损坏。
非常感谢任何帮助 - 四处寻找但在这个主题上发现很少......