我对ffmpeg很新,我试图用另一个第二个文件替换第一个音频文件的一部分。第二个文件可能太短,因此应该存在某种循环。
经过一些研究后,我想出了以下命令参数,只要我只做一次替换就会给出输出。但我想做多次更换。那么对我做错的任何帮助呢?对工作方式的任何建议/评论也非常欢迎。
(以下命令中的任何拼写错误都可以忽略,我通过脚本生成命令,为了便于使用,我简化了名称。)
作品(一次替换):
"ffmpeg.exe" -y -i "first.wav" -i "second.wav" -filter_complex "[1:a][1:a][1:a]concat=n=3:v=0:a=1,asetpts=PTS-STARTPTS[replaceBase];[0:a]atrim=0:3,asetpts=PTS-STARTPTS[partA];[replaceBase]atrim=0:2,asetpts=PTS-STARTPTS[replaceA];[0:a]atrim=start=5,asetpts=PTS-STARTPTS[partB];[partA][replaceA][partB]concat=n=3:v=0:a=1[aout]" -map "[aout]" Out.wav
不工作(多次替换):
"ffmpeg.exe" -y -i "first.wav" -i "second.wav" -filter_complex "[1:a][1:a][1:a]concat=n=3:v=0:a=1,asetpts=PTS-STARTPTS[replaceBase];[0:a]atrim=0:3,asetpts=PTS-STARTPTS[partA];[replaceBase]atrim=0:2,asetpts=PTS-STARTPTS[replaceA];[0:a]atrim=5:4,asetpts=PTS-STARTPTS[partB];[replaceBase]atrim=0:2,asetpts=PTS-STARTPTS[replaceB];[0:a]atrim=start=6,asetpts=PTS-STARTPTS[partC];[partA][replaceA][partB][replaceB][PartC]concat=n=4:v=0:a=1[aout]" -map "[aout]" Out.wav
ffmpeg版本N-76860-g72eaf72版权所有(c)2000-2015 FFmpeg开发人员 用gcc 5.2.0(GCC)构建 配置: - enable-gpl --enable-version3 --disable -w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable -libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable -libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable- libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 9.100 / 55. 9.100 libavcodec 57. 16.100 / 57. 16.100 libavformat 57. 19.100 / 57. 19.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 15.100 / 6. 15.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 输入流#0.0的猜测通道布局:立体声 输入#0,wav,来自' 3897583stereo.wav': 持续时间:00:00:12.07,比特率:256 kb / s 流#0:0:音频:pcm_s16le([1] [0] [0] [0] / 0x0001),8000 Hz,2个通道,s16,256 kb / s 输入流#1.0的猜测通道布局:立体声 输入#1,wav,来自' beep-021.wav': 元数据: 编码器:Lavf57.19.100 持续时间:00:00:00.30,比特率:1413 kb / s 流#1:0:音频:pcm_s16le([1] [0] [0] [0] / 0x0001),44100 Hz,2个通道,s16,1411 kb / s [wav @ 057242c0]无效的流说明符:replaceBase。 最后一条消息重复了1次 流指定符' STREAM CUT 不匹配任何流。
提前致谢!
答案 0 :(得分:1)
我设法通过使用asplit分割循环流来找到解决方法(或者可能只是应该如何完成)。关于加工方式的评论仍然受欢迎......
NSString *thumbnail_url = [tempObject objectForKey:@"image"];
NSURL *url = [NSURL URLWithString:thumbnail_url];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDownloadTask *downloadPhotoTask = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
NSData *imageData = [[NSData alloc] initWithContentsOfURL:location];
dispatch_async(dispatch_get_main_queue(), ^{
cell.tableImageView.image = [UIImage imageWithData:imageData];
});
}];
[downloadPhotoTask resume];
此致