hello friends! new(ish)!
WebM: Difference between revisions
>Hevnoraak |
>Hevnoraak |
||
Line 30: | Line 30: | ||
* '''-an''': disable audio recording. Use when converting .gif files to .webm. | * '''-an''': disable audio recording. Use when converting .gif files to .webm. | ||
* '''-crf''': Sets CRF value. Must be from 4-63. Lower is higher quality. 10 is a nice starting point. | * '''-crf''': Sets CRF value. Must be from 4-63. Lower is higher quality. 10 is a nice starting point. | ||
* '''-ss''': Seeks to a position in the file. Useful for cutting out small scenes. Takes time in seconds as a parameter or HH:MM:SS syntax. use '''-t''' to | * '''-ss''': Seeks to a position in the file. Useful for cutting out small scenes. Takes time in seconds as a parameter or HH:MM:SS syntax. use '''-t''' in tandem to set the file duration. For example, <code>-t 00:00:10 </code> cuts out the first ten seconds of the video for conversion, and <code>-ss 00:00:10 -t 00:00:10</code> would skip the first ten seconds and cut out the next ten for conversion. | ||
Revision as of 01:16, 6 April 2014
WebM support is (hopefully) the newest addition to 4chan. This wiki page is meant to serve as an instructional tool to help you get started converting your content to WebM for posting.
WebM {is being, was} tested in these threads:
- https://rbt.asia/g/thread/S41184007
- https://rbt.asia/g/thread/S41183707
- https://rbt.asia/g/thread/S41178861
- https://rbt.asia/g/thread/S41190521
... and on a few /jp/ threads.
Converting with ffmpeg
Note: avconv and ffmpeg are not entirely drop-in replacements. Make sure you know which one you are using.
Command Line Options
Below is an ffmpeg command:
ffmpeg -i input.mp4 -c:v libvpx -b:v 1M -c:a libvorbis output.webm
This may look intimidating but it is not all that bad. Let's look at the different parameters:
- -i: Specifies the input file, which you're converting to another format.
- -c:v Specifies the video codec to use. webm isn't actually an encoding type unto itself, but an audio/video container, like mkv. Nevertheless, you will almost always use libvpx for the video.
- -b: Sets the target bitrate. -b:v sets video bitrate and -b:a sets audio. Only use this option if you desire a constant bitrate, which will produce a higher quality file. If you are looking for a smaller file size, consider leaving this out.
- -c:a: Specifies the audio codec to use. Some options include libvorbis, libmp3lame, etc. If you are unsure stick with libvorbis.
Other popular options:
- -threads: Tells ffmpeg to use multithreading. Enter the number of cores your processor has as a parameter or put 0 to use them all.
- -ac: Sets number of audio channels. You should probably not touch this unless you know what you're doing.
- -an: disable audio recording. Use when converting .gif files to .webm.
- -crf: Sets CRF value. Must be from 4-63. Lower is higher quality. 10 is a nice starting point.
- -ss: Seeks to a position in the file. Useful for cutting out small scenes. Takes time in seconds as a parameter or HH:MM:SS syntax. use -t in tandem to set the file duration. For example,
-t 00:00:10
cuts out the first ten seconds of the video for conversion, and-ss 00:00:10 -t 00:00:10
would skip the first ten seconds and cut out the next ten for conversion.
To simply print metadata about a video file: ffmpeg -i input_file -f ffmetadata metadata.txt
Premade Scripts
If you're that lazy, here's a couple premade scripts for video and gif conversion.
Windows
Save these programs as a .bat file and place them in the folder of the video you want to convert.
Video to WebM
@echo off rem about 3megabyte in bit 3*1024*1024*8*0.95 set /A MAXSIZE=23907532 set WIDTH=720 ffmpeg -i %1 2> webm.tmp for /F "tokens=1,2,3,4,5,6 delims=:., " %%i in (webm.tmp) do ( if "%%i"=="Duration" call :calcLength %%j %%k %%l %%m ) del webm.tmp SET /a BITRATE=%MAXSIZE%/%VSECONDS% ffmpeg -y -i %1 -threads 0 -sn -an -c:v libvpx -b:v %BITRATE% -vf scale=-1:%WIDTH% -quality best -cpu-used 0 -slices 8 -auto-alt-ref 1 -f webm -pass 1 NUL ffmpeg -y -i %1 -threads 0 -sn -an -c:v libvpx -b:v %BITRATE% -vf scale=-1:%WIDTH% -quality best -cpu-used 0 -slices 8 -auto-alt-ref 1 -f webm -pass 2 "%~n1.webm" del ffmpeg2pass-0.log > NUL goto :EOF :calcLength FOR /F "tokens=* delims=0" %%A IN ("%3") DO SET /A s=%%A FOR /F "tokens=* delims=0" %%A IN ("%2") DO SET /A s=s+%%A*60 FOR /F "tokens=* delims=0" %%A IN ("%1") DO SET /A s=s+%%A*60*60 set /A VSECONDS=s
Linux / OS X
If you're using OS X or Linux, you probably know how to save and execute these scripts already, but here's a quick overview:
- Create a file, such as
~/bin/my_script.sh
- Copy and paste the code into this file with your favorite editor.
- Open a shell. Run the command
chmod +x ~/bin/my_script.sh
- The script can now be called as
~/bin/my_script.sh some_file.type
or if you have your PATH set correctly,my_script.sh some_file.type
.gif Convert
#!/bin/bash ffmpeg -i $1 -c:v libvpx -crf 10 -an $1.webm
High-End Video Convert
#!/bin/bash # Warning: this script will probably take up a lot of CPU usage. Don't crash your machine. ffmpeg -i $1 -threads 0 -c:v libvpx -c:a libvorbis -ac 2 -qmin 0 -qmax 10 -quality good -crf 4 -b:v 2M $1.webm
̈́Split Video
#!/bin/bash # Takes a large video file and splits it into multiple 3MB webm files crf=18 bitrate=500K threads=8 # Duration of original video in seconds duration=$(expr `mediainfo --Inform="General;%Duration%" "$1"` / 1000) sec=0 j=1 until (($sec >= $duration)) do ffmpeg -ss $sec -i "$1" -an -sn -threads $threads -c:v libvpx -crf $crf -b:v $bitrate -fs 3M $j.webm # Duration of previous video is added to the sum of every previous video sec=$(expr $(expr `mediainfo --Inform="General;%Duration%" $j.webm` / 1000) + $sec) j=$((j+1)) done
GUI Options
You can also refer to Recommended_software for video editing and converting programs.