solidSpoon / DashPlayer

为英语学习者量身打造的视频播放器,助你通过观看视频、沉浸真实语境,轻松提升英语水平。#美剧 #播放器 #听力

Home Page:https://dash-player.solidspoon.xyz

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Convert 功能无效,仅生成一个 0KB 的 .mp4 文件

H1DDENADM1N opened this issue · comments

点击Convert后会生成一个 0KB 的 .mp4 文件,长时间等待无数据写入,观察到dash-player.exe CPU和内存占用无波动。再次点击Concert,转换进度条直接100%。继续点击Convert,进度条仍会直接100%。示例如下图:

Convert_Bug

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电影,同样无法转换。

我这两天修复了一些转换失败的情况,下一版您看看会不会成功。

好的,一会我试试你发的视频。

我参考源码注释尝试调用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!