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 ffmpegbiner ~/binatau /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 .mp4instance pada contoh menjadi tipe file input Anda, atau gunakan saja serakah *itu sendiri.
Menyesuaikan -crfkualitas dan -presetkecepatan / 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 ffprobedan 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 .mkvinstance pada contoh menjadi tipe file input Anda, atau gunakan saja serakah *itu sendiri.
Lihat catatan di atas tentang -crfdan -preset.
Anda dapat menjeda pengodean dengan ctrl+ zdan melanjutkan dengan fg.
sleep 3itu tidak perlu (tapi mungkin berguna untuk mengakhiri loop), danINPUT=$1tidak ada artinya karena Anda menjalankan ini secara langsung dalam shell interaktif.