我想购买一副新的蓝牙耳机,支持 DD+ (E-AC-3 JOC) 和 LDAC 等。然而,我发现很难理解这一点。
我希望能够使用 DD+ 播放电影音频,使用高比特率播放音乐,但我的笔记本电脑是否也需要支持 DD+?
我听说确实如此,但对我来说没有意义,如果音频文件是用 DD+/LDAC 编码的,那么设备所要做的就是将二进制文件发送到耳机进行解码,对吗?为什么一定要支持呢?
耳机是:Sony WF-1000MX5 笔记本电脑是:Dell XPS 15 9530
我对 FFmpeg 有点陌生,但我已经了解了很多基础知识。我试图了解如何使用 Opus 编码音频。我对音频、比特率、采样率和赫兹的了解有点薄弱。
我的 MP4 输入文件(音乐视频)使用 AAC 音频进行编码,并具有以下 FFprobe 音频参数:
[sample_rate] => 44100
[channels] => 2
[channel_layout] => stereo
[bit_rate] => 127999
我使用以下 FFmpeg 命令将此 MP4 文件转换为 WEBM:
ffmpeg -i input.mp4 -map 0:s? -map 0:v -map 0:a? -vf scale=-2:720 -movflags +faststart -c:v libvpx-vp9 -crf 32 -b:v 1024k -c:a libopus output.webm
当我运行 shell 命令时,我收到以下警告:
[libopus @ 0x55ccad7dc440] No bit rate set. Defaulting to 96000 bps.
据我了解,Opus 应该默认启用可变比特率(VBR),并且应该检测并匹配输入音频比特率。然而,opus 似乎与原始的 127,999 bps 不匹配。
这是否意味着 Opus 正在降低音频质量?输出中的音乐实际上对我来说听起来不错,但我有听力问题。根据我的阅读,很多人都可以感受到比特率高达 256kbps 的音频质量差异,这些音乐视频是供观众观看的,而不仅仅是我自己。音乐质量对于这些来说至关重要。
我也不想设置恒定的比特率-b:a 256k
,因为输入可能没有那么高,这只会浪费磁盘空间来尝试升级。我希望 opus 能够-vbr
最大限度地提高音频质量,至少与原始输入质量一样好!但如果 96k 与 Opus 一样高-vbr
,这意味着如果输入具有更高的保真比特率,我们就会损失很多音频质量,对吗?我假设输入文件的更高比特率相当于更高的音频质量?
帮助我理解。您会在 Opus 的 FFmpeg 命令中使用哪些标志来最大限度地提高音频质量?
我曾经听说,如果以有损格式存储音乐/视频/图像,质量会随着时间的推移逐渐下降。
感知上的差异并不是将音乐存储为 FLAC 的唯一原因。FLAC 使用无损压缩,而 MP3 使用有损压缩。由此可见,如果您使用 SATA,则 MP3 在磁盘上存储的每一年,文件将损失大约 12 kb 的比特率。在 IDE 上将有多达 15 kb,但在 SCSI 上只有 7 kb,因为高速旋转密度。您不知道 CD 和其他光学介质的情况有多糟糕。我从2001年开始收集MP3,如果你听我当时下载的曲目,即使是以320kbps保存的曲目听起来也很恶心。低音很糟糕,中音...最好不要开始!许多磁盘的速度已降级至 32 甚至 16kb/s。与此同时,那个时代的 FLAC 翻录听起来仍然很棒,即使它们没有存储在合适的条件下——阴凉、干燥的地方。
真的是这样吗?
我有三个视频,我想将其合并为一个。
当我使用ffmpeg时,使用这个命令。
ffmpeg -f concat -i merge.txt -c copy output.mp4
它没有任何音频输出。
Merge.txt
file 'intro.mp4'
file 'main.mp4'
file 'end.mp4'
我知道我需要使用-filter_complex
一些音频/视频流的连接函数。我就是想不通。
你能帮忙吗?
我不确定我的问题是否有意义,但这就是我遇到的问题。
我有一堆波形 (WAV) 文件,我相信这些文件是从 MP3 或其他我不知道的格式转换而来的。
这些波形文件是 44,100Hz,但当我听它们时,它们显然不是!它们听起来很沉闷,我可以猜测它们的声源不超过 16,000Hz。
我想要做的是通过一个工具(也许是 FFmpeg?)运行这些文件,该工具会将这些文件的采样率降低到使它们听起来完全像它们已经做的那样所需的最低限度,而不会损失更多质量。它将节省磁盘空间,因为我有数百个文件,并且它还允许我在另一个需要 WAV 文件作为输入的工具上处理它们。
是否有意义?这可能吗?
我正在尝试使用 ffmpeg 对输入视频进行多次混合/重新编码/复制操作,但我尝试过的方法遇到了障碍;在继续测试之前,我想确认该软件是否真的可以做到这一点。(这是一个实时流媒体设置,它从 LAN 上的另一台 PC 接收一个实时流,并将其存档/重新流式传输到多个 RTMP 目标,因此需要标记-re
并需要在一次操作中完成所有操作。)
输入视频具有 1 个高比特率 h.264 视频流和 4 个 PCM 音轨。
我需要的三个输出:
(这些命令可能充满错误和不好的做法,只是我要走的方向的总体思路。)
我已经尝试将split
/asplit
过滤器与复用器结合使用tee
,这在理论上似乎可以工作,只是使用过滤器不允许流复制/编解码器直通(讽刺的是,在这种情况下,没有对视频流进行实际过滤,除了通过它之外)。
ffmpeg -re -init_hw_device qsv=hw -filter_hw_device hw -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv -i $INPUT \
-filter_complex "[0:v]split=3[twitch][youtube][passv];[0:a]asplit[stream][passa]" \
-map:v "[twitch]" -map:v "[youtube]" -map:v "[passv]" -map:a "[stream]:0" -map:a "[passa]" \
-c:v:0 h264_qsv -profile:v:0 high -preset:v:0 medium -g 120 -b:v:0 8M -maxrate:v:0 8M -bufsize:v:0 4M \
-c:v:1 h264_qsv -profile:v:1 high -preset:v:0 medium -g 120 -b:v:1 12M -maxrate:v:1 12M -bufsize:v:1 6M \
-c:v:2 copy \
-c:a:0 aac -b:a:0 320k \
-c:a:1 copy \
-f tee "[select=\'v:0,a:0\']8mbps.mkv|[select=\'v:1,a:0\']12mbps.mkv|[select=\'v:2,a:1\']copy.mkv"
我还尝试了简单的流映射到多个输出,但看起来它实际上只处理一个视频和音频输出,而且我不确定流映射是否可以用这种方式使用,所以这可能是一团糟。
ffmpeg -re -init_hw_device qsv=hw -filter_hw_device hw -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv -i $INPUT \
-map 0:0 -c h264_qsv -profile high -preset medium -g 120 -b 8M -maxrate 8M -bufsize 4M \
-map 0:0 -c h264_qsv -profile high -preset medium -g 120 -b 12M -maxrate 12M -bufsize 6M \
-map 0:1 -c aac -b 320k \
-map 0:a -c copy \
-f tee "[select=\'v:0,a:0\']8mbps.mkv|[select=\'v:1,a:1\']12mbps.mkv|[select=\'v:2,a:1\']copy.mkv"
让事情变得更加复杂的是,我在这里使用快速同步硬件编码,并且希望在-vf hwupload=extra_hw_frames=64,format=qsv
可能的情况下应用于每个重新编码,但在我的初始测试中,不清楚是否可以使用两组过滤器,即使在不同的编码上也是如此。
无论如何,这可以通过 ffmpeg 实现吗?如果可以的话又如何呢?
我有一台飞利浦电视,但它的声音不是最好的,所以我想使用声音更好的 MacBook 作为这台电视的扬声器。
我尝试通过 HDMI 将笔记本电脑连接到电视,并在声音输出中选择“HDMI 端口”,但它说该输出通道不可用(可能是因为它仅将其检测为输入)。
有什么方法可以配置 macOS 使用 HDMI 作为声音输入吗?
我刚开始使用ffmpeg
. 我有一些 AVI 文件,我认为应该有音频,但我无法使用 VLC 播放音频。我尝试使用它ffmpeg
来分析 AVI 文件的音频。
import subprocess
def has_audio(filename):
result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
"format=nb_streams", "-of",
"default=noprint_wrappers=1:nokey=1", filename],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
return int(result.stdout) -1
print(has_audio('filename.avi'))
下面是其中一个 AVI 文件的输出。该文件看起来有音频,但也许我错误地读取了输出。我还尝试了这个问题中的代码,它告诉我视频有音频。
如何使用任一或其他应用程序确保该文件有音频或没有音频ffmpeg
?
avi @ 0x7fddac005140] non-interleaved AVI
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, avi, from 'filename.avi':
Metadata:
date : 2010-06-29
Duration: 00:00:06.83, start: 0.000000, bitrate: 10607 kb/s
Stream #0:0: Video: mjpeg (Baseline) (MJPG / 0x47504A4D), yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080, 9878 kb/s, 30 fps, 30 tbr, 30 tbn
Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 32000 Hz, 1 channels, s16, 512 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
Metadata:
date : 2010-06-29
encoder : Lavf60.3.100
Stream #0:0: Audio: pcm_s16le, 32000 Hz, mono, s16, 512 kb/s
Metadata:
encoder : Lavc60.3.100 pcm_s16le
size=N/A time=00:00:05.99 bitrate=N/A speed=1.52e+03x
video:0kB audio:375kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_volumedetect_0 @ 0x7fdd9b704080] n_samples: 192000
[Parsed_volumedetect_0 @ 0x7fdd9b704080] mean_volume: -44.3 dB
[Parsed_volumedetect_0 @ 0x7fdd9b704080] max_volume: -16.2 dB
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_16db: 3
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_17db: 0
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_18db: 9
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_19db: 9
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_20db: 15
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_21db: 16
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_22db: 12
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_23db: 25
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_24db: 19
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_25db: 25
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_26db: 22
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_27db: 13
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_28db: 17
[Parsed_volumedetect_0 @ 0x7fdd9b704080] histogram_29db: 13
这是输出MediaInfo
Bit rate: 12884197, Frame rate: 30.000, Format: JPEG
Duration (raw value): 6833
Duration (other values:
['6 s 833 ms',
'6 s 833 ms',
'6 s 833 ms',
'00:00:06.833',
'00:00:06:25',
'00:00:06.833 (00:00:06:25)']
Track data:
{'alignment': 'Aligned',
'bit_depth': 16,
'bit_rate': 512000,
'bit_rate_mode': 'CBR',
'channel_s': 1,
'codec_id': '1',
'codec_id_url': 'http://www.microsoft.com/windows/',
'commercial_name': 'PCM',
'count': '285',
'count_of_stream_of_this_kind': '1',
'delay': 0,
'delay__origin': 'Stream',
'delay_relative_to_video': 0,
'duration': 6000,
'format': 'PCM',
'format_settings': 'Little / Signed',
'format_settings__endianness': 'Little',
'format_settings__sign': 'Signed',
'interleave__duration': 1139,
'kind_of_stream': 'Audio',
'other_alignment': ['Aligned on interleaves'],
'other_bit_depth': ['16 bits'],
'other_bit_rate': ['512 kb/s'],
'other_bit_rate_mode': ['Constant'],
'other_channel_s': ['1 channel'],
'other_delay': ['00:00:00.000', '00:00:00.000'],
'other_delay__origin': ['Raw stream'],
'other_delay_relative_to_video': ['00:00:00.000', '00:00:00.000'],
'other_duration': ['6 s 0 ms',
'6 s 0 ms',
'6 s 0 ms',
'00:00:06.000',
'00:00:06.000'],
'other_format': ['PCM'],
'other_interleave__duration': ['1139',
'1139 ms (34.17 video frames)',
'34.17'],
'other_kind_of_stream': ['Audio'],
'other_sampling_rate': ['32.0 kHz'],
'other_stream_size': ['375 KiB (4%)',
'375 KiB',
'375 KiB',
'375 KiB',
'375.0 KiB',
'375 KiB (4%)'],
'other_track_id': ['1'],
'proportion_of_this_stream': '0.04238',
'samples_count': '192000',
'sampling_rate': 32000,
'stream_identifier': '0',
'stream_size': 384000,
'streamorder': '1',
'track_id': 1,
'track_type': 'Audio'}
我的一款游戏不会响应通常的 nircmd 命令来将其静音:
nircmd snircmd muteappvolume Cyberpunk2077.exe 1
我怀疑它可能无法工作,因为它可能是产生另一个控制音频的应用程序之一:
我也尝试过:
nircmd snircmd muteappvolume "Cyberpunk 2077 (C) 2020 by CD Projekt RED" 1
nircmd snircmd muteappvolume "Cyberpunk 2077 (C) 2020 by CD Projekt" 1
nircmd snircmd muteappvolume "Cyberpunk 2077 (C) 2020 by CD" 1
nircmd snircmd muteappvolume "Cyberpunk 2077 (C) 2020 by" 1
nircmd snircmd muteappvolume "Cyberpunk 2077 (C) 2020" 1
nircmd snircmd muteappvolume "Cyberpunk 2077 (C)" 1
nircmd snircmd muteappvolume "Cyberpunk 2077" 1
nircmd snircmd muteappvolume "Cyberpunk" 1
这些都不起作用。该命令与其他应用程序一起工作得很好,所以我知道我使用了正确的命令,并且 nircmd 已安装。
由于此操作失败,并且 nircmd 已被弃用,因此我正在寻找另一种通过脚本(.bat
或.AHK
)将我的游戏静音的方法。如何在 Windows 10 中实现此目的?
我的 NVIDIA 高清晰度音频设备通过 HDMI 连接到 LG D2342P 显示器,在 Windows 11 Home 23H2 中 6 秒后从电源状态 D0(开启)切换到 D3(低功耗)时,Logitech 2.1 扬声器会产生爆音。我的 Target TRG-S 120 没有弹出,但不幸的是硬件已经报废,所以软件解决方案应该也能工作。
降低扬声器赫兹、禁用音频增强、禁用其他扬声器设备以及禁用 PCI 空闲都没有帮助。我什至在PowerSettingsExplorer中没有看到扬声器。
我认为这样的脚本将有助于停止状态转换,但如何针对我的设备修改它?
# Enable Realtek driver power management, this is the default value
REG ADD "HKCU\Software\Realtek\RAVCpl64\PowerMgnt" /v "Enabled" /t REG_DWORD /d 1 /f
# Disable Realtek driver power management, sometimes fixes realtek popping sound
REG ADD "HKCU\Software\Realtek\RAVCpl64\PowerMgnt" /v "Enabled" /t REG_DWORD /d 0 /f
# Replace XXXX with the corresponding key that has "Realtek" in the "DriverDesc", find using regedit
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\XXXX\PowerSettings" /v "IdlePowerState" /t REG_BINARY /d "ffffffff" /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\XXXX\PowerSettings" /v "PerformanceIdleTime" /t REG_BINARY /d "ffffffff" /f
# Example if class is in 0000
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\0000\PowerSettings" /v "IdlePowerState" /t REG_BINARY /d "ffffffff" /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be10318}\0000\PowerSettings" /v "PerformanceIdleTime" /t REG_BINARY /d "ffffffff" /f
当不播放音频时,我的设备管理器显示:
但是当我开始播放音频时,我听不到前一两秒的声音,并且状态更改为:
使用箭头键更新所选数据。