FFMPEG将mkv转换为mp4后,在HTML5播放器中缺少音频

9

我使用ffmpeg命令将一个mkv文件转换成mp4格式:

ffmpeg -i input.mkv -c copy file-1.mp4

生成的mp4在Linux Mint的Xplayer上可以正常播放(视频和音频)。但是上传了文件1后,它没有声音。因此,我上传了另一个mp4文件2,一个我不需要转换的文件,并且两个都可以正常播放视频和音频。所以,无论发生了什么,似乎与我的ffmpeg使用有关。
我使用的播放器叫做afterglow。但是HTML5播放器以相同的方式处理这两个文件:文件1和文件2。
有谁知道为什么在线播放转换后的mkv文件没有声音吗?是否有不同的转换命令可以确保转换后的文件可以通过在线播放器播放声音?

@LordNeckbeard - 你需要逐帧输出吗?还是只需要初始启动和结束,省略帧转换? - fmc
@LordNeckbeard - 我已经更新了我的帖子,并附上了转换输出的链接。再次说明,只有在使用在线播放器时才会失去声音。当从我的硬盘播放文件时,它会提供声音。 - fmc
1个回答

19

我看到几个问题:

  1. 输入文件中有DTS音频。虽然在MP4格式中它是被支持的,但我猜它在HTML5中无法使用。因此您需要将其转换为AAC格式。在 -c copy 后添加 -c:a aac

  2. 您的ffmpeg版本较旧。FFmpeg AAC编码器已经有了改进,而您的版本还不具备这些改进。通过下载最新版本来避免任何其他潜在问题。

  3. 添加 -movflags +faststart。这将在编码后将文件中的一些信息移动,以便可以更快地开始播放;否则它将必须在播放前下载整个视频。

示例命令:

ffmpeg -i input.mkv -c copy -c:a aac -movflags +faststart output.mp4

3
所以,这是正确的命令:ffmpeg -i input.mkv -c copy -c:a aac -movflags +faststart file-1.mp4?我也会获取更新的ffmpeg。 - fmc
2
@fmc 是的(两年后)。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接