Konversi batch H.265 ke H.264
Contoh-contoh ini ditulis untuk saat ini ffmpeg
. Simpan sendiri beberapa masalah dan unduh versi terbaru. Kemudian masukkan ffmpeg
biner ~/bin
atau /usr/local/bin
(Anda mungkin harus logout lalu login agar diperhatikan).
Output Matroska
mkdir h264vids
for f in *.mp4; do ffmpeg -i "$f" -map 0 -c copy -c:v libx264 -crf 23 -preset medium h264vids/"${f%.*}.mkv"; done
Contoh ini akan menampilkan ke direktori bernama h264vids
.
Contoh ini mengasumsikan input Anda .mp4
. Jika tidak, ubah .mp4
instance pada contoh menjadi tipe file input Anda, atau gunakan saja serakah *
itu sendiri.
Menyesuaikan -crf
kualitas dan -preset
kecepatan / efisiensi penyandian. Atau hapus saja opsi-opsi ini dan gunakan default yang cukup baik dan cukup untuk sebagian besar (contohnya adalah menggunakan nilai default untuk opsi ini). Lihat FFmpeg Wiki: H.264 untuk info lebih lanjut tentang opsi ini.
Output MP4
Yang ini sedikit lebih rumit. Ini akan melakukan pengkodean bersyarat tergantung apakah input audio AAC atau tidak. Jika input audio AAC maka audio akan disalin streaming (muxed kembali) apa adanya dan re-encoding yang tidak perlu dihindari. Jika audio input bukan AAC maka akan disandikan ulang ke AAC.
Berikut ini skrip sederhana yang menunjukkan cara melakukan ini menggunakan ffprobe
dan ffmpeg
. Salin dan simpan ke direktori yang berisi video Anda untuk dikonversi, berikan izin untuk menjalankannya chmod +x yourscriptname
, lalu jalankan dengan ./yourscriptname
.
#!/bin/bash
mkdir h264vids
for f in *.mkv
do
audioformat=$(ffprobe -loglevel error -select_streams a:0 -show_entries stream=codec_name -of default=nw=1:nk=1 "$f")
if [ "$audioformat" = "aac" ]; then
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart h264vids/"${f%.*}.mp4"
else
ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a aac -movflags +faststart h264vids/"${f%.*}.mp4"
fi
done
Contoh ini akan menampilkan ke direktori bernama h264vids
.
Contoh ini mengasumsikan input Anda .mkv
. Jika tidak, ubah .mkv
instance pada contoh menjadi tipe file input Anda, atau gunakan saja serakah *
itu sendiri.
Lihat catatan di atas tentang -crf
dan -preset
.
Anda dapat menjeda pengodean dengan ctrl+ zdan melanjutkan dengan fg
.
sleep 3
itu tidak perlu (tapi mungkin berguna untuk mengakhiri loop), danINPUT=$1
tidak ada artinya karena Anda menjalankan ini secara langsung dalam shell interaktif.