惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Know Your Adversary
Know Your Adversary
WordPress大学
WordPress大学
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
Vercel News
Vercel News
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
小众软件
小众软件
The GitHub Blog
The GitHub Blog
量子位
V
Visual Studio Blog
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
CERT Recently Published Vulnerability Notes
The Cloudflare Blog
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
The Hacker News
The Hacker News
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
Help Net Security
Help Net Security
G
GRAHAM CLULEY
Jina AI
Jina AI

PixelNest

会议是效率的杀手 国庆出游记录 对居家办公的一些想法 2022 春节 《搏击俱乐部》的结局 纪念 PAI 头一回达到 100 卡片笔记法 《刑法学讲义》的部分摘录 迁移博客 《UNIX 传奇》摘录 就地过年 一点记录:docker-compose 编排不同项目间的网络 近期读的几本书 办新身份证 git 获取其他分支的单个文件或目录 我的高考成绩 推荐 2020 年上半年的 8 部影视作品 ChromeOS 开发者模式 终于下单了《守望者》 联通来电管家服务 一些实用的 bash 代码片段 关于 鸟枪换炮 《架构整洁之道》摘录 惨淡的星球大战 旧笔记本电脑 if...then... 命令行检测 SSL 证书过期时间 《程序员的职业素养》读书笔记 2019 国庆假期 在 Ubuntu 里按空格键预览 《基本穿搭》笔记 我在 Ubuntu 里安装的一些软件 让人郁闷的英语学习过程 色彩理论基础 向百度主动推送网站链接 两部电视剧 《历史的教训》摘录 新工具 Koa 获取客户端 IP 备案了 apiDoc 基础语法 《代码整洁之道》摘录 BBC 纪录片 《逻辑的乐趣》 读不下去的《原则》 蓝牙鼠标唤醒休眠的 Ubuntu Google 发布会 2018 国庆假期 开发者的时间追踪和统计 使用 curl 发送 POST 请求的几种方式 《重来 2》读书笔记 Linux 和 MacOS 命令行转换图片用法整理 《Go 语言实战》笔记 Win10 微软拼音添加小鹤双拼以及其他配置 针对不同场景临时禁用 eslint 规则的方法 《好妈妈胜过好老师》读书笔记 配置 Win10 Linux 子系统作为开发环境 又读完一本尤·奈斯博的小说 近期写 Go 的一点语法碎片整理 睡前看手机的大问题 《局外人》读书笔记 菊次郎与佐纪 读书笔记 3 菊次郎与佐纪 读书笔记 2 菊次郎与佐纪 读书笔记 1 豆瓣图片服务器防盗链 《如何有效阅读一本书》读书笔记 - 3 《如何有效阅读一本书》读书笔记 - 2 《如何有效阅读一本书》读书笔记 - 1 Vim iskeyword 济南 图个乐 开始看不懂《西部世界》了 剧透 听到几个好故事 过周末 相亲 让人失望的 Apple 悬疑故事 AI 记忆 世纪三部曲 上帝的梦
ffmpeg 合并 MP4 M4A 文件
2018-08-22 · via PixelNest

前两天下载了一部动画片,下载好的目录里除了一个有声音和图像的 MP4 文件,还有一个普通话对白的 M4A 音频文件。今天费了些功夫,终于用 ffmpeg 把两个文件合并在一起,生成一个双音轨的视频文件。

差强人意

开始搜索了下怎样用 ffmpeg 把这个额外的音频合并到原有的 MP4 文件里去,敲了几个命令,结果不尽如人意,尝试了几次没有成功,退而求其次,把 MP4 文件里的视频和 M4A 音频合并在一起了,算是把 MP4 原本的音轨替换掉了。

ffmpeg -i original.mp4 -i mandarin.m4a -c copy -map 0:v:0 -map 1:a:0 output.mp4
  • original.mp4 是下载好的 MP4 文件
  • mandarin.m4a 是下载好的普通话对白 M4A 音频文件
  • output.mp4 是最终的输出文件
  • -map 0:v:0 中的第一个 0 表示(-i 指定的)第一个输入文件,v 表示需要的其中的视频内容,第二个 0 指定要的是文件里的第一个视频
  • -map 1:a:0 与上面类似,表示的是第二个(1)输入文件的第一个(0)音频(a)内容

最后得到的 output.mp4 不包含 MP4 文件原本的音频内容了,只有新合进去的音频。

这一节的标题“差强人意”我应该没用错,这个结果的确让我还算满意,几乎决定不再继续下去了。

各种失败的尝试

下面是最开始的几次失败尝试。

ffmpeg -i original.mp4 -i mandarin.m4a -acodec copy -vcodec copy output.mp4

结果跟原始文件基本一致。

考虑到 MP4 可能不支持多音轨——实际上是支持的,换用 mkv 作为输出格式,又做了一次尝试,结果表现仍然跟原始 MP4 文件一样。

ffmpeg -i original.mp4 -i mandarin.m4a -c copy output.mkv

最后的失败尝试,试了一个较为复杂的操作,从 MP4 文件里分离出视频和音频文件,再和已有的 M4A 文件一起合并。

ffmpeg -i original.mp4 -an -c:v copy video.mp4
ffmpeg -i original.mp4 -vn -c:a copy audio.m4a
ffmpeg -i video.mp4 -i audio.m4a -i mandarin.m4a -c copy output.mkv

仍然没得到“双音轨”。


Final

最终在做这份记录时,可能是理清了一些思路,忽然有了想法,通过几个 -map 参数分别指定一个视频流,两个音频流作为输入,合并为一个文件。

ffmpeg -i original.mp4 -i mandarin.m4a -c copy -map 0:v:0 -map 0:a:0 -map 1:a:0 output.mkv

终于达到了最初的目的,一部有画面,有英文音轨,有普通话音轨的动画片。