Closed H1DDENADM1N closed 3 months ago
我这两天修复了一些转换失败的情况,下一版您看看会不会成功。
好的,一会我试试你发的视频。
我参考源码注释尝试调用ffmpeg命令行 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
报错如下:
┏[FL]
┖[~\Downloads\The.Fall.Guy]> C:\Users\sudoo\AppData\Local\DashPlayer\app-4.2.0\resources\lib\ffmpeg.exe -i .\TheFallGuy.mkv -map 0 -c copy -c:a aac .\TheFallGuy.mp4
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
Input #0, matroska,webm, from '.\TheFallGuy.mkv':
Metadata:
encoder : libebml v1.4.2 + libmatroska v1.6.4
creation_time : 2024-05-21T04:26:36.000000Z
Duration: 02:06:23.65, start: 0.000000, bitrate: 25284 kb/s
Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3836x1600 [SAR 1:1 DAR 959:400], 23.98 fps, 23.98 tbr, 1k tbn (default)
Metadata:
BPS : 24514110
DURATION : 02:06:23.617000000
NUMBER_OF_FRAMES: 181824
NUMBER_OF_BYTES : 23238203075
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 768 kb/s (default)
Metadata:
BPS : 768000
DURATION : 02:06:23.648000000
NUMBER_OF_FRAMES: 236989
NUMBER_OF_BYTES : 728030208
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:2(spa): Subtitle: subrip (default)
Metadata:
title : forced
BPS : 1
DURATION : 02:03:07.679000000
NUMBER_OF_FRAMES: 37
NUMBER_OF_BYTES : 1030
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:3(spa): Subtitle: subrip (default)
Metadata:
BPS : 80
DURATION : 02:06:03.063000000
NUMBER_OF_FRAMES: 2088
NUMBER_OF_BYTES : 76385
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:4(fre): Subtitle: subrip (default)
Metadata:
title : forced
BPS : 2
DURATION : 02:05:40.082000000
NUMBER_OF_FRAMES: 59
NUMBER_OF_BYTES : 2099
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:5(fre): Subtitle: subrip (default)
Metadata:
BPS : 62
DURATION : 02:06:02.187000000
NUMBER_OF_FRAMES: 2045
NUMBER_OF_BYTES : 58879
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 1, only the last option '-c:a aac' will be used.
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (eac3 (native) -> aac (native))
Stream #0:2 -> #0:2 (copy)
Stream #0:3 -> #0:3 (copy)
Stream #0:4 -> #0:4 (copy)
Stream #0:5 -> #0:5 (copy)
Press [q] to stop, [?] for help
[aac @ 0000024db825b6c0] Using a PCE to encode channel layout "5.1(side)"
[mp4 @ 0000024db8274b00] Could not find tag for codec subrip in stream #2, codec not currently supported in container
[out#0/mp4 @ 0000024db825a140] Could not write header (incorrect codec parameters ?): Invalid argument
[aost#0:1/aac @ 0000024db8275c40] Error initializing output stream:
[aac @ 0000024db825b6c0] Qavg: nan
Conversion failed!
/**
* mkv转mp4
* ffmpeg -i "vid.mkv" -map 0 -c copy -c:a aac "MP4/vid.mp4"
* ffmpeg -i output.mkv -map 0:v -map 0:a -c:v copy -c:a aac -ac 1 output.mp4
*/
public static async mkvToMp4({
taskId,
inputFile,
onProgress
}: {
taskId: number,
inputFile: string,
onProgress?: (progress: number) => void
}): Promise<string> {
const output = inputFile.replace(path.extname(inputFile), '.mp4');
await Lock.sync('ffmpeg', async () => {
await new Promise((resolve, reject) => {
const command = ffmpeg(inputFile)
.outputOptions([
'-map', '0:v',
'-map', '0:a',
'-c:v', 'copy',
'-c:a', 'aac',
'-ac', '1'
])
.output(output)
.on('progress', (progress) => {
if (progress.percent) {
console.log('progress', progress.percent);
if (onProgress) {
onProgress(progress.percent);
}
}
})
.on('end', resolve)
.on('error', reject);
ProcessService.registerFfmpeg(taskId, [command]);
command
.run();
});
}
);
return output;
}
你着急的话先试试这个呢?
我使用了AI修正的命令 ffmpeg.exe -i ."vid.mkv" -map 0 -map -0:s -c copy -c:a ac3 "vid.mkv"
测试可用,但是用DashPlayer播放无声音,用PotPlayer有声音。
好的谢谢,没有声音可能是因为Chrome不支持对应的音频编码,还要在命令里加入转换音频编码的部分
使用了 ffmpeg.exe -i ."vid.mkv" -map 0 -map -0:s -c copy -c:a aac "vid.mkv"
转换为aac音频编码可以播放声音。
根据AI的解析:FFmpeg在尝试写入MP4文件时遇到了一个问题:它无法为字幕流找到正确的编码标签。MP4容器不支持SUBRIP字幕格式,这可能是导致Convert 功能无效,仅生成一个 0KB 的 .mp4 文件的原因。
只是,这个命令去掉了所有的字幕流着实浪费,想要只排除SUBRIP字幕流而不是所有字幕流又会有点麻烦。辛苦大佬继续优化了。
另,希望DashPlayer可以有更多运行异常提示。
你着急的话先试试这个呢?
我试了下这个 ffmpeg -i "vid.mkv" -map 0 -c copy -c:a aac "MP4/vid.mp4"
,同样会报错:
┏[FL]
┖[~\Downloads\The.Fall.Guy]> C:\Users\sudoo\AppData\Local\DashPlayer\app-4.2.0\resources\lib\ffmpeg.exe -i .\TheFallGuy.mkv -map 0 -c copy -c:a aac .\TheFallGuy.mp4
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
Input #0, matroska,webm, from '.\TheFallGuy.mkv':
Metadata:
encoder : libebml v1.4.2 + libmatroska v1.6.4
creation_time : 2024-05-21T04:26:36.000000Z
Duration: 02:06:23.65, start: 0.000000, bitrate: 25284 kb/s
Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3836x1600 [SAR 1:1 DAR 959:400], 23.98 fps, 23.98 tbr, 1k tbn (default)
Metadata:
BPS : 24514110
DURATION : 02:06:23.617000000
NUMBER_OF_FRAMES: 181824
NUMBER_OF_BYTES : 23238203075
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 768 kb/s (default)
Metadata:
BPS : 768000
DURATION : 02:06:23.648000000
NUMBER_OF_FRAMES: 236989
NUMBER_OF_BYTES : 728030208
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:2(spa): Subtitle: subrip (default)
Metadata:
title : forced
BPS : 1
DURATION : 02:03:07.679000000
NUMBER_OF_FRAMES: 37
NUMBER_OF_BYTES : 1030
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:3(spa): Subtitle: subrip (default)
Metadata:
BPS : 80
DURATION : 02:06:03.063000000
NUMBER_OF_FRAMES: 2088
NUMBER_OF_BYTES : 76385
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:4(fre): Subtitle: subrip (default)
Metadata:
title : forced
BPS : 2
DURATION : 02:05:40.082000000
NUMBER_OF_FRAMES: 59
NUMBER_OF_BYTES : 2099
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:5(fre): Subtitle: subrip (default)
Metadata:
BPS : 62
DURATION : 02:06:02.187000000
NUMBER_OF_FRAMES: 2045
NUMBER_OF_BYTES : 58879
_STATISTICS_WRITING_APP: mkvmerge v61.0.0 ('So') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2024-05-21 04:26:36
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 1, only the last option '-c:a aac' will be used.
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (eac3 (native) -> aac (native))
Stream #0:2 -> #0:2 (copy)
Stream #0:3 -> #0:3 (copy)
Stream #0:4 -> #0:4 (copy)
Stream #0:5 -> #0:5 (copy)
Press [q] to stop, [?] for help
[aac @ 00000140ea7983c0] Using a PCE to encode channel layout "5.1(side)"
[mp4 @ 00000140ea7b0980] Could not find tag for codec subrip in stream #2, codec not currently supported in container
[out#0/mp4 @ 00000140ea796f40] Could not write header (incorrect codec parameters ?): Invalid argument
[aost#0:1/aac @ 00000140ea798080] Error initializing output stream:
[aac @ 00000140ea7983c0] Qavg: nan
Conversion failed!
点击Convert后会生成一个 0KB 的 .mp4 文件,长时间等待无数据写入,观察到dash-player.exe CPU和内存占用无波动。再次点击Concert,转换进度条直接100%。继续点击Convert,进度条仍会直接100%。示例如下图:
DashPlayer软件版本:4.2.0
系统版本:Windows11 24H2 26120.670
示例视频:TheFallGuy.mkv The.Fall.Guy.2024.2160p.ITunes.WEB-DL.H265.HDR.DDP5.1.Atmos-MOMOWEB[1LOU.ME].torrent
补充说明:路径和文件名无中文或特殊字符。有测试其他mkv电影,同样无法转换。