我使用了如下命令:
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
在最新版本添加新的音轨到视频(不混合)。
但是我更新了ffmpeg到最新版本(ffmpeg版本git-2012-06-16-809d71d),现在在这个版本中参数-newaudio不起作用。
请告诉我如何添加新的音频到我的视频(不混合)使用ffmpeg。
我使用了如下命令:
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
在最新版本添加新的音轨到视频(不混合)。
但是我更新了ffmpeg到最新版本(ffmpeg版本git-2012-06-16-809d71d),现在在这个版本中参数-newaudio不起作用。
请告诉我如何添加新的音频到我的视频(不混合)使用ffmpeg。
当前回答
这就是我是怎么做的。
我的设置是我有两个媒体流一个视频(有自己的音频频道)&一个音频。我没有从转换,但我通过将其与额外的音频通道集成而不替换视频流中的旧音频来重新流式直播源。
这是我使用的代码。
ffmpeg -i "Video stream with its own audio" -i "another audio stream" -map 0:v -map 0:a -map 1:a -shortest -f mpegts "multicast udp stream out put"
该代码所做的是,它在从现场源获取流后映射每个视频和音频通道。-map 0:v是视频流,-map 0:a是来自视频源的音频(注意-map中的0),最后-map 1:a是来自第二个源的音频流。
然后它只是通过多播地址使用mpegts重新传输它。您可以将其更改为文件、单播流或任何其他受支持的输出格式。
这是我正在使用的代码。
ffmpeg -i "rtp://@231.0.0.208:1234" -i "rtp://@231.0.0.206:1234" -map 0:v -map 0:a -map 1:a -shortest -f mpegts "udp://@231.0.0.45:1234"
希望这能帮助到一些人。谢谢!
其他回答
使用ffmpeg将音频添加到视频的代码。
如果音频长度大于视频长度,它会将音频切成视频长度。 如果你想要完整的音频视频删除-最短从cmd。
String [] cmd = new String[]{“我”,“我”,selectedVideoPath audiopath,“地图”、“1:一个”,“地图”、“0:v”、“编码”,“复制”,outputFile.getPath ()};
private void execFFmpegBinaryShortest(final String[] command) {
final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};
try {
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
System.out.println("on failure----"+s);
}
@Override
public void onSuccess(String s) {
System.out.println("on success-----"+s);
}
@Override
public void onProgress(String s) {
//Log.d(TAG, "Started command : ffmpeg "+command);
System.out.println("Started---"+s);
}
@Override
public void onStart() {
//Log.d(TAG, "Started command : ffmpeg " + command);
System.out.println("Start----");
}
@Override
public void onFinish() {
System.out.println("Finish-----");
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// do nothing for now
System.out.println("exceptio :::"+e.getMessage());
}
}
Mp3音乐wav
ffmpeg -i music.mp3 music.wav
截断适合视频
ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav
音乐和视频混合
ffmpeg -i musicshort.wav -i movie.avi final_video.avi
标记的答案不设置音轨的语言。
下面的例子为默认音轨(视频的唯一音频通道)指定德语,为新添加的音轨指定英语:
Ffmpeg -i "/dir/视频。Mkv " -i "/dir2/audio。ac3" -map 0 -map 1:a -c:v copy -short -metadata:s:a:0 language=ger -metadata:s:a:0 title=" ger " -metadata:s:a:1 language=eng -metadata:s:a:1 title=" eng " "/dir/output.mkv"
(s:a:0从0开始计数,根据需要调整数字。如果音轨语言已经指定,则不需要设置它,只需要为您添加的音轨设置它。)
如果输入视频有多个音轨,你需要再添加一个,然后使用以下命令:
ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi
-map 0表示从第一个输入文件(input_video_with_audio.avi)复制(包括)所有流,-map 1表示从第二个输入文件(new_audio.ac3)复制(包括)所有流(在本例中是一个流)。
取代音频
ffmpeg -i video.mp4 -i audio.wav -map 0:v -map 1:a -c:v copy -shortest output.mp4
The -map option allows you to manually select streams / tracks. See FFmpeg Wiki: Map for more info. This example uses -c:v copy to stream copy (mux) the video. No re-encoding of the video occurs. Quality is preserved and the process is fast. If your input audio format is compatible with the output format then change -c:v copy to -c copy to stream copy both the video and audio. If you want to re-encode video and audio then remove -c:v copy / -c copy. The -shortest option will make the output the same duration as the shortest input.
添加音频
ffmpeg -i video.mkv -i audio.mp3 -map 0 -map 1:a -c:v copy -shortest output.mkv
The -map option allows you to manually select streams / tracks. See FFmpeg Wiki: Map for more info. This example uses -c:v copy to stream copy (mux) the video. No re-encoding of the video occurs. Quality is preserved and the process is fast. If your input audio format is compatible with the output format then change -c:v copy to -c copy to stream copy both the video and audio. If you want to re-encode video and audio then remove -c:v copy / -c copy. The -shortest option will make the output the same duration as the shortest input.
混合/组合两个音频输入为一个
使用video.mkv中的视频。混合音频和视频。MKV和音频。M4a使用合并滤波器:
ffmpeg -i video.mkv -i audio.m4a -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -ac 2 -shortest output.mkv
更多信息请参见FFmpeg Wiki:音频通道。
生成无声音频
你可以使用anullsrc过滤器来制作一个无声的音频流。过滤器允许您选择所需的频道布局(单声道,立体声,5.1等)和采样率。
ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4
也看到
将两个音频流合并为一个 FFmpeg Wiki:音频通道操作 FFmpeg mux视频和音频从另一个视频