ubuntu錄屏轉格式 webm轉mp4
起因
想著將一些操作錄屏記錄下來。之前在win上面,使用EV錄屏或者用CS(CamtasiaStudio)。這次用ubuntu,發現系統自帶的錄屏似乎就可以用,于是試了一下。操作確實很方便,但錄屏生成的文件是.webm后綴,似乎要上傳一些平臺需要轉格式。遂祭起AI大旗。
AI協助轉格式
在Ubuntu上,你可以使用多種工具將WebM格式的錄屏文件轉換成其他格式,比如MP4、AVI等。其中最常用的一個工具是ffmpeg,它是一個非常強大的多媒體框架,可以用來記錄、轉換視頻和音頻流。
如果你還沒有安裝ffmpeg,可以通過以下命令來安裝:
sudo apt update
sudo apt install ffmpeg
一旦你安裝了ffmpeg,就可以使用它來轉換你的WebM文件。下面是一些常見的轉換示例:
轉換成MP4格式
要將WebM文件轉換為MP4格式,可以在終端中運行如下命令:
ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4
這里:
-i input.webm指定了輸入文件。-c:v libx264選擇了H.264編碼器來處理視頻流。-c:a aac選擇了AAC編碼器來處理音頻流。output.mp4是輸出文件的名字。
轉換成AVI格式
若要轉換為AVI格式,可以使用如下命令:
ffmpeg -i input.webm -c:v libxvid -c:a mp3 output.avi
這里:
-c:v libxvid選擇XviD編碼器用于視頻。-c:a mp3選擇MP3編碼器用于音頻。
自定義設置
ffmpeg 提供了大量的選項來自定義輸出,例如調整分辨率、比特率等。你可以在官方文檔或通過man ffmpeg查看更多詳細信息。
按照說明操作
報錯了!
ffmpeg -i 錄屏\ 2024-09-26\ 08-17-40.webm -c:v libx264 -c:a aac checkIP1.mp4
ffmpeg version 6.1.1-3ubuntu5+esm2 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13 (Ubuntu 13.2.0-23ubuntu4)
configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared --enable-version3 --disable-doc --disable-programs --disable-static --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, matroska,webm, from '錄屏 2024-09-26 08-17-40.webm':
Metadata:
encoder : GStreamer matroskamux version 1.24.2
creation_time : 2024-09-26T00:17:40.675211Z
Duration: 00:01:00.36, start: 0.010000, bitrate: 391 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 1081x711, SAR 1:1 DAR 1081:711, 1k tbr, 1k tbn (default)
Metadata:
title : Video
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x61d007072f80] width not divisible by 2 (1081x711)
[vost#0:0/libx264 @ 0x61d007072b80] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
Error while filtering: Generic error in an external library
[out#0/mp4 @ 0x61d007073600] Nothing was written into output file, because at least one of its streams received no packets.
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=N/A bitrate=N/A speed=N/A
Conversion failed!
繼續丟給AI
AI分析報錯
從你提供的錯誤信息來看,問題出在視頻的寬度(1081像素)不是2的倍數,這導致了libx264編碼器無法處理。H.264編碼通常要求寬度和高度都是偶數,以保證宏塊(macroblock)對齊。
要解決這個問題,你可以使用ffmpeg來調整視頻的分辨率,使其寬度成為偶數。這里有一個修改后的命令示例,它會將視頻縮放到最近的偶數寬度,并保持原始寬高比:
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -c:a aac checkIP1.mp4
這里的-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2"是一個視頻過濾器選項,用于確保輸出視頻的寬度和高度都是偶數。iw和ih分別代表輸入視頻的寬度和高度,trunc(iw/2)*2和trunc(ih/2)*2則確保結果是偶數。
如果你希望指定一個特定的分辨率,比如1080p (1920x1080),你可以直接替換為:
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1920:1080 -c:v libx264 -c:a aac checkIP1.mp4
請根據你的具體需求選擇合適的分辨率。如果這個命令解決了你的問題,請告訴我。如果有其他問題或需要進一步的幫助,隨時讓我知道!
使用特定分辨率輸出文件
$ ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1920:1080 -c:v libx264 -c:a aac checkIP1.mp4
ffmpeg version 6.1.1-3ubuntu5+esm2 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13 (Ubuntu 13.2.0-23ubuntu4)
configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared --enable-version3 --disable-doc --disable-programs --disable-static --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, matroska,webm, from '錄屏 2024-09-26 08-17-40.webm':
Metadata:
encoder : GStreamer matroskamux version 1.24.2
creation_time : 2024-09-26T00:17:40.675211Z
Duration: 00:01:00.36, start: 0.010000, bitrate: 391 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 1081x711, SAR 1:1 DAR 1081:711, 1k tbr, 1k tbn (default)
Metadata:
title : Video
File 'checkIP1.mp4' already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x57a737bdafc0] using SAR=1081/1264
[libx264 @ 0x57a737bdafc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x57a737bdafc0] profile High, level 6.1, 4:2:0, 8-bit
[libx264 @ 0x57a737bdafc0] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'checkIP1.mp4':
Metadata:
encoder : Lavf60.16.100
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg/bt709/bt709, progressive), 1920x1080 [SAR 1081:1264 DAR 1081:711], q=2-31, 1k fps, 16k tbn (default)
Metadata:
title : Video
encoder : Lavc60.31.102 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 689 fps=109 q=33.0 size= 256kB time=00:00:00.68 bitrate=3057.6kbits/[vost#0:0/libx264 @ 0x57a737bdabc0] More than 1000 frames duplicated
frame= 1586 fps=216 q=33.0 size= 512kB time=00:00:01.58 bitrate=2648.2kbits/frame= 2431 fps=152 q=33.0 size= 768kB time=00:00:02.42 bitrate=2590.3kbits/frame= 2465 fps=102 q=33.0 size= 768kB time=00:00:02.46 bitrate=2554.5kbits/frame= 2824 fps=110 q=33.0 size= 1024kB time=00:00:02.82 bitrate=2972.7kbits/
......
frame=59057 fps=103 q=33.0 size= 22528kB time=00:00:59.05 bitrate=3125.0kbits/frame=59058 fps=103 q=33.0 size= 22528kB time=00:00:59.05 bitrate=3125.0kbits/frame=60335 fps=103 q=33.0 size= 23040kB time=00:01:00.33 bitrate=3128.4kbits/[out#0/mp4 @ 0x57a737bdb640] video:23213kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.050443%
frame=60398 fps=103 q=-1.0 Lsize= 23921kB time=00:01:00.39 bitrate=3244.6kbits/s dup=59859 drop=0 speed=0.103x
[libx264 @ 0x57a737bdafc0] frame I:242 Avg QP:16.82 size: 60812
[libx264 @ 0x57a737bdafc0] frame P:15220 Avg QP:22.53 size: 265
[libx264 @ 0x57a737bdafc0] frame B:44936 Avg QP:38.25 size: 112
[libx264 @ 0x57a737bdafc0] consecutive B-frames: 0.8% 0.0% 0.0% 99.2%
[libx264 @ 0x57a737bdafc0] mb I I16..4: 31.0% 55.1% 13.9%
[libx264 @ 0x57a737bdafc0] mb P I16..4: 0.1% 0.1% 0.0% P16..4: 0.2% 0.1% 0.0% 0.0% 0.0% skip:99.5%
[libx264 @ 0x57a737bdafc0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.7% 0.0% 0.0% direct: 0.0% skip:99.3% L0:35.7% L1:64.2% BI: 0.0%
[libx264 @ 0x57a737bdafc0] 8x8 transform intra:53.4% inter:57.9%
[libx264 @ 0x57a737bdafc0] coded y,uvDC,uvAC intra: 16.6% 15.8% 10.6% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x57a737bdafc0] i16 v,h,dc,p: 44% 54% 1% 1%
[libx264 @ 0x57a737bdafc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 72% 12% 12% 0% 0% 0% 1% 0% 1%
[libx264 @ 0x57a737bdafc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 34% 9% 3% 4% 3% 4% 3% 4%
[libx264 @ 0x57a737bdafc0] i8c dc,h,v,p: 76% 16% 7% 1%
[libx264 @ 0x57a737bdafc0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x57a737bdafc0] ref P L0: 88.6% 5.1% 4.9% 1.4%
[libx264 @ 0x57a737bdafc0] ref B L0: 19.6% 80.2% 0.1%
[libx264 @ 0x57a737bdafc0] ref B L1: 98.7% 1.3%
[libx264 @ 0x57a737bdafc0] kb/s:3148.32
差不多1分鐘的視頻,耗費了不少時間,文件體積也大了不少。繼續調整ffmpeg轉換參數。

繼續提問AI
如果你希望加快視頻轉換的速度,可以調整ffmpeg的一些參數來優化性能。以下是一些可以提高轉換速度的方法:
1. 使用更快的預設
libx264編碼器提供了一系列預設,從最慢(最高質量)到最快(最低質量)。默認情況下,ffmpeg使用的是中等速度的預設。你可以通過設置-preset選項來選擇一個更快的預設,比如veryfast。
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac checkIP1.mp4
2. 減少比特率
降低輸出視頻的比特率可以減少處理時間,但這會犧牲一些視頻質量。可以通過-b:v選項來指定視頻比特率。
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -b:v 1000k -c:a aac checkIP1.mp4
這里-b:v 1000k設置了視頻比特率為1000 kbps。你可以根據需要調整這個值。
3. 使用硬件加速
如果你的計算機支持硬件加速(例如Intel Quick Sync, NVIDIA NVENC, AMD VCE),你可以利用這些功能來顯著加快編碼速度。下面是一個使用NVIDIA GPU的例子:
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale_npp=1280:720 -c:v h264_nvenc -c:a aac checkIP1.mp4
對于Intel和AMD的硬件加速,命令會有所不同,請查閱ffmpeg文檔以獲取具體的支持情況和正確的命令行參數。
4. 并行處理
如果你有多個CPU核心,確保ffmpeg能夠充分利用它們。通常ffmpeg會自動檢測并使用所有可用的核心,但你可以通過-threads選項手動設置線程數。
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -threads 4 -c:a aac checkIP1.mp4
這里的-threads 4指定了使用4個線程進行編碼。你可以根據你的CPU核心數量來調整這個值。
5. 減少音頻質量
如果你不介意稍微降低音頻質量,可以通過降低音頻比特率來加快轉換速度。
ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac -b:a 64k checkIP1.mp4
這里的-b:a 64k設置了音頻比特率為64 kbps。
結合以上方法,你可以找到適合你需求的平衡點,在保證一定質量的同時加快轉換速度。希望這些建議對你有幫助!如果還有其他問題或需要進一步的幫助,請告訴我。
綜合AI方案
$ ffmpeg -i "錄屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac -b:a 64k checkIP2.mp4
速度快了些,體積也降到了10MB。
新技能GET!
=但是===================================================================================
在win系統使用EV錄屏

不用轉格式,體積也就2MB多點。

浙公網安備 33010602011771號