transcode trava perto do final da codificação

2

Estou tentando codificar alguns episódios do Firefly para que minha esposa possa assistir -los em seu netbook (sem drive de DVD!).

Estou usando o dvd :: rip e o transcode parece travar aleatoriamente durante a codificação perto do final do arquivo.

Se eu matar e reiniciar a codificação, às vezes ela passará do ponto em que ela falhou, no entanto, deparei com um capítulo específico em que ela é interrompida de forma consistente.

O comando específico é:
transcode -H 10 -a 0 -x vob -i ../vob/001-C006 -w 1437,50 -b 160,0,2 -s 1.496 --a52_drc_off -J normalize -f 30,4 -M 2 --export_par 118,100 -y xvid,null --psu_mode --nav_seek firefly1-001-C006-nav.log --no_split --progress_meter 1 --progress_rate 25 -o /dev/null -R 1

A última linha impressa é:
encoding frames [0-5900], 59.76 fps, CFT: 0:03:16, (13| 0| 7)

Eu também tentei fazer uma codificação de 1 passo:
transcode -H 10 -a 0 -x vob -i ../vob/001-C002 -w 5 -b 160,0,2 -s 1.496 --a52_drc_off -J normalize -f 30,4 -M 2 --export_par 118,100 -y xvid,null --psu_mode --no_split --progress_meter 1 --progress_rate 1 -o ../avi/001/firefly1-001-C002.avi

às vezes, ele é interrompido após a impressão:% encoding frames [0-10545], 41.21 fps, CFT: 0:05:51, (17| 0| 3)

E às vezes ele será concluído: [transcode] encoded 10546 frames (-2104 dropped, 0 cloned), clip length 351.88 s

Existe alguma depuração / informação adicional que eu possa ativar? Alguém tem alguma sugestão?

Distro: openSuSE 11.2

Kernel uname -a : Linux challenger 2.6.31.8-0.1-desktop #1 SMP PREEMPT 2009-12-15 23:55:40 +0100 i686 i686 i386 GNU/Linux

Versão do transcodificador: transcode-1.1.5-0.pm.8.3.i586

    
por MikeyB 28.01.2010 / 16:59

3 respostas

2

Já experimentou outra ferramenta, como o Handbrake ? Se ele trava no mesmo local, talvez você tenha arranhões no disco que impedem obter um bom rip dos dados de origem.

Outras ferramentas de codificação do Linux para testar seriam ffmpeg e mencoder .

Atualização: Leia as Perguntas frequentes sobre o transcode sobre vários problemas . Em particular, há um problema conhecido que resulta em interrupções:

I still have a problem and it hasn't been discussed before.

If your problem is that transcode "hangs" immediately, or even after some time, you may be experiencing the venerable old thread-version problem.

If running transcode this way: "env LD_ASSUME_KERNEL=2.4.0 transcode ..." fixes the problem, then it's thread version issues, not transcode, that's at fault.

See: http://people.redhat.com/drepper/assumekernel.html

Este conselho parece velho e muito possivelmente ultrapassado, mas não vai doer tentar. Eu não tenho certeza do que "versão antiga venerável" significa; Suponho que esteja se referindo a uma incompatibilidade entre a biblioteca de encadeamentos em seu sistema e a biblioteca de encadeamentos usada para compilar o pacote transcode que você está usando. (Eu também estou supondo que você instalou transcode como um pacote binário, provavelmente através do gerenciador de pacotes do seu sistema, possivelmente baixado de um repositório não-padrão?)

Se for esse o caso , você pode se livrar da incompatibilidade compilando sua própria cópia local do transccode . (Para gerenciadores de pacotes baseados em RPM, isso implica encontrar o SRPM que foi usado para compilar seu pacote binário transcode , instalando quaisquer pacotes necessários para compilar o transcodificar e usando o RPM para construir um novo transcode pacote.)

    
por 28.01.2010 / 17:26
1

Tópico realmente antigo, mas como eu tive o mesmo problema (transcodificação no final de cada capítulo, embora eu não esteja usando o DVD: RIP como o driver para transcodificar), acho que talvez minha solução hacky possa ajudar alguém. Eu descobri que a transcodificação só vai dormir, talvez esperando por um sinal que nunca chega ou chegou cedo demais. Então, o que eu faço é detectar quando isso acontece e matar o transcodificar com o seguinte script:

#!/bin/bash
while ps -C transcode|grep -q transcode; do
  # wait for transcode to actually start encoding
  sleep 15
  # detect when it goes to sleep
  while ps -C transcode --no-headers -o "stat"| grep -q -v "^S"; do
    sleep 1
  done
  echo "transcode process sleeping, waiting ten seconds"
  # sometimes seems to just get the signa/whatever it's waiting for
  sleep 10
  if ps -C transcode --no-headers -o "stat"| grep -q "^S"; then
    echo "still sleeping, killing transcode"
    killall transcode
  fi
  # wait here so that the driver program has a chance of restarting it
  sleep 10
done

Este script é executado simultaneamente com o programa do driver e basicamente substitui você apenas olhando para a lista de processos danosa para ver se o transcode está dormindo novamente. Existem maneiras seguras de escrever, mas isso só funciona para mim e eu sou preguiçoso: -)

    
por 12.07.2013 / 21:55
-1

talvez não esteja relacionado ao problema, mas você usou -o /dev/null , que (se não estou errado) é como "soltar minha saída" ... tentaria -o ~/Desktop/firefly_001.avi ou qualquer extensão que você desejar.

Espero ouvir de você em breve,

Atenciosamente

    
por 28.01.2010 / 17:48