wki*_*ugh 2 audio video ffmpeg
我正在尝试将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
Run Code Online (Sandbox Code Playgroud)
Sco*_*tKu 10
以下命令应该执行与 llogan 的答案相同的操作,但不会重新压缩视频轨道,并要求您确定应将多少个音轨合并在一起。
如果您想知道有多少音频流,请尝试:
ffprobe originalfile.mov 2>&1 | grep 'Stream #'
Run Code Online (Sandbox Code Playgroud)
一旦您确定了应合并多少个音频流,请在此处的 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
Run Code Online (Sandbox Code Playgroud)
您可以使用ffprobe查找音频流的数量,并将输出用作ffmpeg命令中的变量。Bash示例wc用于计算以下列出的音频流ffprobe:
ffmpeg -i input.mov -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[0:a]amerge=inputs=$(ffprobe -loglevel error -select_streams a -show_entries stream=codec_type -of csv=p=0 input.mov | wc -l)[a]" -map "[v]" -map "[a]" -c:v libx264 -crf 23 -preset medium -c:a libmp3lame -ar 44100 -ac 2 output.mov
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2684 次 |
| 最近记录: |