【问题标题】:Encoding video for Android为 Android 编码视频
【发布时间】:2013-10-03 13:15:04
【问题描述】:

如何正确编码 Android 视频?我见过the supported media formats,但我真的不知道从哪里开始使用这些设置制作视频。

我还没有流式传输这些视频。这些仅用于本地播放。

对视频进行编码以最大限度地提高跨 Android 设备兼容性的正确流程是什么?

【问题讨论】:

  • handbrake.fr 太容易了。
  • 您的视频来源是什么?使用带有 AVC 的 MediaCodec 的一些示例:bigflake.com/mediacodec
  • 我的视频源是 Android MediaRecorders,但它们似乎都以不同的格式录制,尽管我的 CamcorderProfile 和 MediaRecorder 设置。我需要一种方法来规范这些视频,以便它们可以在 Android 设备上播放,无论它们是在哪个设备上录制的。

标签: android video android-videoview


【解决方案1】:

这是我用来转换适用于 Android 的视频的线路。我很幸运在所有运行 Android >= 4 的设备上玩过它。请注意,这与 recommended video encodings 中的“高质量”参数相匹配。

avconv -i source.mp4 -vcodec libx264 -profile:v baseline -b 500k -r 30 -vf "setsar=1:1" -acodec libvo_aacenc -ac 2 -ar 44100 -ab 128k converted.mp4

我使用的 setsar 过滤器将样本纵横比设置为 1:1,我发现如果您还使用任何 transposescale 选项,这将很有帮助。

例如,要顺时针旋转视频,请使用:

avconv ... -vf "transpose=dir=clock, setsar=1:1" ...

要记住的一点是,某些设备不支持播放分辨率大于屏幕的视频。也就是说,屏幕尺寸为 400x800 的手机可能很难播放 800x600 的视频。

逆时针旋转并缩放视频,使其宽度为 400:

avconv ... -vf "transpose=dir=cclock, scale=400:trunc(ow/a/2)*2, setsar=1:1" ...

要顺时针旋转并缩放视频以使其高度为 400,请使用以下命令:

avconv ... -vf "transpose=dir=clock, scale=trunc(oh*a/2)*2:400, setsar=1:1" ...

我希望这会有所帮助!这对我来说经历了很多试验和错误。

对于它的价值,这是我正在使用的 avconv:

avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3

我已经安装了this libav-tools packagethis libavcodec-extra-53 package

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-07
    • 2023-04-01
    • 1970-01-01
    • 2016-03-12
    • 2014-06-09
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多