Skip to content

Instantly share code, notes, and snippets.

@vielhuber
Last active October 10, 2024 20:00
Show Gist options
  • Save vielhuber/cf918eed2b5cc9eaa63f to your computer and use it in GitHub Desktop.
Save vielhuber/cf918eed2b5cc9eaa63f to your computer and use it in GitHub Desktop.
ffmpeg: Video convert m2ts to mp4, mp4 to webm, mp4 to ogv #tools
MP4 TO MP4 (MEDIUM)
ffmpeg -i input.mp4 -b 1000000 output.mp4
M2TS TO MP4
ffmpeg -i input.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" output.mp4
MP4 TO WEBM (HIGH)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 25 -threads 2 output.webm
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -b:a 128k -c:a libopus output.webm
MP4 TO WEBM (MEDIUM)
ffmpeg -i input.mp4 -aq 5 -ac 2 -qmax 35 -threads 2 output.webm
MP4 TO OGV (HIGH)
ffmpeg -i input.mp4 -vcodec libtheora -acodec libvorbis -q:v 6 -q:a 5 output.ogv
MP4 TO OGV (MEDIUM)
ffmpeg -i input.mp4 -vcodec libtheora -acodec libvorbis -q:v 2 -q:a 4 output.ogv
@D3rel
Copy link

D3rel commented Aug 1, 2020

THANK YOUUU! <3

@0xrin1
Copy link

0xrin1 commented Feb 23, 2022

Hey the m2ts to mp4 conversion doesn't include the audio.

Any suggestions for what I could try?

@vielhuber
Copy link
Author

@0xrin1 Just tested the command above with the example file https://filesamples.com/samples/video/m2ts/sample_1280x720_surfing_with_audio.m2ts
and audio is working fine.

Can you please provide the given m2ts file that does not work?

@0xrin1
Copy link

0xrin1 commented Feb 24, 2022

Sorry, false alarm.

The converted files do have sound, I just took the word of the person I sent them to and then when I checked I think my system sound was muted 🤦

Sorry for wasting your time and thanks for the gist, really helpful 🙇

@APwhitehat
Copy link

APwhitehat commented May 17, 2022

Really nice gist.
Another command that comes in handy is lossless M2TS -> MP4 conversion.

  ffmpeg -i input.m2ts -vcodec copy -acodec copy -f mp4 output.mp4

This only changes the container without re-encoding, so it's instant.

@hmooly
Copy link

hmooly commented Jun 29, 2023

I want to convert a Blu-ray video file in m2ts format to mp4 without having to re-encode the video and audio. However, all the commands I have tried so far seem to have some issues. The file is converting quickly and smoothly and appears fine when played. However, if you attempt to skip forward or backward for a split second, it has a glitchy effect on the screen.

@D3rel
Copy link

D3rel commented Jun 30, 2023

I want to convert a Blu-ray video file in m2ts format to mp4 without having to re-encode the video and audio. However, all the commands I have tried so far seem to have some issues. The file is converting quickly and smoothly and appears fine when played. However, if you attempt to skip forward or backward for a split second, it has a glitchy effect on the screen.

just use ffmpeg -i input.m2ts -c copy output.mp4

@hmooly
Copy link

hmooly commented Jun 30, 2023

I want to convert a Blu-ray video file in m2ts format to mp4 without having to re-encode the video and audio. However, all the commands I have tried so far seem to have some issues. The file is converting quickly and smoothly and appears fine when played. However, if you attempt to skip forward or backward for a split second, it has a glitchy effect on the screen.

just use ffmpeg -i input.m2ts -c copy output.mp4

I have tried that one, as well as;
ffmpeg -i input.m2ts -c:v copy -c:a copy output.mp4
ffmpeg -r 29.97 -i input.m2ts -c:v copy -c:a copy output.mp4 (To keep fps same as original)

What I notice is a difference in fps in m2ts and mp4. The input is 29.97 fps and the output is 59.94!
Input : Video: h264 (High) (HDMV / 0x564D4448), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn
Output : Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 13417 kb/s, 59.94 fps, 59.94 tbr, 90k tbn (default)

@guy-teube
Copy link

Hello,

MP4 TO MP4 (MEDIUM)
ffmpeg -i input.mp4 -b 1000000 output.mp4

M2TS TO MP4
ffmpeg -i input.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" output.mp4

I don'y understand what is -b 1000000 format.
ffmpeg documentation is exhaustive, but quite difficult to understand, especially for non fluent englidh people.

My goal is to convert m2ts files in mp4 format, keeping the quality as good as possible.
I always use:
ffmpeg -i input.m2ts output.mp4
I get mp4 files with size 2x smaller than the m2ts file, and sometimes I see some "aliasing" (not sure it's the good word) when the animation of the video goes fast.
So I'm searching the good parameters to have mp4 in good quaity.
In the 2 examples above, which is the best way to my expected result?
Maybe it's others parameters?
Thank you for your advice.

@hmooly
Copy link

hmooly commented Feb 25, 2024

Hello,

MP4 TO MP4 (MEDIUM)
ffmpeg -i input.mp4 -b 1000000 output.mp4

M2TS TO MP4
ffmpeg -i input.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" output.mp4

I don'y understand what is -b 1000000 format. ffmpeg documentation is exhaustive, but quite difficult to understand, especially for non fluent englidh people.

My goal is to convert m2ts files in mp4 format, keeping the quality as good as possible. I always use: ffmpeg -i input.m2ts output.mp4 I get mp4 files with size 2x smaller than the m2ts file, and sometimes I see some "aliasing" (not sure it's the good word) when the animation of the video goes fast. So I'm searching the good parameters to have mp4 in good quaity. In the 2 examples above, which is the best way to my expected result? Maybe it's others parameters? Thank you for your advice.

I would use "-c:v copy -c:a copy", it will not re-encode the video/audio and will copy them into mp4 container.

ffmpeg -i input.m2ts -c:v copy -c:a copy output.mp4

Most of the time it works for me but I had issues with frame rates before.

@guy-teube
Copy link

Yes, this is what I usually use:

ffmpeg -i input.m2ts -c copy output.mp4 

But I have issues too with frame rates, and some mp4 (not all) have the aliasing I'm talking about in the first message. I have less when I remove the copy argument, to reencode the video, but it's a pain in the ass when I have multiple videos to convert (it takes time and CPU power).
I don't know if the cause is the convertion, or ffmpeg itself.
Thanks for the confirmation anyway!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment