我正在尝试将ffmpeg用于许多文件。 在我使用ffmpeg之前,每个文件的实际音频流数量(每个流通常有一个频道)是不可知的。 期望的结果是以某种方式让ffmpeg获得音频通道的数量,使用命令行中的数字将这些数字合并为一个音频通道。 目标是创建原始视频文件的预览版本,以便在简单的HTML5页面中使用。 只需一次调用ffmpeg就可以了吗? (另外,道歉是这个问题的某些部分,我还在学习)
编辑: Dumas stackoverflow提问者在这里。 是的,我一直在尝试ffmpeg args的多种组合。 为了回答另一个问题,我们有多个视频文件,通常有单个频道。 我很快就会发布一些cmdline示例。
这个cmdline示例可以满足我的需求;有8个流,我可以将所有音频合二为一。问题是在运行ffmpeg之前必须知道数字:
ffmpeg -i EXAMPLE.MOV -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[0:a]amerge=inputs=8[a]" -map "[v]" -map "[a]" -c:v libx264 -crf 23 -preset medium -c:a libmp3lame -ar 44100 -ac 2 OUTPUT.mov
答案 0 :(得分:4)
您可以使用-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// Check if the index path is the index path of the last row in the table view, and if it is, hide the view you want to hide.
}
查找音频流的数量,并将输出用作ffprobe
命令中的变量。 Bash示例使用ffmpeg
计算wc
列出的音频流:
ffprobe
答案 1 :(得分:0)
以下命令应与llogan的回答相同,但不会重新压缩视频轨道,并且需要您确定应合并多少个音频轨道。
如果您想知道存在多少个音频流,请尝试:
ffprobe originalfile.mov 2>&1 | grep 'Stream #'
确定了应合并的音频流后,请在此处的amerge = inputs = 2参数中使用该数字。此命令会将流合并为一个,并使用aac压缩重新压缩音频。
ffmpeg -i originalfile.mov -c:v copy -c:a aac -b:a 160k -ac 2 -filter_complex amerge=inputs=2 output.mp4