java - 使用相同的 ffmpeg 命令在不同环境(AWS Lambda 与本地)中的不同结果

标签 java android video lambda ffmpeg

我到这里就无计可施了。所以我有一个 AWS lambda,它只是一些在视频文件上运行 ffmpeg 命令的 Java 代码。当我下载这个视频文件并对其进行 ffprobe 时,元数据看起来与我抓取同一个文件并从命令行在本地运行相同的 ffmpeg 命令时的样子不同。我不知道为什么会这样。我确保具有相同的 ffmpeg 版本和所有版本,但是与另一个文件相比,运行该命令的 lambda 生成的文件缺少一些东西。我在看这个的原因是这个由运行命令的 lambda 产生的文件不能在某些播放器上播放(例如,android exoplayer 和 android/mobile 版本的 Chrome 有问题),而这个文件是由运行命令的我在我尝试过的任何地方都可以播放。以下是不同的元数据:

在本地运行:

Metadata:
  service_name    : Service01
  service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, progressive), 1280x720 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 95 kb/s

vs 由 lambda 运行:
Metadata:
  service_name    : Service01
  service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 95 kb/s

如您所见,在分辨率旁边明确说明了 DAR 和 SAR,并且在 yuv420p 旁边的括号中的渐进式旁边还有“tv”。我尝试通过添加更多过滤器和标志来调整命令,但最终结果是相同的......我不确定这会解决我的可玩性问题,但有人可以解释为什么尽管使用相同的最终结果会有所不同ffmpeg的版本(并且都是64位)和所有?

最佳答案

android 无法播放视频的问题最终与此无关。只是因为生成的文件的扩展名都是大写的,而android并没有真正识别它。

关于java - 使用相同的 ffmpeg 命令在不同环境(AWS Lambda 与本地)中的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927873/

相关文章:

java - Netty-4.0.0.CR6 抛出 OutOfMemoryError

java - 如何使用 Hibernate 和 JPA 定义外键映射的字段顺序?

java - Chrome 和 Firefox 网络推送 - 服务器端有什么区别?

java - 为什么 TextView 无法显示从 Android 资源引用的格式化文本?

video - Libavformat 记录 RTP 流太快(FPS 太高)

Android:在 Opengl 应用程序中播放视频的最佳方式

java - 在 Netbeans 中运行给定包中的所有 junit 测试?

Android OpenCV 绘制霍夫线

java - FirebaseUI RecyclerView如何添加一个元素到定义的位置

html - Vue.js 如何绑定(bind) html5 视频元素的播放速率?