ffmpeg를 통해 .flv 파일을 .mp4 형식으로 변환하면 오류가 발생합니다.

ffmpeg를 통해 .flv 파일을 .mp4 형식으로 변환하면 오류가 발생합니다.

현재 ffmpeg 버전 3.2.2를 사용하고 있는데, 샘플 .flv 파일을 변환하려고 할 때 예상되는 .mp4 형식으로 제대로 변환되지 않는다는 문제가 발생합니다. 내가 겪은 오류는 다음과 같습니다.

ffmpeg -i flv.flv -vcodec copy -acodec copy flv.mp4
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[flv @ 0x7f9af4800000] audio stream discovered after head already parsed
[flv @ 0x7f9af4800000] video stream discovered after head already parsed
Input #0, flv, from 'flv.flv':
  Metadata:
    encoder         : Lavf53.24.2
  Duration: 00:00:26.40, start: 0.000000, bitrate: 1589 kb/s
    Stream #0:0: Audio: aac (LC), 48000 Hz, 5.1, fltp
    Stream #0:1: Video: flv1, yuv420p, 1280x720, 25 fps, 25 tbr, 1k tbn
File 'flv.mp4' already exists. Overwrite ? [y/N] y
[mp4 @ 0x7f9af5829e00] Could not find tag for codec flv1 in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (copy)
    Last message repeated 1 times

파일을 변환하는 데 문제가 있는지 확인하기 위해 일부 온라인 변환기를 사용해 보았지만 모두 mp4로 올바르게 변환했습니다.

이에 대한 도움을 주시면 감사하겠습니다!

답변1

의견에서 언급했듯이 ffmpeg는 flv1MP4의 비디오 스트림을 다중화하지 않습니다.

대신 다시 인코딩하세요.

ffmpeg -i flv.flv -vcodec libx264 -acodec copy flv.mp4

답변2

flv 컨테이너가 flv1 비디오 코덱을 사용하는 경우 비디오 스트림을 다시 인코딩하지 않으면 mp4 컨테이너로 변환할 수 없습니다.

2가지 옵션:

  1. mkv대신 다시 인코딩하지 않고 컨테이너로 변환합니다 .

ffmpeg -i input.flv -c copy -copyts output.mkv

이는 -copyts선택 사항이며 다음을 의미합니다 copy timestamps. 오디오 동기화에 도움이 됩니다.

  1. 새로운 h265(HVEC) 표준으로 비디오 스트림을 다시 인코딩합니다.

ffmpeg -i input.flv -c:v libx265 -crf 23 -c:a copy output_h265.mp4

관련 정보