如何将音频文件 .aac 准确地分割成小部分4.0秒, IE。忽略关键帧?
原始视频文件为.mp4 格式。从这个视频文件中我得到了一个 .aac 音频文件。但分割音频文件的新部分总是有 3.4 秒,而我需要 4.0 秒的音频。问题可能出在关键帧上。
谢谢。
cd $DIR_IN
for file in *.mp4
do
echo "Extracting the whole audio-track from $file to $DIR_TMP/${file%.mp4}.aac"
ffmpeg -i "$file" -vn -acodec copy $DIR_TMP/"${file%.mp4}.aac"
echo "Splitting the large video-file $file to a smaller audio-files '${file%.mp4}'XXX.aac"
ffmpeg -i $DIR_TMP/"${file%.mp4}.aac" -c copy -f segment -segment_time 4 $DIR_TMP/"${file%.mp4}%03d.aac"
rm -f $DIR_TMP/"${file%.mp4}.aac"
done
答案1
问题解决了:
#!/bin/bash
avfile=/tmp/video.mp4
ffmpeg -i "$avfile" -c:v libx264 -crf 23 -map 0 -segment_time 4 -g 4 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*4)" -f segment /tmp/output/"${avfile%.mp4}%03d.mp4"
答案2
ffmpeg -i sourcefile.aac -f segment -segment_time 4 -c copy out%03d.aac
会生成 4 秒的文件out000.acc
,out001.acc
诸如此类。请注意,最后一个文件的时间可能小于或等于 4 秒。
参考:“以指定的分段速率分割音频流”示例来自https://gist.github.com/protrolium/e0dbd4bb0f1a396fcb55