User Tools

Site Tools


ffmpeg:conversions:convert_h265_to_h264

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ffmpeg:conversions:convert_h265_to_h264 [2023/06/13 10:47] – created peterffmpeg:conversions:convert_h265_to_h264 [2023/06/13 10:56] (current) peter
Line 1: Line 1:
 ====== ffmpeg - Conversions - Convert H265 to H264 ====== ====== ffmpeg - Conversions - Convert H265 to H264 ======
 +
 +===== Software Encoding =====
 +
 +==== Using ffmpeg ====
 +
 +<code bash>
 +ffmpeg -i input.mkv -c copy output.mp4
 +</code>
 +
 +----
 +
 +===== Matroska output =====
 +
 +<code bash>
 +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
 +</code>
 +
 +  * 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.
 +
 +<code bash>
 +#!/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
 +</code>
 +
 +  * 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 =====
 +
 +<code bash>
 +for file in *265.mkv; do nice -n19 ffmpeg -i $file -c copy -c:v libx264 ${file/%265.mkv/264.mkv}; done
 +</code>
 +
 +  * Assumes that the files have always a name ending in 265.mkv.
 +  * This ending will be replaced with 264.mkv.
 +
 +----
 +
 +===== Using libav =====
 +
 +<code bash>
 +sudo apt-get install libav-tools
 +avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4
 +</code>
  
ffmpeg/conversions/convert_h265_to_h264.1686653233.txt.gz · Last modified: 2023/06/13 10:47 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki