我偶然发现了这个不错的网站。有swf
和mp3
文件。我想将它们转换为mp4
其他内容,以便可以查看。
我尝试过gnash
但ffmpeg
没有成功。
我上线了Lubuntu 22.04
从今天开始,当我运行时,ffmpeg
我在这个问题的标题中出现了错误。
我尝试了这个,但无法应用该解决方案,因为我有一个目录/etc/ld.so.conf.d
,并且该目录中有以下文件:
fakeroot-x86_64-linux-gnu.conf i386-linux-gnu.conf libc.conf x86_64-linux-gnu.conf
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
我正在使用i3wm
,并且希望在解锁屏幕后运行脚本。当我手动锁定屏幕时,我可以让它工作,例如使用本文中概述的步骤
。
但在我的屏幕自动解锁后,我无法让它工作,例如通过xautolock
. 例如,
xautolock -time 5 -locker "blurlock -n && my_script.sh"
不起作用 – 5 分钟后屏幕锁定,但解锁后脚本不运行。事实上,它似乎根本没有运行。
有什么方法可以让它发挥作用吗?也许使用xss-lock
或类似?
编辑
根据评论中@aviro的建议,我将脚本更改为
#!/usr/bin/bash
echo "Hello" >> $HOME/temp.txt
blurlock -n
echo "Unlocked" >> $HOME/temp.txt
然后就跑了xautolock -time 1 -locker "my_script.sh &"
。屏幕锁定,文件temp.txt
包含脚本中的两行。因此,在xautolock
.
我希望我的脚本执行的部分操作是通过ffmpeg
. 我将脚本更改为以下内容:
#!/usr/bin/bash
blurlock -n
ffmpeg -f video4linux2 -s vga -i /dev/video-cam $HOME/Pictures/test.jpg
notify-send -t 30000 'Unlocked'
这在手动运行时有效 - 屏幕被锁定,解锁后会弹出一条通知,显示“已解锁”,并且来自网络摄像头的图像将按照指定写入到文件中。
但通过 运行时xautolock -locker "my_script.sh"
,解锁后,没有图像捕获或通知。由于我xautolock
从终端运行(并将其发送到后台&
),我收到以下消息
[1] + 581665 suspended (tty output) xautolock -time 1 -locker "my_script.sh"
添加> /dev/null 2>&1
到ffmpeg
命令也没有帮助。
官方教程https://trac.ffmpeg.org/wiki/StreamingGuide使用该-pix_fmt yuv420p
选项。
我也使用它,从教程中复制它,并从 FFmpeg 流式传输到 Youtube 对我有用。但是,尚不清楚它的用途,尤其是它是否是 Youtube 的必要选项,或者是否有更好的选项。
关于这个主题的 Youtube 文档似乎没有涵盖这一点,或者可能涵盖了但我不明白在哪里: https: //support.google.com/youtube/answer/1722171 ?hl= en。
有谁知道这方面的任何准确文件?
我有一个低帧率的视频(1 到 3)。我想用它制作 30 fps 的视频。我搜索合适的视频过滤器。这不是运动插值,而是两个相邻帧的相应像素到像素插值。因此我想要接收 29 帧,这将提供帧与 ffmpeg 之间的平滑过渡。
我混合了 MP4 文件,其中一些只有音频数据,而另一些则有视频和音频数据。我想找到一种方法将没有任何视频数据的文件转换为 MP3,而无需逐一检查每个文件。
我知道......已经有很多关于使用 ffmpeg 减小文件大小的问题。
但是,这就是为什么我的问题有点不同的原因,它解决了有困难的内容。我认为在我的源视频中移动海水的重要区域存在问题。
从手机上的 35MB 的 h624 视频中,我得到了 60MB 的“压缩”视频,其中
ffmpeg -i water.mp4 -vcodec libx265 -crf 28 small_water.mp4
一个更简单的例子也产生了更大的输出。
ffmpeg -i water.mp4 new_water.mp4
所以我的问题是,当视频包含大量快速移动的背景伪影时,你会怎么做?正常的方法似乎并没有减少尺寸,但我假设,一定有一些可行的方法。我想这与 F1 赛车视频的问题类似,视频在跟随汽车时在观众中平移。
背景; 我正在将几个电话视频转换为 h625 以缩小它们以在 Whatsapp 上发布,所有其他的都按预期缩小,除了“水”的尺寸翻了一番。所以更多出于兴趣以备将来参考,我想知道是否有解决方案。
我有一张包含 11 个.flac
音频文件的专辑。(编辑:由于这个问题已经解决,现在很明显文件的确切名称和内容是无关紧要的,所以我重命名了它们):
> find . -name "*.flac"
./two.flac
./ten.flac
./nine.flac
./eight.flac
./seven.flac
./three.flac
./four.flac
./five.flac
./one.flac
./eleven.flac
./six.flac
我将这些转换为.wav
具有特定采样率和位深度的文件。我ffmpeg
在 Bash shell 中使用过。如果我手动调用它,像这样的命令对 11 个文件中的每一个都非常有效:
ffmpeg -i "./six.flac" -sample_fmt s16 -ar 44100 "./six.wav"
但是,当我编写一个while
循环来为每个文件运行此命令时:
find . -name "*.flac" | sed "s/\.flac$//" | while read f; do ffmpeg -i "$f.flac" -sample_fmt s16 -ar 44100 "$f.wav"; done
这有效,但仅适用于 8/11 的文件,并ffmpeg
为三个失败提供以下错误消息:
/ten.flac: No such file or directory
ree.flac: No such file or directory
ix.flac: No such file or directory
对于./ten.flac
,相对文件路径中的前导.
被截断,导致绝对路径,而另外两个./three.flac
和./six.flac
,甚至丢失更多字符,包括从其基本名称的开头。其他八个文件中的一些已./
被截断,但这导致了正确的相对路径,因此ffmpeg
能够在这些情况下继续。
如果我使用相同的循环结构,但使用echo "$f"
而不是调用ffmpeg
,则输出没有问题:
> find . -name "*.flac" | sed "s/\.flac$//" | while read f; do echo "$f"; done
./two
./ten
./nine
./seven
./three
./four
./five
./one
./eleven
./six
所以我确信循环的结构很好,"$f"
每次迭代都会扩展我对它的期望。不知何故,当传递"$f.flac"
到时ffmpeg
,部分字符串被截断,但仅限于某些文件。
我只是想了解为什么我的第一次尝试表现出这种行为。我不是在寻找循环或转换文件的替代方法(我的第二次尝试,使用不同类型的循环,对所有文件都成功)。
编辑:我不小心发现管道yes |
进入ffmpeg
似乎可以解决这个问题。我添加了这个,所以不会提示我覆盖现有.wav
文件。
编辑:感谢@roaima 的解释!事实证明,ffmpeg
两者read
都继承了相同的标准输入句柄,因此可以在有机会ffmpeg
之前从每行的开头使用字符,从而破坏一些文件路径。read
这解释了为什么yes | ffmpeg ...
有效,因为它提供ffmpeg
了不同的标准输入句柄。原始循环与ffmpeg -nostdin ...
. 请参阅http://mywiki.wooledge.org/BashFAQ/089。
我要从相机捕捉 10 张图像。像这样:
ffmpeg -hide_banner -loglevel error -f video4linux2 -i /dev/video0 -vframes 10 -video_size 640x480 test%3d.jpg
由于 JPG 是有损的,我需要更改图像格式。比方说tiff
。像这样:
ffmpeg -hide_banner -loglevel error -f video4linux2 -i /dev/video0 -vframes 10 -video_size 640x480 test%3d.tiff
这是否确保我们从相机获得的图像文件是无损的?
还是因为它使用-vframes 10
它就像一个 10 帧视频,而 ffmpeg 在每一帧都使用一些视频压缩(造成一些信息丢失)?
/如果这是一个愚蠢的问题,我很抱歉/