我正在尝试将视频剪辑(MP4,yuv420p)从30 fps转换为24 fps.帧数是正确的,所以我的输出应该从30fps的20分钟变为24fps的25分钟.其他一切都应该保持不变.
尽量尝试我用ffmpeg尝试的所有内容都会转换帧速率,但会更改帧数以保持相同的持续时间或更改持续时间而不更改帧速率.
所以我一直在尝试这样的事情;
ffmpeg -y -r 30 -i seeing_noaudio.mp4 -r 24 seeing.mp4
Run Code Online (Sandbox Code Playgroud)
(我在Windows上这样做,但通常是在linux上).这会转换帧速率但会丢帧,因此总持续时间不会改变.
或者我试过了
ffmpeg -y -i seeing_noaudio.mp4 -filter:v "setpts=1.25*PTS" seeing.mp4
Run Code Online (Sandbox Code Playgroud)
这改变了持续时间而不是帧率.
当然,我应该可以使用单个ffmpeg命令执行此操作,而无需重新编码,或者甚至有些人建议返回原始原始帧.
请帮忙
我看到关于这个主题有几个问题,但我仍然遇到错误。我想要做的就是将我库中的视频转换为 HEVC,这样它们占用的空间更少。
我试过这个:
ffmpeg -i input.mp4 -c:v libx265 output.mp4
Run Code Online (Sandbox Code Playgroud)
ffmpeg 似乎需要很长时间,输出似乎大小合适。该视频将使用 VLC 播放,但图标很奇怪,当我尝试使用 QuickTime 打开它时,出现错误:“无法打开文档“output.mov”。该文件与 QuickTime Player 不兼容。
我不想更改任何花哨的设置。我只希望文件占用更少的空间并且质量损失最小或没有。
谢谢!
编辑:无法保留我放入视频中的时间戳。
最初我在终端中使用 exiftool。但是,有时这不适用于视频,所以我会将它们空投到我的 iPhone,使用名为 Metapho 的应用程序更改日期,然后将它们空投回来。Exiftool 是创建的,但有时我就是无法工作。它会将日期更改为 1109212 Aug 2nd。奇怪的。最重要的是,当我进行这些转换时,我真的不想丢失其中的时间戳。
我在 .264 中加时间戳的原始文件
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.8)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype …Run Code Online (Sandbox Code Playgroud) 我有接近0的编程经验,但想知道如何做到这一点,并试图找出如何做一段时间.我变得非常沮丧 - 希望我能理解它.我正在尝试将一堆MP4文件转换为MP3文件.我想保留原始文件,只吐出一堆与原始文件同名的MP3文件.
从这里:https://wiki.videolan.org/How_to_Batch_Encode/
显然,您需要做的就是在命令提示符中使用此代码.我之前从未真正使用过Command-Prompt,所以不知道该怎么做.
FOR /R %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")
FOR /R %%G IN (*.m4a.mp*) DO (CALL :SUB_RENAME "%%G")
GOTO :eof
:SUB_VLC
SET _firstbit=%1
SET _qt="
CALL SET _newnm=%%_firstbit:%_qt%=%%
SET _commanm=%_newnm:,=_COMMA_%
REM echo %_commanm%
CALL "C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv %1 --sout=#transcode{acodec="mpga",ab="512","channels=2",samplerate="44100"}:standard{access="file",mux="mpeg1",dst="%_commanm%.mp3"} vlc://quit
GOTO :eof
:SUB_RENAME
SET _origfnm=%1
SET _endbit=%_origfnm:*.m4a=%
CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.mp3%%
SET _newfilenm=%_newfilenm:_COMMA_=,%
COPY %1 %_newfilenm%
DEL %1
GOTO :eof
:eof
Run Code Online (Sandbox Code Playgroud)
我还需要做什么?所有%%在代码中的含义是什么?
非常感谢!
根据此处的文档,Libav 提供了多线程解码的“基础设施”。但文档对于多线程解码的实现方式模糊且令人困惑。它是内部支持的并且只需要在结构中设置一个标志,还是用户必须使用所提供的函数提供自己的实现?我进行了很多搜索,但甚至找不到一个使用 libav 进行多线程视频解码的示例。
我正在一个项目中,我需要记录将在不同浏览器的选项卡中播放的HTML5动画。
所以我已经阅读了一些,显然可以使用FFMPEG来完成,也许可以使用gdigrab设备来完成:https ://www.ffmpeg.org/ffmpeg-devices.html#gdigrab
您甚至可以从特定窗口抓取(例如使用title = Calculator记录calc.exe)
我想使用此逻辑来捕获多个浏览器选项卡的每个内容。(或至少一个),但我不知道Firefox / Chrome标签的“标题”或它们是否甚至可以作为Windows使用。
我还需要录制音频,因此我需要将计算机的输出设备与选项卡中的视频混合使用。
如果有人对我如何做有更多的了解,我将不胜感激。
谢谢,
我有一个 mp4 文件 samp1.mp4,它有重复的帧,我尝试使用 mpdecimate 来删除它们。我使用的FFmpeg命令行是
ffmpeg -i samp1.mp4 -vf mpdecimate out3.mp4 > out3.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
但输出文件 out3.mp4 仍然具有重复的帧。
该命令生成文本:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'samp1.mp4':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V mp42isom
creation_time : 2018-12-26T20:38:35.000000Z
Duration: 00:00:04.77, start: 0.000000, bitrate: 4495 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 4476 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2018-12-26T20:38:35.000000Z
handler_name : Mainconcept MP4 Video Media Handler
encoder : AVC …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来仅重新编码电影的视频流并保留所有其他流,因为它们正在使用ffmpeg或更具体streamio/streamio-ffmpeg(Github - StreamIO-FFMPEG)。
我已经尝试了-map 0or 的各种组合-map a:0 -map s:0,但在我尝试的所有组合中,要么根本没有编码,要么没有将所有其他流都复制到新文件中。大多数情况下编码后只有一个音频流,而之前有两个,有时字幕流也会丢失。此外,大多数时候流所使用的语言信息会丢失。
因此,当我有一个包含以下流的电影文件 (mkv) 时:
0: video [H.264, 1080p]
1: audio [english, mp3]
2: audio [french, mp3]
3: subtitle [english (forced)]
4: subtitle [english]
Run Code Online (Sandbox Code Playgroud)
应该采取什么ffmpeg参数,如果我想将视频文件编码为H.265和720p,并保持所有其他流,因为他们是谁?
如果我还想将音频流编码为,参数应该是什么AAC?
提前致谢!