ffmpeg를 이용해서 영상에 있는 소리를 mp3로 추출하는 방법이다.


 

1
ffmpeg -i input.mp4 -codec:a libmp3lame -qscale:a 2 output.mp3
cs



 여기서 mp3로 변환하기 위해서 libmp3lame이라는 라이브러리를 사용하였다.


 qscale는 퀄리티이다. 얼마나 좋음 음색을 표현하는가? 라고 이해하면 될 것 같다.


 여기서 mp3등 연속적인 데이터를 저장시키는 스트림 파일들의 특징은 bitrate라는 것을 가진다.


 bitrate란, bit 데이터 전송률이라고 한다.


 이 데이터가 높으면 높을수록 전송 속도가 빠르고, 효과가 좋다.(하지만, 원본 보다 상향되진 않는다.)

Posted by JunkMam
,

 ffmpeg을 병합이 있다면, 잘라내는 방법이 있어야 될 것이다.


 이것 또한, ffmpeg wiki에 들어간다면, 찾을 수 있을 것이다.



 ffmpeg는 병합과 다른 점이 하나의 문서 파일을 이용하는 것이 아닌, 각각의 파일로 처리하는 것이다.


 파일로 출력하는 방식은 다음과 같다.


 

1
ffmpeg -i 자를영상.mp4 -ss 0 -62 -vcodec copy -acodec copy 잘려진 결과.mp4 -y
cs


 여기서 -i는 입력 파일을 뜻하고, -ss는 Start Second, -t는 해당 파일 범위를 뜻한다.


 -t는 Second 단위를 뜻한다.


 -vcodec 혹은 -c:v로도 표현이 가능한 것으로 video codec 혹은 codec : video를 뜻한다.


 -acodec 혹은 -c:a는 audio codec을 뜻한다. codec : audio를 뜻하기도 한다.


 여기서 각각 copy라는 뜻은 잘려나가는 영상의 코덱과 오디오의 설정을 동일화시킨거라도 이해하면 된다.


 -y는 동일 파일을 가지고 있을 경우에는 항상 덮어씌우는 작업을 뜻한다.


 그래서 위의 예제는 자를영상.mp4에서 0초에서 62초까지 잘라서 잘려진 결과.mp4라는 파일이 나오게 되는 것이다.

Posted by JunkMam
,

 ffmpeg을 병합해야되는 경우가 있다.

 병합을 하게 된다면, 용량이 증가하는 경우가 많다. 그래서 병합을 할려면, 한번에 볼려고 생각하는거 아닌이상, 병합을 하지 않는게 나은 것이다.


 ffmpeg의 사용법이 영어로는 존재한다.[각주:1]


 먼저 ffmpeg의 병합을 하기 위해서는 먼저 텍스트 파일로 만들어야한다.


 list.txt

 

1
2
3
4
# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
cs



 이렇게 제작한다.


 여기서 '#'은 주석처리하는 것이다.


 file '파일명' 으로 설정을 할 수 있다.


 이렇게해서 list.txt을 넣어서 처리하면 된다.


 그런데, 이것이 영상파일이 아닌 정보를 병합하는 것이다. 라는걸 표시해야된다.


 

1
ffmpeg -f concat -i list.txt -c copy output
cs


 이렇게 사용해줘야한다.


 그리고 list.txt을 만드는 방법은 bash shell을 이용해서 넣는 것이다.


 컴퓨터 command을 이용해서 명령어를 이용해서 만들어 낼 수 있다.


 

1
(for %i in (*.wav) do @echo file '%i') > list.txt

cs


 이런식으로 말이다.


 powershell을 이용해서 만드는 것이라면, 다음과 같은 방식으로 표현을 할 수 있다.


 

1
2
3
4
$n=((Get-childItem ./*.mp4).name);
for($i=0; $i -le $n.length; $i++){
    $n[$i]>>list.txt
}
cs


 이렇게하면, 이름순으로 나와서 영상의 이름을 순차적으로 처리해줘야한다.

  1. https://trac.ffmpeg.org/wiki/Concatenate(2016-07-05) [본문으로]
Posted by JunkMam
,

webM은 일반적으로 데이터를 보는게 불가능한 것 같다.

그래서 프로그램을 사용해야되는데, ffprobe라는 걸 이용하면 된다.

ffprobe를 이용해서 데이터를 얻을 수 있다.[각주:1]


예)

ffprobe.exe -show_streams "input file"


이렇게 하면, 다음과 같은 형태를 얻을 수 있게 된다.


ffprobe version N-75185-gf58e011 Copyright (c) 2007-2015 the FFmpeg developers  built with gcc 4.9.3 (GCC)

  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-opencl --enable-zlib

  libavutil      55.  2.100 / 55.  2.100

  libavcodec     57.  1.100 / 57.  1.100

  libavformat    57.  0.100 / 57.  0.100

  libavdevice    57.  0.100 / 57.  0.100

  libavfilter     6.  1.100 /  6.  1.100

  libswscale      4.  0.100 /  4.  0.100

  libswresample   2.  0.100 /  2.  0.100

  libpostproc    54.  0.100 / 54.  0.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\moveCap.mp4':

  Metadata:

    major_brand     : isom

    minor_version   : 512

    compatible_brands: isomiso2avc1mp41

    encoder         : Lavf57.0.100

  Duration: 00:01:00.00, start: 0.040998, bitrate: 3498 kb/s

    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 800x600 [SAR 1:1 DAR 4:3], 3512 kb/s, 23.81 fps, 60 tbr, 48k tbn, 50 tbc (default)

    Metadata:

      handler_name    : VideoHandler

    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 94 kb/s (default)

    Metadata:

      handler_name    : SoundHandler

[STREAM]

index=0

codec_name=h264

codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

profile=High

codec_type=video

codec_time_base=1/50

codec_tag_string=avc1

codec_tag=0x31637661

width=800

height=600

coded_width=800

coded_height=608

has_b_frames=0

sample_aspect_ratio=1:1

display_aspect_ratio=4:3

pix_fmt=yuv420p

level=40

color_range=N/A

color_space=unknown

color_transfer=unknown

color_primaries=unknown

chroma_location=left

timecode=N/A

refs=1

is_avc=1

nal_length_size=4

id=N/A

r_frame_rate=60/1

avg_frame_rate=86375/3628

time_base=1/48000

start_pts=94752

start_time=1.974000

duration_ts=2786304

duration=58.048000

bit_rate=3512905

max_bit_rate=N/A

bits_per_raw_sample=8

nb_frames=1382

nb_read_frames=N/A

nb_read_packets=N/A

DISPOSITION:default=1

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

TAG:language=eng

TAG:handler_name=VideoHandler

[/STREAM]

[STREAM]

index=1

codec_name=aac

codec_long_name=AAC (Advanced Audio Coding)

profile=LC

codec_type=audio

codec_time_base=1/22050

codec_tag_string=mp4a

codec_tag=0x6134706d

sample_fmt=fltp

sample_rate=22050

channels=2

channel_layout=stereo

bits_per_sample=0

id=N/A

r_frame_rate=0/0

avg_frame_rate=0/0

time_base=1/22050

start_pts=904

start_time=0.040998

duration_ts=1323007

duration=60.000317

bit_rate=94706

max_bit_rate=128000

bits_per_raw_sample=N/A

nb_frames=1292

nb_read_frames=N/A

nb_read_packets=N/A

DISPOSITION:default=1

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

TAG:language=eng

TAG:handler_name=SoundHandler

[/STREAM]


'연습' 카테고리의 다른 글

OpenCL 프로그래밍 공부 -시작-  (0) 2015.10.02
CSS3 -3D Flip Animation-  (0) 2015.09.30
ffmpeg 사용 -mp4 to webm convert(mp4을 webm으로 변환)-  (0) 2015.09.29
ffmpeg -이미지 추출-  (0) 2015.09.28
ffmpeg -동영상 자르기-  (0) 2015.09.28
Posted by JunkMam
,

mp4를 webm으로 변환시키는 방법이 있다.


mp4 -> webM 변환 사이트


하지만, ffmpeg을 사용해도 간단하게 변환이 가능하다.


예)[각주:1]

./ffmpeg -i input-file.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis output-file.webm


-c:a : 오디오 인코딩용 라이브러리

-b:v : 버퍼속도(비트 속도)

-crf : bit-rate 설정 인걸로 추정.

-c:v : 오디오 인코딩용 라이브러리


그 외

-buffsize : 평균 bit rate을 설정한다.


libvpx와 libvorbis을 라이브러리로 연결해서 webm으로 변환 시키는 작업을 한다.(vp8형 소스가 나온다.)


vp9형으로 변경할려면, 다음과 같이 하면 된다고 나와있다.


예)[각주:2]

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 1M -c:a libvorbis output.webm


libvpx-vp라이브러리명. 이런 차이가 있다.


음성 제거 방법은 

-an을 붙이면 된다.

Posted by JunkMam
,

ffmpeg -이미지 추출-

연습 2015. 9. 28. 19:31


ffmpeg를 이용하면, 


ffmpeg사이트


./ffmpeg -i 추출할 영상.mp4 -an -r 1 -y -s 가로x세로 추출할 이미지명.png


-an : 오디오 무시

-r : 1초당 몇 프레임 추출할 것인지 설정.

-y : 같은 이름 있을시 덮어 쓰기.

-s : 추출될 이미지 사이즈 설정.


이미지 명에 %d을 이용하면, 정수로 해당 이미지 갯수가 정수로 출력된다.

Posted by JunkMam
,

ffmpeg을 이용해서 mp4등 영상 파일을 자를 수 있다.


ffmpeg사이트


여기서 ffmpeg을 구한 후에 다음과 같이 사용하면 된다.


 .\ffmpeg.exe -i .\자를 영상.mp4 -ss 53 -t 300 -vcodec copy -acodec copy 잘린 영상.mp4


-ss : 초단위로 자를 위치 설정.

-t : 초단위로 자를 량 설정.

-vcodec copy : 비디오 코덱 카피

-acodec copy : 오디오 코덱 카피


이렇게 사용하면 된다.

Posted by JunkMam
,