天道酬勤,学无止境

如何根据设备分辨率选择合适的视频尺寸(How to pick proper video dimension based on device resolution)

问题

我们有一个由设计团队提供的演示视频,具有三个不同的尺寸(1024*768)、(2048*1536)和(2732、2048)。 我正在尝试根据当前设备分辨率(支持的格式)选择合适的视频。

例如:如果它是第一代 iPad,其分辨率为 (1024 * 768),它可以播放高达 720p 的视频格式,而不是无法播放,同样 iPad3 (Retina) 分辨率为 (2048 * 1536),但它可以播放视频格式高达 1080p。 类似的 iPad pro 我猜它最多可以播放 4k 视频。

如果我们将其命名为图像中的 1x、2x 或 3x,我担心系统不会自行选择正确的视频。

如果我们将高维视频传递给低分辨率设备,它就不会播放。 那么iOS中根据其支持格式选择合适视频的一般方法是什么。

回答1

如果您确实可以选择从服务器流式传输,则 HLS 流式传输和媒体播放器将负责为设备和当前网络条件选择最佳比特率。

如果不是那么,据我所知,iOS 不支持不同的视频分辨率,就像你上面提到的那样。

您仍然可以通过查询设备分辨率并在运行时根据结果选择适当的视频来自己执行此操作。 查询屏幕尺寸:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

有关上述来源和处理分屏模式的信息,请参见此处:https://stackoverflow.com/a/5678199/334402

您将必须包含多个版本的视频,这会增加您的捆绑包大小,但同样,如果您可以流式传输,则可以避免这种情况。

要找到一个特定的设备功能需要一点努力。

首先,您通常会看到引用了苹果提供的一般 iOS 视频支持信息:

iOS 支持许多行业标准的视频格式和压缩标准,包括:

  • H.264 视频,最高 1.5 Mbps,640 x 480 像素,每秒 30 帧,H.264 基线配置文件的低复杂度版本,具有最高 160 Kbps 的 AAC-LC 音频,48 kHz,.m4v 立体声音频, .mp4 和 .mov 文件格式
  • H.264 视频,高达 768 Kbps,320 x 240 像素,每秒 30 帧,基准配置文件高达 1.3 级,AAC-LC 音频高达 160 Kbps,48 kHz,.m4v、.mp4 和 .mp4 格式的立体声音频mov文件格式
  • MPEG-4 视频,最高 2.5 Mbps,640 x 480 像素,每秒 30 帧,具有最高 160 Kbps 的 AAC-LC 音频的简单配置文件,48 kHz,.m4v、.mp4 和 .mov 文件格式的立体声音频
  • 多种音频格式,包括音频技术中列出的格式

然而,正如您所指出的,这并不是全部,因为不同的设备具有不同的功能。 要查找特定设备支持的视频,您需要在此处查看设备技术规格页面上的信息:https://support.apple.com/specs/

例如,对于第一代 iPad,它显示:

电视和视频

  • 使用基座连接器转 VGA 适配器支持 1024 x 768 像素; 576p 和 480p,带 Apple 分量 AV 电缆; 576i 和 480i 与 Apple 复合 AV 电缆
  • H.264 视频,最高 720p,每秒 30 帧,Main Profile level 3.1,每通道最高 160 Kbps 的 AAC-LC 音频,48kHz,.m4v、.mp4 和 .mov 文件格式的立体声音频; MPEG-4 视频,最高 2.5 Mbps,640 x 480 像素,每秒 30 帧,具有最高 160 Kbps、48kHz 的 AAC-LC 音频的简单配置文件,.m4v、.mp4 和 .mov 文件格式的立体声音频; Motion JPEG (M-JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,音频为 ulaw,PCM 立体声音频为 .avi 文件格式

对于第 5 代 iPad,它显示:

电视和视频

  • AirPlay 镜像、照片、音频和视频输出到 Apple TV(第 2 代或更新机型)
  • 视频镜像和视频输出支持:通过 Lightning 数字 AV 适配器和 Lightning 至 VGA 适配器最高 1080p(适配器单独出售)
  • 支持的视频格式:高达 4K 的 H.264 视频,每秒 30 帧,High Profile level 4.2,AAC‑LC 音频高达 160 Kbps,48kHz,立体声音频或杜比音频高达 1008 Kbps,48kHz,立体声或多声道音频, .m4v、.mp4 和 .mov 文件格式; MPEG‑4 视频,最高 2.5 Mbps,640 x 480 像素,每秒 30 帧,带 AAC‑LC 音频的简单配置文件,每通道最高 160 Kbps,48kHz,立体声音频或杜比音频,最高 1008 Kbps,48kHz,立体声或多通道.m4v、.mp4 和 .mov 文件格式的音频; Motion JPEG (M‑JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,音频为 ulaw,PCM 立体声音频为 .avi 文件格式

要实际检测设备,似乎围绕最佳方法进行了一些讨论,但看起来有人在这里或多或少地保持这种方法是最新的:https://stackoverflow.com/a/10481095/334402(它包括至 iPad 4 和 iPhone 6 在撰写本文时)

回答2

我通过在 PNG 中嵌入 m4v 视频数据,然后在设备上的 tmp 目录中解码和重新保存 .m4v 文件,为这个问题创建了一个可行的解决方案。 请查看此 SO 答案以了解详细信息:https://stackoverflow.com/a/56383999/763355

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 捕获iOS模拟器视频以进行App预览(Capture iOS Simulator video for App Preview)
    问题 好的,现在我们可以在App Store上提交我们应用程序的视频预览。 根据苹果公司的说法,我们应该使用iOS8设备和OSX 10.10. 问题是您必须拥有所有不同的设备(4“,4.7”,5.5“和iPad)。 是否有替代方法? 我正在考虑捕获模拟器的视频。 问题是当以100%分辨率显示时,设备屏幕大于我的FullHD显示器。 有什么解决方案可以从模拟器中以全分辨率捕获视频吗? 编辑:由于很多人都在回答我不问的问题,让我说:-记录一个设备的大小并缩放它不是我要的; -如何记录任何应用程序预览不是我要的; -我不是在问您如何预览? 我要问的是,如果屏幕上不适合显示,您能否以100%的分辨率录制来自模拟器的视频? 回答1 对于Xcode 8.2或更高版本 您可以使用xcrun simctl来拍摄Simulator的视频和屏幕截图, xcrun simctl是用于控制Simulator的命令行实用程序 在模拟器上运行您的应用打开一个终端运行命令截屏xcrun simctl io booted screenshot <filename>.<file extension> 例如: xcrun simctl io booted screenshot myScreenshot.png 拍摄视频xcrun simctl io booted recordVideo <filename>
  • DirectShow 中的实时视频编码(Real-time video encoding in DirectShow)
    问题 我开发了一个 Windows 应用程序,它使用 DirectShow 从外部设备捕获视频。 图像分辨率为 640x480,未经压缩保存的视频大小非常大(约每秒 27MB)。 我的目标是尽可能地减小这个尺寸,所以我正在寻找一种编码器,它可以让我实时压缩视频。 它可以是 H.264、MPEG-2 或其他任何格式。 它必须允许我将视频保存到磁盘,如果我也可以通过网络实时流式传输它是最好的(Wi-Fi,所以大小应该在每秒 1MB 左右,或者更少)。 显着的质量损失将是不可接受的。 我发现为此任务获得合适的 DirectShow 过滤器非常困难。 可以假设客户端机器相当现代(快速的 2 核 CPU)并且可以使用 CUDA/OpenCL。 有一些应用程序允许使用 CUDA 对视频进行编码并提供良好的性能,但是我还没有找到合适的 DirectShow 过滤器或可用于开发的 API。 NVIDIA nvcuvenc.dll 似乎有私有 API,所以我无法直接使用它。 我发现的任何基于 CPU 的编码器对于我的要求来说都太慢了,但也许我错过了一些。 任何人都可以向我推荐一个解决方案,即一个编码器(付费或免费,可以在闭源应用程序中使用),无论它是使用 CPU/CUDA/OpenCL 还是 DirectCompute,都可以实现良好的性能? 或者我应该使用一些外部硬件视频编码器? 此致, 疯狗
  • 如何使用不同的屏幕分辨率(How to Work With Different Screen Resolutions)
    问题 我在游戏中使用Unity 4.3.3。 我正在为Android和iOS设备制作游戏。 由于我刚接触统一,因此似乎找不到找到使用不同屏幕分辨率的方法。 我的脚本使用的是C#。 我希望我的游戏能全屏运行。 我已经在iPad 2上对其进行了测试,它可以完美运行,但对于iPhone 4,侧面被剪裁,对于iPhone 5,侧面被剪裁得更多。 解决办法是什么? 我应该在“播放器设置”>“ iOS”>“其他设置”>“目标分辨率”下选择哪个选项? 回答1 unity更改其游戏中的摄像头以使其所使用的屏幕的纵横比的尺寸匹配。 显然,这并不总是需要的,因此有两种解决方法: 1)第一种方法很容易实现,尽管它看起来很少。 您可以简单地更改相机的纵横比以匹配您设计游戏时的纵横比。 因此,例如,如果您将游戏设计为4:3,则可以执行以下操作: Camera.aspect = 4f/3f; 请记住,这会使游戏在不同的宽高比上变形。 2)另一种方法稍微复杂一点,但是结果看起来要好得多。 如果您使用的是正交摄影机,则要记住的一件事是,无论使用哪种屏幕分辨率,正交摄影机都将高度保持在设定值,并且仅更改宽度。 例如,对于尺寸为10的正交摄影机,其高度将设置为2。考虑到这一点,您需要做的是补偿每个级别内最大的摄影机(例如,背景更宽) )或动态更改相机的“正交尺寸”,直到其宽度与您创建的宽度匹配为止。
  • 如何在WebRTC中始终保持1:1宽高比的视频(How to keep 1:1 aspect ratio video all the time in WebRTC)
    问题 当我使用此设置时,视频宽高比为1:1。 constraints = { audio: false, video: { width: 240, height: 240 } }; 但是,我希望WebRTC选择更好的分辨率(如果存在)。 当我将其更改为此 constraints = { audio: false, video: { width: { min: 240, ideal: 720, max: 1080 }, height: { min: 240, ideal: 720, max: 1080 } } }; 演示jsfiddle 在我的情况下,有时变为4:3,即640 * 480。 我认为是因为数字640和480都在240和1080之间。 如何一直保持1:1? 谢谢 回答1 您在这里询问的是getUserMedia ,这实际上是关于相机分辨率的信息。 相机捕获视频的分辨率取决于您的硬件。 例如,我的相机可以在多种模式下进行拍摄,它们都是4:3模式,最高可达640x480,而在以上模式下,它们都是16:9。 它没有1:1模式(我检查过)。 您没有说过为什么要关注宽高比,但是我怀疑您仍然希望球显示为圆形而不是椭圆形,因此,如果您的网站希望我的摄像机中的视频适合正方形,则需要裁剪我的视频的左右两部分,或上下左右出现黑条。 没办法。 如果仅用于布局,请保留捕获方面
  • MotoSimEG-VRC软件:机器人仿真视频输出功能介绍
    目录 功能介绍 功能注意事项 视频文件输出设置 视频文件生成方法 视频文件查看 本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 功能介绍 MotoSimEG-VRC软件可以把机器人仿真运行效果以视频动画的形式输出,视频文件是AVI格式。在任意一台安装有AVI格式文件解码视频播放器的电脑或手机上都可以查看机器人的仿真运行效果,而无需另外安装MotoSimEG-VRC软件。 软件的AVI视频输出功能支持分辨率设置,如果在视频生成期间对软件工作区进行视图操作(平移、缩放、旋转),则对应的视图状态也会反映到生成的视频动画中。 机器人设备仿真运行时长越长输出的AVI视频文件越大,但是视频实际播放时间是视频生成过程中所需的录制时间,而不是机器人虚拟控制器中的仿真运行时间。 功能注意事项 AVI视频文件的帧速率根据MotoSimEG-VRC软件的刷新时间间隔而变化,当刷新时间间隔变小时,帧速率变大,视频画质变得流畅,但是生成的视频文件也会相应的变大。 视频文件输出处理时,快速更改软件工作区视点,生成的视频文件可能无法记录视点的微小变化。 视频文件输出处理不受工作区视图操作的影响,生成的视频时长与录制过程时间相同。 录制的视频画面与更改脉冲极限警告或干涉检查的颜色不一定一一对应。 录制的视频画面与轨迹线、切割平面、注释、尺寸线和标记
  • Unity 4.6 - 如何为每个分辨率将 GUI 元素缩放到合适的大小(Unity 4.6 - How to scale GUI elements to the right size for every resolution)
    问题 新的 Unity 4.6 带有一个新的 GUI,当我在 Unity 上更改分辨率时,UI 按钮可以完美缩放,但是当我在 Nexus 7 设备上测试时,按钮看起来太小了。 知道如何解决这个问题吗? 回答1 Unity 的新 GUI 系统使用“锚点”来控制 gui 元素(如按钮)相对于其父容器的缩放方式。 Unity 有一个关于如何使用新的“矩形变换”组件(在其中配置锚点)的教程视频:http://unity3d.com/learn/tutorials/modules/beginner/ui/rect-transform。 本教程的后半部分都是关于锚点的。 该页面包含指向整个教程系列的链接。 时间不算长。 你应该看整件事。 具体到你的问题: 锚点在您的第一个屏幕截图中可见。 它们是按钮左上角的那 4 个小箭头。 现在,您的按钮仅锚定在它的左上角。 需要将两个右锚点向右拖动,以便按钮的右边缘锚定到其父容器内的空间。 根据您的情况,可能需要向下拖动底部的两个箭头,以便按钮的底部边缘也被固定。 我上面链接的视频详细介绍了所有这些。 最后,为了在不同分辨率下很好地缩放字体大小,您需要向 UI 的基本画布添加和配置参考分辨率组件,正如 Ash-Bash32 之前所写的那样。 更新:添加参考分辨率组件的最佳方法是通过 UI 中基础画布的检查器窗口。 1) 单击检查器底部的“添加组件按钮”。
  • 如何在Android Studio中调整AVD模拟器窗口的大小?(How to resize the AVD emulator window in Android Studio?)
    问题 我看过许多帖子,询问如何调整AVD仿真器窗口的大小,但是我没有找到任何可行的方法。 我的模拟器不在计算机屏幕的顶部,并且无法调整其大小。 如何在Android Studio中调整AVD模拟器窗口的大小? 回答1 现在,借助Android Studio 2,您只需拖动一个角即可调整窗口大小。 回答2 在Android Studio 2.2更新之后,“ Edit Configurations窗口中没有“ Emulator选项卡。 如果要扩展模拟器,则只需使用以下键盘组合: 放大: Ctrl + ▲ 缩小比例: Ctrl + ▼ 如果您想要按比例缩放或获得1:1的显示,则也许您应该尝试修改这两个文件:(我不知道该文件是否可以工作,因为我没有机会尝试。) C:\ Users \您的用户名.android \ avd \ Nexus_ XX _API_ XX .avd \ hardware-qemu.ini C:\ Users \您的用户名.android \ avd \ Nexus_ XX _API_ XX .avd \ hardware-qemu.ini 回答3 您可以调整模拟器屏幕的大小 通过转到(在Android Studio的顶部菜单中) Run > Edit Configurations 在刚打开的对话框的左侧面板中,选择您的应用程序。 在右侧面板中
  • 如何将iOS App预览视频升级到1080 x 1920?(How do I upscale an iOS App Preview video to 1080 x 1920?)
    问题 我刚刚捕获了使用QuickTime Player和Lightning电缆在iPhone 6上运行的新应用程序的视频。 之后,我在iMovie中创建了一个App Preview项目,将其导出并可以成功将其上传到iTunes Connect。 苹果要求开发人员根据屏幕尺寸以不同的分辨率上传应用预览,即: iPhone 5(S): 1080 x 1920或640 x 1136 iPhone 6:750 x 1334(我拥有的) iPhone 6+: 1080 x 1920 显然,1080 x 1920用一块石头杀死了两只鸟。 我知道升级不是完美的解决方案,但可以满足我的需求。 由于我没有6岁以上的人,因此再进行一次录音也不会奏效。 不幸的是,iTunes Connect对接受的内容非常挑剔。 这是我尝试过的,但无济于事: 手刹,iMovie,QuickTime不支持升频 MPEG Streamclip ffmpeg -i input.mp4 -acodec copy -vf scale=1080:1920 output.mp4 奇怪的是,当我尝试上载ffmpeg的output.mp4时,iTunes Connect一直抱怨分辨率不正确。 回答1 最后, ffmpeg -i input.mp4 -acodec copy -crf 12 -vf scale=1080:1920
  • 如何确保录制视频的播放方向正确?(How can I ensure correct playback orientation of recorded video?)
    问题 我正在使用 MediaStore.ACTION_VIDEO_CAPTURE 意图来捕获视频,然后使用VideoView播放它。 我想知道拍摄的视频的方向。 我不想在意图调用时使用方向,因为用户可能会在按下快门按钮之前旋转设备。 我也不想实现我自己的自定义视频捕获。 视频的方向是否存储在保存的文件中和/或在意图结果中返回? 回答1 视频的方向是否存储在保存的文件中和/或在意图结果中返回? AOSP VideoCamera活动确实将相机设备的旋转值提供给MediaRecorder.setOrientationHint()方法。 以下是与此相关的 VideoCamera.initializeRecorder() 代码中的代码摘录: // See android.hardware.Camera.Parameters.setRotation for // documentation. // Note that mOrientation here is the device orientation, which is // the opposite of what getWindowManager().getDefaultDisplay().getRotation() // would return, which is the orientation the graphics need
  • 使用 OpenGL 将效果应用于 iPhone 相机预览“视频”(Applying Effect to iPhone Camera Preview "Video" Using OpenGL)
    问题 我的目标是编写一个自定义的相机视图控制器: 可以使用后置摄像头和前置摄像头(如果有的话)在所有四个界面方向上拍照。 正确旋转和缩放预览“视频”以及全分辨率照片。 允许将(简单)效果应用于预览“视频”和全分辨率照片。 我以前的努力记录在这个问题中。 我最近的尝试是修改 Apple 的示例 GLVideoFrame(来自 WWDC 2010)。 但是,当会话预设为 AVCaptureSessionPresetPhoto 时,我无法让 iPhone 4 正确显示预览“视频”。 有没有人试过这个或者知道为什么这个例子不适用于这个预设? Apple 的示例使用具有 640x480 视频尺寸和 1280x720 默认纹理大小的预设。 当预设为 AVCaptureSessionPresetPhoto 时,iPhone 4 后置摄像头仅提供 852x640。 预设为 AVCaptureSessionPresetPhoto 时的 iOS 设备相机视频/照片尺寸: iPhone 4 背面:视频为 852x640,照片为 2592x1936 iPhone 4 正面:视频和照片为 640x480 iPod Touch 4G 背面:视频和照片为 960x720 iPod Touch 4G 正面:视频和照片为 640x480 iPhone 3GS:视频为 512x384,照片为 2048x1536 更新
  • MediaEncodingProfile.CreateWmv 给出“没有找到合适的转换来编码或解码内容。” 错误(MediaEncodingProfile.CreateWmv gives “No suitable transform was found to encode or decode the content.” error)
    问题 我正在创建一个将音频和视频上传到服务器的 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
  • 使用getUserMedia获得最大的视频分辨率(Get maximum video resolution with getUserMedia)
    问题 我正在尝试通过JS navigator.getUserMedia获得尽可能高的视频分辨率。 我了解一些限制条件,但不知道如何选择适合自己的情况。 问题似乎是没有办法说“我想要最大分辨率的视频”。 因此,我想说的是“我想要的视频分辨率不低于非常大的分辨率”。 当我尝试使用minWidth: 1600 ,Chrome会返回1280×720的视频(我认为是我的相机中最高的)。 但是,如果用户拥有更高分辨率的相机怎么办? 所以我要的是minWidth: 2048视频,而Chrome仅返回640×480。 var constraints = { video: { optional: [ {minWidth: 2048} ] } }; 这是在线示例:http://jsbin.com/kibeza/1/watch?js,输出 还有一个实际的问题:Chrome不懂数学。 它认为1600大于2048。我不能要求视频“不少于100500”,因为在这种情况下,我将获得标准的低分辨率。 我不能问视频“不少于合理的小分辨率”,因为可以有更高分辨率的用户,而我想获得更高的分辨率。 回答1 用: var constraints = { video: { width: { ideal: 4096 }, height: { ideal: 2160 } } }; 这将使浏览器使用可用的最大分辨率,最高为4K。
  • 使用AVFoundation裁剪AVAsset视频(Cropping AVAsset video with AVFoundation)
    问题 我正在使用AVCaptureMovieFileOutput录制一些视频。 我使用AVLayerVideoGravityResizeAspectFill显示了预览图层,该图层略有放大。 我的问题是最终视频较大,其中包含预览期间屏幕上无法容纳的多余图像。 这是预览和生成的视频 有没有一种方法可以使用CGRect指定要从视频中AVAssetExportSession ? 编辑 - - 当我将CGAffineTransformScale应用于AVAssetTrack它会放大视频,并且将AVMutableVideoComposition renderSize设置为view.bounds ,将其view.bounds掉。 太好了,只剩下1个问题了。 视频的宽度不能拉伸到正确的宽度,只会被黑色填充。 编辑2 ----建议的问题/答案不完整。 我的一些代码: 在我的- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error方法中,我可以用来裁剪和调整视频大小。 - (void
  • HTML5新特性
    HTML5新特性 HTML5新特性HTML5W3C对HTML5的需求整体原则HTML5新特性1.语义化标签(HTML5 中的区块和段落元素)2.增强的表单3.多媒体音频和视频\音频\视频 4.3D, 图像 & 效果CanvasSVGWebGL 5.通信Web Sockets (en-US)Server-sent eventsWebRTC 6.离线 & 存储离线存储sessionStoragelocalStorageIndexedDB 7.性能 & 集成HTML Drag and Drop API地理位置 APIWeb Workers HTML5新特性 HTML5 先来看看MDN上面对HTML5的定义 HTML5 是定义 HTML 标准的最新的版本。 该术语通过两个不同的概念来表现: 它是一个新版本的HTML语言,具有新的元素,属性和行为,它有更大的技术集,允许构建更多样化和更强大的网站和应用程序。这个集合有时称为HTML5和它的朋友们,不过大多数时候仅缩写为一个词HTML5。 关于HTML5技术的资源,根据其功能分为几个组。 语义:能够让你更恰当地描述你的内容是什么。连通性:能够让你和服务器之间通过创新的新技术方法进行通信。离线 & 存储:能够让网页在客户端本地存储数据以及更高效地离线运行。多媒体:使 video 和 audio 成为了在所有 Web 中的一等公民。2D/3D 绘图
  • 手把手教你响应式布局(二)
    手把手教你响应式布局(二) 一个响应式页面www.microsoft.com学完你也可以做出来 1. <meta name="viewport" content="width=device-width; initial-scale=1.0"> 根据viewport尺寸应用 media queries Media queries 允许我们能创造一个自适应的体验,media query语句能够根据设备的规格创造规则将特定的样式应用在所有小屏幕,大屏幕以及所有中间尺寸的设备上。 @media (query) { · /* CSS Rules used when query matches */ } 在我们能定义的许多不同query中,最常用在网络设计上的还是 min-width, max-width, min-height 和 max-height. min-width 允许使用任何大于在query里定义的浏览器宽度值。 max-width 允许使用任何小于在query里定义的浏览器宽度值。 min-height 允许使用任何大于在query中定义的浏览器高度值。 max-height 允许使用任何小于在query里定义的浏览器高度值。 orientation=portrait 适用于所有高度大于等于宽度的浏览器。纵屏 orientation=landscape
  • 如何提高 pjsip pjsua2 示例 Android 应用程序的视频质量?(How can I improve video quality of pjsip pjsua2 sample Android App?)
    问题 当前默认示例 Android pjsip pjsua2 示例应用发送的视频质量非常差,我希望将其提高到至少高清质量。 我尝试使用以下方法,但它一直显示非常低的视频质量。 如何提高传出视频质量? 此示例应用程序能够从其他 sip 视频通话接收高达 355 * 288 的视频质量,但它发送的视频质量非常差。 目前,我试图通过在拨出电话之前更新 MediaFormatvideo 文件中的以下值来实现高清视频。 它对改善传出的视频毫无帮助。 我是否在错误的地方更新了这些属性? 目前它发送低于 192 * 144 的视频质量,不接受高于 352 * 288 的视频质量。 如何更新它以支持至少 1280*720 的视频质量? MediaFormatVideo mf=new MediaFormatVideo(); mf.setFpsNum(30); mf.setFpsDenum(1); mf.setAvgBps(512000); mf.setMaxBps(1024000); mf.setHeight(720); mf.setWidth(1280); 我正在更新这些设置如下: MyCall call = new MyCall(account, -1); CallOpParam prm = new CallOpParam(true); AccountVideoConfig avc=new
  • Xcode 5 Asset Catalog:如何自动选择正确大小的 LaunchImage(Xcode 5 Asset Catalog: How to automatically pick LaunchImage at correct size)
    问题 正如此处所建议的,在 Interface Builder 中,我已将“Image”属性的“LaunchImage.png”参数分配给全尺寸图像视图,在运行时由 iOS 关联。 但是在运行时,在任何设备(iPhone、iPad,带/不带视网膜)中,拾取的图像始终是 640 × 960 像素大小的图像,因此忽略其他尺寸。 有没有办法让iOS根据设备和分辨率自动选择正确的图像? 回答1 是的,在 XCode 5 中有一种更简单的方法可以做到这一点。 单击您的 Xcode 常规选项卡然后向下滚动并查找启动图像。 看到灰色的小箭头,点击它您现在可以拖放特定设备的启动图像。 如果您愿意,您还可以在 iOS6 和 iOS7 设备之间选择不同的启动图像。 将为每个设备和屏幕尺寸自动选取正确的启动图像。 请参阅这些屏幕截图。 回答2 目前,我发现的唯一方法是在 LaunchImage.png 代码中手动处理: self.splashImage.contentMode = UIViewContentModeScaleAspectFit; if (IS_IPHONE()) { if (!IS_RETINA) { self.splashImage.image = [UIImage imageNamed:@"LaunchImage.png"]; } else { if (IS_PHONEPOD5())
  • 2021-04-25
    各种接口 手机 1.Micro USB接口:该接口是USB 2.0标准的一个便携版本,为防呆盲插结构设计,只能单面插入,支持OTG功能,兼容USB1.1和USB 2.0。 2.USB Type C接口:该接口是USB 3.1标准的一个连接介面,具有正反都能插、传输速度快等特点。该接口虽然是基于USB 3.1标准设计,但并非使用这种接口连接方式的设备都支持USB 3.1标准。 3.Lightning接口:该接口是苹果公司设计的高速多功能I/O接口,从iPhone 5开始,历代新iPhone与iPad都配备了这种数据接口。Lightning接口两侧都有8个触点,也具有正反都能插的特点,并可根据不同的配件传递配件所需的特定信号。 电脑 USB接口 用来连接鼠标、键盘、移动硬盘、数码相机、网络电话(VoIP的skype之类)、打印机等外围设备的,理论上一个USB主控口可以最大支持127个设备的连接。USB分为两个标准,USB1.1最大传输速度为12Mbps,USB2.0为480Mbps,这两种标准的接口是完全一样的,也可向下兼容,传输速度的不同取决于电脑主板的USB主控芯片和USB设备的芯片。USB接口可以带有供电线路,这样USB设备例如移动硬盘等就不用再接一条电源线了(最高500mA 5V电压),现在支持USB接口的手机也可以通过电脑来充电 VGA接口 是最常见的一种接口
  • 如何使用com.android.camera.action.CROP设置输出图像(how to set the output image use com.android.camera.action.CROP)
    问题 我有裁剪图像的代码,如下所示: public void doCrop(){ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/"); List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,0); int size = list.size(); if (size == 0 ){ Toast.makeText(this, "Cant find crop app").show(); return; } else{ intent.setData(selectImageUri); intent.putExtra("outputX", 300); intent.putExtra("outputY", 300); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); if (size == 1) { Intent i = new Intent(intent)
  • 不同屏幕尺寸的 VideoView(VideoView in different screen sizes)
    问题 我正在尝试为不同尺寸的屏幕插入视频。 我想要的是一个很好的分辨率并且没有失真。 我有 2 个用于大屏幕和小屏幕的视频。 但我不知道如何插入它们。 我认为这就像从可绘制文件(hdpi、ldpi 等)中插入图像,您可以在其中将图像添加到所需的分辨率文件夹中。 但我不知道视频是否会发生同样的情况。 请帮我将两个视频插入不同的分辨率! 谢谢! 回答1 就 Android 而言,Drawable 是任何类型的图形/图像/图标……但视频不属于该类别。 就此而言,您必须将其放在“./assets/”文件夹中。 因此,不会根据屏幕大小自动选择视频。 但是,即使视频位于不同的文件夹中,您也可以在 onCreate() 方法中以编程方式加载它们,如下所示: Display mDisplay = getWindowManager().getDefaultDisplay(); int w = mDisplay.getWidth(); int h = mDisplay.getHeight(); if (w < 480 || h < 800) { mVideoView.setVideoPath(...your video in assets, of low resolution...);; } else { mVideoView.setVideoPath(...your video in assets