ffmpeg - 如何将 .aac 音频文件分割成小部分,大小恰好为 4.00 秒(因此忽略关键帧)

ffmpeg - 如何将 .aac 音频文件分割成小部分,大小恰好为 4.00 秒(因此忽略关键帧)

如何将音频文件 .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.accout001.acc诸如此类。请注意,最后一个文件的时间可能小于或等于 4 秒。

参考:“以指定的分段速率分割音频流”示例来自https://gist.github.com/protrolium/e0dbd4bb0f1a396fcb55

相关内容