我到这里就无计可施了。所以我有一个 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/