Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ffmpeg [2013/06/28 15:10]
beandog
ffmpeg [2023/04/09 21:27] (current)
beandog
Line 1: Line 1:
 ====== ffmpeg ====== ====== ffmpeg ======
  
-=== Wrong audio track by default ===+  * [[ffplay]] 
 +  * [[ffprobe]] 
 +  * [[frameinfo]] 
 +  * [[framecount]] 
 +  * [[detelecine]] 
 +  * [[yadif]] 
 +  * [[bwdif]] 
 +  * [[Subtitles]] 
 + 
 +  * [[https://​amiaopensource.github.io/​ffmprovisr/​|ffmprovisr]] - excellent page to help you "​build"​ an ffmpeg command 
 +  * [[https://​en.wikibooks.org/​wiki/​FFMPEG_An_Intermediate_Guide]] 
 +  * [[http://​wiki.indie-it.com/​wiki/​FFmpeg_DVD]] - lots of good, detailed ffmpeg examples 
 + 
 +To do a clean MPG [[dvd_copy|copy]] from a DVD: 
 + 
 +<​code>​ 
 +dvd_copy -o - | ffmpeg -i - -map 0:v -map 0:a -map 0:s -codec copy -f vob dvd_copy.mpg  
 +</​code>​ 
 + 
 +Or into Matroska: 
 + 
 +<​code>​ 
 +dvd_copy -o - | ffmpeg -fflags +genpts -i - -codec copy dvd_copy.mkv  
 +</​code>​ 
 + 
 +''​ffmpeg''​ can copy a Blu-ray directly as well, once you know the playlist number (see [[bluray_info]]). 
 + 
 +<​code>​ 
 +ffmepg -playlist 800 -i bluray:/​dev/​sr0 -codec copy bluray_playlist.mkv 
 +</​code>​ 
 + 
 +** Adding Chapters ** 
 + 
 +  * See [[https://​ffmpeg.org/​ffmpeg-formats.html#​Metadata-1]] 
 + 
 +Create a file with the metadata. This example here has chapters at each minute mark. 
 + 
 +<​code>​ 
 +;​FFMETADATA1 
 +[CHAPTER] 
 +TIMEBASE=1/1000 
 +START=
 +END=60000 
 +title=Chapter 1 
 +[CHAPTER] 
 +TIMEBASE=1/​1000 
 +START=60000 
 +END=120000 
 +title=Chapter 2 
 +[CHAPTER] 
 +TIMEBASE=1/​1000 
 +START=120000 
 +END=180000 
 +title=Chapter 3 
 +[CHAPTER] 
 +TIMEBASE=1/​1000 
 +START=180000 
 +END=240000 
 +title=Chapter 4 
 +</​code>​ 
 + 
 +Use the file as input with the encode, and map the metadata: 
 + 
 +<​code>​ 
 +ffmpeg -i video.mpg -i chapters.txt -map_metadata 1 video.mkv 
 +</​code>​ 
 + 
 +You can extract the metadata as well: 
 + 
 +<​code>​ 
 +ffmpeg -i dvd_copy.mkv -f ffmetadata metadata.txt 
 +</​code>​ 
 + 
 +=== archives: ​Wrong audio track by default ===
  
 **Note:** This is a bug I would run into after extracting a VOB from a DVD, and running ''​ffmpeg -i movie.vob''​ **Note:** This is a bug I would run into after extracting a VOB from a DVD, and running ''​ffmpeg -i movie.vob''​
Line 19: Line 92:
     Stream #0.6[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s     Stream #0.6[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s
 Output #0, avi, to '​movie.avi':​ Output #0, avi, to '​movie.avi':​
-    Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 32:27 DAR 16:​9], ​ +    Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 32:27 DAR 16:9], q=2-31, 200 kb/s, 59.94 tb(c)
-q=2-31, 200 kb/s, 59.94 tb(c)+
     Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s     Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
 Stream mapping: Stream mapping:
Line 32: Line 104:
 ffmpeg -i movie.vob -map 0.0:0.0 -map 0.6:0.1 ffmpeg -i movie.vob -map 0.0:0.0 -map 0.6:0.1
 </​code>​ </​code>​
 +
 +=== archives: From Letterbox to Anamorphic Widescreen ===
 +
 +<​code>​
 +ffmpeg -i movie.vob -acodec copy \
 + -croptop 60 -cropbottom 60 \
 + -s 720x480 -aspect 16:9 -deinterlace \
 + -vcodec libx264 -vpre hq -crf 12 -threads 0 \
 + movie.mp4
 +</​code>​
 +
 +The original source of DVDs is a 720x480 picture. ​ The height is stretched to 540 pixels (480 x 1.125 = 540) to display it, so that the aspect ratio is 4:3 (720/540 = 1.33333).
 +
 +What I want to do is both crop the black and bottom bars, but also keep the new size the same as the original one ... just so that the new specs mirror exactly what a widescreen DVD would be (instead of having arbitrary heights/​widths).
 +
 +Since the original size is a height of 480 pixels, *that* is the number to use when counting how many pixels to crop.  *Do not* count it from the display size (540). ​ That's why I'm cropping by 60 on top and bottom (verified with GIMP).
 +
 +If you look at a "​normal"​ widescreen movie that doesn'​t have black bars at the top and bottom, you'll see that source material is the same size: 720x480. ​ The aspect ratio, though, is 16:9, so the display is stretched to 854x480 -- in this case, it's the width that is stretched instead of the height (480 x 16/9 = 853.333).
 +
 +Last but not least, the MPEG2 codec can store the display aspect ratio inside the header data, which is why you tell ffmpeg that the new one is 16:9.
 +
 +If you looked at a widescreen and a fullscreen video, the original display size is actually the same: 720x480. ​ They are just stretched differently based on the aspect ratio.
 +
 +=== archives: Convert image to video ===
 +
 +<​code>​
 +ffmpeg -i snapshot.jpg -sameq -s 720x480 video.mp4
 +</​code>​
 +
 +That will create a one frame video. ​ Then I copy it to about 200 frames to make a 6 second video.
 +
 +Avidemux has problems opening a single frame file, so create a long MP4 before trying to create a VOB to burn to DVD.
 +
 +=== archives: PSP Format w/ffmpeg ===
 +
 +Finally found a working solution:
 +
 +<​code>​ffmpeg -y -i 101._The_Force_Phantom.mkv -s 320x240 -ar 24000 -r 29.97 -f psp -title "The Force Phantom"​ M4V12345.MP4</​code>​
 +
 +You *can* encode to 480x272 (or 270) and it will playback fine, but for some reason the title tag won't be read anymore. ​ Seems to be a PSP bug, since a video I downloaded (SWTFU stuff) also won't display it.
 +
 +Also, MV1234.MP4 is the old supported format. ​ My PSP (firmware >5) supports "​movie.mp4"​ naming scheme, as well as folder structures just fine!

Navigation