====== ffmpeg - Conversions - Convert H265 to H264 ======
===== Software Encoding =====
==== Using ffmpeg ====
ffmpeg -i input.mkv -c copy output.mp4
----
===== Matroska output =====
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
* Will output to a directory named h264vids.
* Assumes your inputs are .mp4. If not, change the .mp4 instance in the example to your input file type, or just use the greedy * by itself.
* Adjust -crf for quality and -preset for encoding speed/efficiency. Or just remove these options and use the defaults which are fairly good and should suffice for most (the example is using the default values for these options).
See [[https://trac.ffmpeg.org/wiki/Encode/H.264|FFmpeg Wiki: H.264]] for more info on these options.
----
===== MP4 output =====
This example is a little more complicated.
This will perform conditional encoding depending if the input audio is AAC or not.
If the input audio is AAC then the audio will be stream copied (re-muxed) as is and needless re-encoding is avoided.
If the input audio is not AAC then it will be re-encoded to AAC.
#!/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
* Will output to a directory named h264vids.
* Assumes your inputs are .mkv. If not, change the .mkv instance in the example to your input file type, or just use the greedy * by itself.
* See note above regarding -crf and -preset.
* You can pause the encoding with ctrl+z and resume with fg.
----
===== Using ffmpeg =====
for file in *265.mkv; do nice -n19 ffmpeg -i $file -c copy -c:v libx264 ${file/%265.mkv/264.mkv}; done
* Assumes that the files have always a name ending in 265.mkv.
* This ending will be replaced with 264.mkv.
----
===== Using libav =====
sudo apt-get install libav-tools
avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4