在android中使用ffmpeg将mp4转换为m4a

abd*_*man 3 compression audio video android ffmpeg

我正在尝试在我的项目中添加压缩视频文件的功能。但是,我尝试在压缩之前使用 FFMPEG 库从原始视频文件中提取音频。命令行是

-i video.mp4 -c:a aac -b:a 160k target.m4a
Run Code Online (Sandbox Code Playgroud)

编码完成后,我注意到输出仍然是视频文件,但大小有所不同。这给我带来了两个问题,我想知道他们的答案。

1 - “.m4a”文件可以被视为视频文件吗?

2 - 我可以使用此命令行来压缩视频文件吗?

此致

执行命令后记录

-i video.mp4 -c:a aac -b:a 160k target.m4a
Run Code Online (Sandbox Code Playgroud)

llo*_*gan 5

1 - “.m4a”文件可以被视为视频文件吗?

是的。如果您的输入包含视频,那么您的输出也会包含视频,因为默认情况下 ffmpeg 会自动从输入中为每种流类型选择一个流以映射到输出。

至于扩展名.m4a旨在用于音频文件,但我怀疑它在功能上与.m4v和不同.mp4

2 - 我可以使用此命令行来压缩视频文件吗?

是的,事实上您的命令确实压缩了视频和音频。


如果您想提取音频,您需要告诉 ffmpeg 您想要哪些流,并告诉它流复制(重新复用)而不重新编码。仅包含音频流:

ffmpeg -i input.mp4 -map 0:a -c copy output.m4a
Run Code Online (Sandbox Code Playgroud)

或者排除视频:

ffmpeg -i input.mp4 -vn -c copy output.m4a
Run Code Online (Sandbox Code Playgroud)

我更喜欢,-map因为它更灵活;我几乎从不使用-vn-an-sn-dn