audio - 使用 ffmpeg 连接音频文件
问题描述
我正在尝试使用 ffmpeg 连接 ac3 和 aac。
jpn_op.m4a的ffprobe:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'jpn_op.m4a':
Metadata:
major_brand : M4A
minor_version : 512
compatible_brands: M4A isomiso2
encoder : Lavf58.76.100
Duration: 00:01:17.28, start: 0.000000, bitrate: 224 kb/s
Stream #0:0(jpn): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 224 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Side data:
audio service type: main
eng_nop.m4a 的 ffprobe
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'eng_nop.m4a':
Metadata:
major_brand : M4A
minor_version : 512
compatible_brands: M4A isomiso2
encoder : Lavf58.76.100
Duration: 00:22:09.26, start: 0.023000, bitrate: 41 kb/s
Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 39 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
我试过这个:
ffmpeg -f concat -i concat_files.txt -c copy final.m4a -y
concat_files.txt 包含:
file 'jpn_op.m4a'
file 'eng_nop.m4a'
final.m4a的ffprobe
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'final.m4a':
Metadata:
major_brand : M4A
minor_version : 512
compatible_brands: M4A isomiso2
encoder : Lavf58.76.100
Duration: 00:23:26.50, start: 0.000000, bitrate: 51 kb/s
Stream #0:0(jpn): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 224 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Side data:
audio service type: main
但是,final.m4a 中的第 2 个文件是无声的
解决方案
格式和属性必须相同才能使 concat demuxer 工作。重新编码其中一个文件以匹配另一个文件然后连接。
或者改用concat 过滤器:
ffmpeg -i jpn_op.m4a -i eng_nop.m4a -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" final.mp4
推荐阅读
- javascript - 在 IntelliJ 中阻止 Typescript 自动完成
- algorithm - 在这种情况下,“给出整体运行时间”是什么意思?
- javascript - 如何将字符串转换为对象以便能够将其作为函数参数传递
- jquery-terminal - 反转 JQuery-Terminal 的流程
- elastic-stack - ELK,本地机器上的 Filebeat 设置,Logstash 不工作,伐木工人协议错误
- php - PHP表格行编号
- sql - 如何在 SAS EG 中获取行号列以简化按该唯一编号选择行?我想使用 PROC SQL 语法
- c# - 结构为 ReadOnlyMemory
表示 - node.js - 调用 Rest API 时 Node.js Discord 机器人消息为空
- racket - 球拍有点不一致