현재 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는 flv1
MP4의 비디오 스트림을 다중화하지 않습니다.
대신 다시 인코딩하세요.
ffmpeg -i flv.flv -vcodec libx264 -acodec copy flv.mp4
답변2
flv 컨테이너가 flv1 비디오 코덱을 사용하는 경우 비디오 스트림을 다시 인코딩하지 않으면 mp4 컨테이너로 변환할 수 없습니다.
2가지 옵션:
mkv
대신 다시 인코딩하지 않고 컨테이너로 변환합니다 .
ffmpeg -i input.flv -c copy -copyts output.mkv
이는 -copyts
선택 사항이며 다음을 의미합니다 copy timestamps
. 오디오 동기화에 도움이 됩니다.
- 새로운 h265(HVEC) 표준으로 비디오 스트림을 다시 인코딩합니다.
ffmpeg -i input.flv -c:v libx265 -crf 23 -c:a copy output_h265.mp4