audio - 使用 ffmpeg、linux 提取音频
问题描述
我正在尝试从一些 Avi 视频中提取音轨并将它们保存到自己的文件中,最好不要重新编码。
我已经浏览了这里https://www.ffmpeg.org/ffmpeg.html#Audio-Options和这里ffmpeg 从视频中提取音频,尽管无论我尝试哪种方法我都会遇到错误。
我最新的命令字符串是:
ffmpeg -i /home/d/Pictures/Test/input-video.AVI -map 0:a -vn -acodec copy /home/d/Pictures/Test/output-audio.m4a
输出的关键部分是:
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, avi, from '/home/d/Pictures/Test/input-video.AVI':
Duration: 00:00:05.94, start: 0.000000, bitrate: 18131 kb/s
Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 1280x720, 17995 kb/s, 30.28 fps, 30.28 tbr, 30.28 tbn, 30.28 tbc
Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 11025 Hz, 1 channels, s16, 176 kb/s
File '/home/d/Pictures/Test/output-audio.m4a' already exists. Overwrite ? [y/N] y
[ipod @ 0x1d89520] Codec for stream 0 does not use global headers but container format requires global headers
[ipod @ 0x1d89520] Could not find tag for codec pcm_s16le in stream #0, codec not currently supported in container
Output #0, ipod, to '/home/d/Pictures/Test/output-audio.m4a':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 11025 Hz, mono, 176 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
我相信我从这个输出中得到了正确的音频流编号,因此我假设“-map 0:a”部分不是问题。
我在 Linux Mint 18.1 上运行
解决方案
MP4 系列格式不存储 PCM 音频,因此您必须重新编码或保存为另一种格式,例如 Matroska。
ffmpeg -i video.AVI -map 0:a -vn -acodec copy audio.mka
推荐阅读
- jboss - CAS 默认主题属性导致问题
- nlp - 使用余弦相似度对文档进行分类
- javascript - 使用 d3.json() 获取数据不起作用,而使用 JS async await 可以工作。为什么?
- java - 在 saucelabs 中并行运行测试最终会变慢
- ruby-on-rails - Wicked_pdf 不在生产中显示图像,但在本地开发中显示
- linkedin - API请求分页响应错误
- c# - 异步方法不识别产量返回方法?
- python-3.x - Python pandas to_datetime 工作不一致:为什么月份和日期混在一起?
- git - 如何将分支与已发布的代码合并?
- scala - Scala解析器与List左递归