как исправить "FFmpeg не может редактировать существующие файлы на месте." - Проблема в Java - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь записать аудиофайл в существующий видеофайл. К сожалению, я получаю сообщение журнала, что я не могу редактировать существующие файлы на месте.

Я нашел некоторые темы о так называемом мультиплексировании между видео и аудио, но ни одна из них не могла мне помочь. Может быть, кто-то из вас может. Дальше это тоже не могло. Я только тот, кто должен использовать его, поэтому я должен это исправить.

Спасибо за вашу помощь

String[] args = { FFMPEG_FILE.getAbsolutePath(), "-y", "-i", videoPath, "-ss", String.valueOf(-offset.toFrames() / 50.0f), "-i", audioPath, "-c", "copy", "-map", "0:v", "-map","1:a", "-bsf:v", "h264_mp4toannexb","-r", String.valueOf(project.getFramerate()), "-shortest",outputPath };

ProcessBuilder pb = new ProcessBuilder(args).inheritIO();
Process p = pb.start();
int exit = p.waitFor();
if (exit != 0) {
     throw new IOException("ffmpeg terminated with a failure");
}

РЕДАКТИРОВАТЬ: Как кто-то прокомментировал, outputPath был таким же, как видеопат. Так что переключил его на другой, чтобы эта проблема больше не появлялась. Но у меня до сих пор нет звука в моих выходных видео. Я даю вам ЛОГ-информацию, так что, возможно, вы сможете прочитать что-нибудь из нее.

INFO: start ffmpeg: [C:\Program Files\ffmpeg\bin\ffmpeg.exe, -y, -i, C:\Users\USERNAME\Desktop\Test_Workflow\1.mkv, -ss, 0.0, -i, C:\Users\USERNAME\Desktop\Test\resources/videos/P1000501.MP4\audio.ogg, -c, copy, -map, 0:v, -map, 1:a, -bsf:v, h264_mp4toannexb, -r, 25, -shortest, C:\Users\USERNAME\Desktop\Test\testoutput.mp4]
ffmpeg version N-92087-gdcbd89e000 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20180813
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
  libavutil      56. 19.101 / 56. 19.101
  libavcodec     58. 31.102 / 58. 31.102
  libavformat    58. 18.104 / 58. 18.104
  libavdevice    58.  4.105 / 58.  4.105
  libavfilter     7. 33.100 /  7. 33.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
Input #0, matroska,webm, from 'C:\Users\USERNAME\Desktop\Test_Workflow\1.mkv':
  Metadata:
    ENCODER         : Lavf56.4.101
  Duration: 00:00:04.60, start: 0.080000, bitrate: 1377 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
Input #1, ogg, from 'C:\Users\USERNAME\Desktop\Test\resources/videos/P1000501.MP4\audio.ogg':
  Duration: 00:04:20.65, start: 0.000000, bitrate: 86 kb/s
    Stream #1:0(und): Audio: vorbis, 48000 Hz, stereo, fltp, 112 kb/s
    Metadata:
      CREATION_TIME   : 2018-11-09T13:20:07.000000Z
      LANGUAGE        : und
      ENCODER         : Lavc58.31.102 libvorbis
      MAJOR_BRAND     : mp42
      MINOR_VERSION   : 1
      COMPATIBLE_BRANDS: mp42avc1
[mp4 @ 000001e67c0a00c0] track 1: codec frame size is not set
Output #0, mp4, to 'C:\Users\USERNAME\Desktop\Test\testoutput.mp4':
  Metadata:
    encoder         : Lavf58.18.104
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
    Stream #0:1(und): Audio: vorbis (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 112 kb/s
    Metadata:
      CREATION_TIME   : 2018-11-09T13:20:07.000000Z
      LANGUAGE        : und
      ENCODER         : Lavc58.31.102 libvorbis
      MAJOR_BRAND     : mp42
      MINOR_VERSION   : 1
      COMPATIBLE_BRANDS: mp42avc1
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  113 fps=0.0 q=-1.0 Lsize=     824kB time=00:00:04.41 bitrate=1530.8kbits/s speed= 634x    
video:772kB audio:43kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 1.092082%

1 Ответ

0 голосов
/ 07 июля 2019

Для первоначальной проблемы, "FFmpeg не может редактировать существующие файлы на месте.", Которая была введена в действие, так как ffmpeg должен прочитать ввод, поэтому он не может заменить ввод одновременно.

В текущем выпуске vorbis не является стандартным аудиокодеком для MP4, поэтому перекодируйте звук.

C:\Program Files\ffmpeg\bin\ffmpeg.exe, -y, -i, C:\Users\USERNAME\Desktop\Test_Workflow\1.mkv, -ss, 0.0, -i, C:\Users\USERNAME\Desktop\Test\resources/videos/P1000501.MP4\audio.ogg, -c:v, copy, -map, 0:v, -map, 1:a, -r, 25, -shortest, C:\Users\USERNAME\Desktop\Test\testoutput.mp4

(Поскольку вы пишете в MP4, -bsf:v, h264_mp4toannexb является противоположностью того, что вы хотите, и здесь не нужно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...