2014-02-05 12 views
3

최근에 Synology Diskstation DS412 +를 구입했으며, mp4 파일로 변환/변환하고 싶은 많은 .mkv 영화를 가지고 있습니다. 직접 내 XBox 360으로 이동합니다. 내 노트북에서 Handbrake를 사용하지만,이 작업을 내 NAS에서 직접 수행 할 수 있습니다.mkv 영화를 mp4로 변환하여 XBox 360으로 스트리밍하는 방법

나는 트랜스 코딩 매우 리눅스에 녹슨 및 새로운 해요,하지만 난 현재이 스크립트는 다음과 같다 :

#!/bin/bash 
for dir in *; do 
    if test -d "$dir"; then 
    #echo $dir 
    for file in "$dir"/*.mkv; do 
     noextension=${file%.*}.mp4 
     ffmpeg -y -i "$file" -vcodec copy -acodec copy "$noextension" 
    done 
    fi 
done 

MKV 내에서 어느, 나는 그것을 이해, 단순히 복사 오디오 및 비디오 구성 요소 컨테이너에 넣고 새로운 mp4 컨테이너에 삽입합니다. 이 파일은 여러 파일에 적용되었지만 작동하지 않는 번호가 있습니다. 다음

실패한 실행에 대한 출력의 예입니다 :

ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers 
    built on Sep 16 2013 00:45:02 with gcc 4.2.1 
    configuration: --prefix=/usr/syno --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-linux-gnu/bin/i686-linux-gnu- --enable-cross-compile --enable-optimizations --disable-yasm --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-indev=alsa --disable-outdev=alsa --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=ac3_float --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-linux-gnu/bin/i686-linux-gnu-ccache-gcc 
    libavutil 50. 40. 1/50. 40. 1 
    libavcodec 52.120. 0/52.120. 0 
    libavformat 52.108. 0/52.108. 0 
    libavdevice 52. 4. 0/52. 4. 0 
    libavfilter 1. 77. 0/1. 77. 0 
    libswscale 0. 14. 0/0. 14. 0 
[matroska,webm @ 0x80726c0] Estimating duration from bitrate, this may be inaccurate 

Seems stream 1 codec frame rate differs from container frame rate: 47.95 (5994/125) -> 23.98 (24000/1001) 

... 그리고 다음 입력 장 시작과 끝 시간과 목록 ...

Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, s16 (default) 
Stream #0.1(eng): Video: h264 (High), yuv420p, 1280x692 [PAR 1:1 DAR 320:173], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) 

... 다음 출력 장 시작 및 종료 시간 목록 ...

Stream #0.0(eng): Video: ![0][0][0]/0x0021, yuv420p, 1280x692 [PAR 1:1 DAR 320:173], q=2-31, 2997 tbn, 23.98 tbc (default) 
Stream #0.1(eng): Audio: libfaac, 48000 Hz, stereo (default) 
Stream mapping: 
    Stream #0.1 -> #0.0 
    Stream #0.0 -> #0.1 
Press [q] to stop encoding 
[mp4 @ 0x808a020] pts < dts in stream 0 
av_interleaved_write_frame(): Invalid data found when processing input 

XBox 지원 웹 사이트에서는 지원되는 파일 형식에 대한 세부 정보 (H.264 표준에 포함 된 mp4 포함) : http://support.xbox.com/ar-SA/xbox-360/system/audio-video-playback

나는 약간의 손실이 있습니다. http://www.ffmpeg.org/ffmpeg.html을 통해 읽었지만 ffmpeg의 오류 메시지는 매우 도움이되지 않습니다. Synology Box에서이 항목을 실행할 때 리소스가 희소하게 나옵니다.

ffmpeg -i "$file" "$noextension" 

ffmpeg -y -i "$file" -vcodec mpeg4 -acodec libfaac "$noextension" 

하지만 그 모두 나에게 다음과 같은 오류 제공 :

Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height 

내가 가정을

나는 같은 내 스크립트의 몇 가지 순열을 시도했다 비트율, 화면 비율과 같은 것들과 함께 입력 및 출력 코덱을 구체적으로 지정해야하지만 내가 어디에서 멀어 지는지.

도움이 될 것입니다.

+3

나는 ffmpeg 버전을 먼저 업데이트하지 않고 계속 진행할 것입니다. 2011 년부터라면 3 살입니다. 최신 버전을 다운로드하거나 컴파일하십시오. http://ffmpeg.org/download.html - 다시 시도해보십시오. 관련이 있다고 생각되는 부분뿐만 아니라 전체 커밋되지 않은 명령 행 출력을 포함하십시오. 감사합니다 – slhck

답변

2

이제 실제로 트랜스 코딩하는 동안 실패한 비디오에 대한 세부 정보가 필요합니다. 하지만 여전히 오류를보고, 여기 당신이 할 수있는 시도입니다. 출력 (비트 전송률, 프레임 속도 등)에 대해 가능한 많은 조합이 있음을 경고 하겠지만 모두 결정해야합니다.

옵션 1

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc op.mp4 

ffmpeg -i ip.mkv op.mp4과 유사하지만 명시 적으로 코덱을 추가했다.당신이 당신의 필요에 따라 변경할 수 있습니다

옵션 2

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc -b:a 92k op.mp4 

추가 된 비트 레이트.

옵션 (30)

의 3 개

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc -b:a 92k -r 30 op.mp4 

추가 매수 또한 2 and 3 옵션의 조합의 시도를 제공 할 수 있습니다.

희망이 helps.Cheers :

PS :. @slhck가 말했듯이, 먼저 ffmpeg를 업데이트 한 다음 시도하십시오. 또한이 모든 것들은 re-encoding 명령입니다. 그래서 만약 당신이 정말로 그들을 위해 가고 있다면; 제가 설명한 것보다 더 나은 오디오 인코더를 사용하십시오.

+0

OP는 귀하의 모든 옵션이하는 비디오를 다시 인코딩하고 싶지 않습니다. 물론 그것은 MP4에 배치 할 수없는 코덱에서 작동 할 수도 있습니다. – slhck

+0

@slhck 예 동영상을 다시 인코딩합니다. 그러나 이것들은 결과물을 얻는 데 가능한 해결책 일뿐입니다. – BlueSword

+0

사실 다시 인코딩 할 때 아무런 문제가 없습니다. 내 선호도는 더 간단 할 것이다 = 더 좋지만, 유일한 해결책이 재 인코딩을 포함한다면 괜찮습니다. ffmpeg를 업데이트하고 나중에 어떻게 진행되는지 살펴 보겠습니다. –