-1

我在手机上录制通话(仅作为音频)。记录存储到 3gp 文件。当我播放单个文件时,可以提到它的播放速度比正常的对话速度快几倍。我测试过,使用命令在 ffplay 上播放

ffplay.exe %1 -ar 8000

听起来像真正的速度。

我想使用 ffmpeg 文件(在 Windows 上运行的简单批处理脚本)将 3gp 文件转换为 mp3 文件。我从命令行开始

ffmpeg.exe -i %1 -ar 8000 -f mp3 %1.mp3

但是 mp3 的 bitaire 听起来不太好(太快了)。我使用 -b、-b:a 和其他参数进行了实验,但比特率没有改变。

我使用哪些参数将 3gp 更改为具有适当比特率值的 mp3 文件?

4

3 回答 3

0

那么你发出的命令是正确的。我自己尝试过它们并且工作正常。因此,首先只需使用 1 个文件而不是batch files.

这是命令1

ffmpeg -i input.3gp -ar 32k -f mp3 out.mp3 

结果

out.mp3 的比特率为 47kbps

命令 2

ffmpeg -i inout.3gp -b:a 32k out.mp3

out.mp3 的比特率 32kbps

所以你可以选择上述任何一种。干杯:)

于 2014-01-24T04:46:07.690 回答
0
-ar 8000

强制 ffmpeg 将您的输入文件解释为以 8kHz 采样。是这种情况还是您尝试将其下采样到 8 kHz?

如果是这样,请尝试以下操作:

-af "aresample=8000"

如果您对此感到满意,请将其标记为好答案;)

于 2014-01-24T00:42:06.363 回答
0

您将在下面找到我修改为包含 .3gp 文件的脚本。它还处理 .mp4 .mkv 和 .webm 文件。声音的清晰度在 30k 时很好,这就是这里的情况,但是如果您想要更大的文件并具有更好的声音清晰度,请尝试 2​​00k。例如,调用您的脚本文件 vidconvmp3.sh 并保存它。然后modch +x vidconvmp3.sh 授权执行。然后 ./vidconvmp3.sh 如果您在桌面上运行终端,您的批处理将运行并将您的 mp3 文件扔到一个名为 Desktop-mp3 的文件夹中...... tah dah。

#!/usr/bin/env bash

# My bash Script to convert mp4 to mp3
# By NerdJK23
# web: www.computingforgeeks.com
# email: kiplangatmtai@gmail.com

# Requires
# ffmpeg installed
# lame installed
# Check https://computingforgeeks.com/how-to-convert-mp4-to-mp3-on-linux/

echo -ne """
1: Current directory
2: Provide directory
"""
echo ""
echo -n "Selection : "
read selection

case $selection in
    1)
    echo "Okay.."
    echo ""
    echo "Current dir is `pwd` "
    ;;
    2)
    echo ""
    echo -n "Give diretory name: "
    read dir_name

# Check if given directory is valid
if [ -d $dir_name ]; then

    cd "${$dir_name}"
    echo "Current directory is `pwd` "
    echo 
else
    echo "Invalid directory, exiting.."
    echo ""
    exit 10
fi

    echo
    ;;

   *)
       echo
       echo "Wrong selection"
       exit 11
       ;;
esac

echo ""

# Create dir to store mp3 files if it doesn't exist
# First get the current directory name

current_dir=`pwd`
base_name=` basename "$current_dir"`

if [[ ! -d "$base_name"-mp3 ]]; then

echo "$base_name" | xargs  -d "\n" -I {} mkdir {}-mp3
    echo ""
fi
echo ""


# Bigin to covert videos to mp3 audio files
# -d "\n" > Change delimiter from any whitespace to end of line character 

find . -name "*.mp4" -o -name "*.mkv" -o -name "*.webm" -o -name "*.3gp" | xargs  -d "\n"  -I {} ffmpeg -i {} -b:a 30K -vn "$base_name"-mp3/{}.mp3 

# remove video extensions

cd "${base_name}"-mp3

for file_name in *; do      
    mv "$file_name" "`echo $file_name | sed  "s/.mp4//g;s/.mkv//g;s/.3pg//g;s/.webm//g"`";
done

# Move audio directory to ~/Music

if [[ ! -d ~/Music ]]; then
    mkdir ~/Music
fi
cd ..

mv  "$base_name"-mp3 ~/Music/

# Check if conversion successfull

echo ""

if [[ $? -eq "0" ]];then
    echo " All files converted successfully"
else
    echo "Conversation failed"
    exit 1
fi
于 2019-08-31T17:20:59.457 回答